| ofs | hex dump | ascii | 
|---|
| 0000 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | gptel-0.9.8.5/.................. | 
| 0020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0060 |  00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000755.0000000.0000000.0000 | 
| 0080 |  30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 31 34 34 35 00 20 35 00 00 00  | 0000000.00000000000.011445..5... | 
| 00a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 00c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 00e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0100 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0120 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0200 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 52 45    41 44 4d 45 2e 6f 72 67 00 00 00 00 00 00 00 00  | gptel-0.9.8.5/README.org........ | 
| 0220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0260 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 0280 |  30 32 34 32 33 32 31 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 31 31 37 00 20 30 00 00 00  | 0242321.00000000000.013117..0... | 
| 02a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 02c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 02e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0300 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0320 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0400 |  23 2b 74 69 74 6c 65 3a 20 67 70 74 65 6c 3a 20    41 20 73 69 6d 70 6c 65 20 4c 4c 4d 20 63 6c 69  | #+title:.gptel:.A.simple.LLM.cli | 
| 0420 |  65 6e 74 20 66 6f 72 20 45 6d 61 63 73 0a 0a 5b    5b 68 74 74 70 73 3a 2f 2f 65 6c 70 61 2e 6e 6f  | ent.for.Emacs..[[https://elpa.no | 
| 0440 |  6e 67 6e 75 2e 6f 72 67 2f 6e 6f 6e 67 6e 75 2f    67 70 74 65 6c 2e 68 74 6d 6c 5d 5b 66 69 6c 65  | ngnu.org/nongnu/gptel.html][file | 
| 0460 |  3a 68 74 74 70 73 3a 2f 2f 65 6c 70 61 2e 6e 6f    6e 67 6e 75 2e 6f 72 67 2f 6e 6f 6e 67 6e 75 2f  | :https://elpa.nongnu.org/nongnu/ | 
| 0480 |  67 70 74 65 6c 2e 73 76 67 5d 5d 0a 5b 5b 68 74    74 70 73 3a 2f 2f 65 6c 70 61 2e 6e 6f 6e 67 6e  | gptel.svg]].[[https://elpa.nongn | 
| 04a0 |  75 2e 6f 72 67 2f 6e 6f 6e 67 6e 75 2d 64 65 76    65 6c 2f 67 70 74 65 6c 2e 68 74 6d 6c 5d 5b 66  | u.org/nongnu-devel/gptel.html][f | 
| 04c0 |  69 6c 65 3a 68 74 74 70 73 3a 2f 2f 65 6c 70 61    2e 6e 6f 6e 67 6e 75 2e 6f 72 67 2f 6e 6f 6e 67  | ile:https://elpa.nongnu.org/nong | 
| 04e0 |  6e 75 2d 64 65 76 65 6c 2f 67 70 74 65 6c 2e 73    76 67 5d 5d 0a 5b 5b 68 74 74 70 73 3a 2f 2f 73  | nu-devel/gptel.svg]].[[https://s | 
| 0500 |  74 61 62 6c 65 2e 6d 65 6c 70 61 2e 6f 72 67 2f    23 2f 67 70 74 65 6c 5d 5b 66 69 6c 65 3a 68 74  | table.melpa.org/#/gptel][file:ht | 
| 0520 |  74 70 73 3a 2f 2f 73 74 61 62 6c 65 2e 6d 65 6c    70 61 2e 6f 72 67 2f 70 61 63 6b 61 67 65 73 2f  | tps://stable.melpa.org/packages/ | 
| 0540 |  67 70 74 65 6c 2d 62 61 64 67 65 2e 73 76 67 5d    5d 0a 5b 5b 68 74 74 70 73 3a 2f 2f 6d 65 6c 70  | gptel-badge.svg]].[[https://melp | 
| 0560 |  61 2e 6f 72 67 2f 23 2f 67 70 74 65 6c 5d 5b 66    69 6c 65 3a 68 74 74 70 73 3a 2f 2f 6d 65 6c 70  | a.org/#/gptel][file:https://melp | 
| 0580 |  61 2e 6f 72 67 2f 70 61 63 6b 61 67 65 73 2f 67    70 74 65 6c 2d 62 61 64 67 65 2e 73 76 67 5d 5d  | a.org/packages/gptel-badge.svg]] | 
| 05a0 |  0a 0a 67 70 74 65 6c 20 69 73 20 61 20 73 69 6d    70 6c 65 20 4c 61 72 67 65 20 4c 61 6e 67 75 61  | ..gptel.is.a.simple.Large.Langua | 
| 05c0 |  67 65 20 4d 6f 64 65 6c 20 63 68 61 74 20 63 6c    69 65 6e 74 20 66 6f 72 20 45 6d 61 63 73 2c 20  | ge.Model.chat.client.for.Emacs,. | 
| 05e0 |  77 69 74 68 20 73 75 70 70 6f 72 74 20 66 6f 72    20 6d 75 6c 74 69 70 6c 65 20 6d 6f 64 65 6c 73  | with.support.for.multiple.models | 
| 0600 |  20 61 6e 64 20 62 61 63 6b 65 6e 64 73 2e 20 20    49 74 20 77 6f 72 6b 73 20 69 6e 20 74 68 65 20  | .and.backends...It.works.in.the. | 
| 0620 |  73 70 69 72 69 74 20 6f 66 20 45 6d 61 63 73 2c    20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 61 6e  | spirit.of.Emacs,.available.at.an | 
| 0640 |  79 20 74 69 6d 65 20 61 6e 64 20 75 6e 69 66 6f    72 6d 6c 79 20 69 6e 20 61 6e 79 20 62 75 66 66  | y.time.and.uniformly.in.any.buff | 
| 0660 |  65 72 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 69    76 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  | er...#+html:.<div.align="center" | 
| 0680 |  3e 0a 7c 20 4c 4c 4d 20 42 61 63 6b 65 6e 64 20    20 20 20 20 20 20 20 20 20 7c 20 53 75 70 70 6f  | >.|.LLM.Backend..........|.Suppo | 
| 06a0 |  72 74 73 20 7c 20 52 65 71 75 69 72 65 73 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rts.|.Requires.................. | 
| 06c0 |  20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d  | .|.|----------------------+----- | 
| 06e0 |  2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -----+-------------------------- | 
| 0700 |  2d 2d 7c 0a 7c 20 43 68 61 74 47 50 54 20 20 20    20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93  | --|.|.ChatGPT..............|.... | 
| 0720 |  20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70    73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f 70 65  | ........|.[[https://platform.ope | 
| 0740 |  6e 61 69 2e 63 6f 6d 2f 61 63 63 6f 75 6e 74 2f    61 70 69 2d 6b 65 79 73 5d 5b 41 50 49 20 6b 65  | nai.com/account/api-keys][API.ke | 
| 0760 |  79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 7c 0a 7c 20 41 6e 74 68 72  | y]]....................|.|.Anthr | 
| 0780 |  6f 70 69 63 20 28 43 6c 61 75 64 65 29 20 20 20    7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b  | opic.(Claude)...|............|.[ | 
| 07a0 |  5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 61 6e 74    68 72 6f 70 69 63 2e 63 6f 6d 2f 61 70 69 5d 5b  | [https://www.anthropic.com/api][ | 
| 07c0 |  41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c  | API.key]]....................|.| | 
| 07e0 |  20 47 65 6d 69 6e 69 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20  | .Gemini...............|......... | 
| 0800 |  20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 6d    61 6b 65 72 73 75 69 74 65 2e 67 6f 6f 67 6c 65  | ...|.[[https://makersuite.google | 
| 0820 |  2e 63 6f 6d 2f 61 70 70 2f 61 70 69 6b 65 79 5d    5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20  | .com/app/apikey][API.key]]...... | 
| 0840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a    7c 20 4f 6c 6c 61 6d 61 20 20 20 20 20 20 20 20  | ..............|.|.Ollama........ | 
| 0860 |  20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20    20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f  | .......|............|.[[https:// | 
| 0880 |  6f 6c 6c 61 6d 61 2e 61 69 2f 5d 5b 4f 6c 6c 61    6d 61 20 72 75 6e 6e 69 6e 67 20 6c 6f 63 61 6c  | ollama.ai/][Ollama.running.local | 
| 08a0 |  6c 79 5d 5d 20 20 20 20 20 7c 0a 7c 20 4c 6c 61    6d 61 2e 63 70 70 20 20 20 20 20 20 20 20 20 20  | ly]].....|.|.Llama.cpp.......... | 
| 08c0 |  20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c    20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75  | ..|............|.[[https://githu | 
| 08e0 |  62 2e 63 6f 6d 2f 67 67 6d 6c 2d 6f 72 67 2f 6c    6c 61 6d 61 2e 63 70 70 2f 74 72 65 65 2f 6d 61  | b.com/ggml-org/llama.cpp/tree/ma | 
| 0900 |  73 74 65 72 2f 74 6f 6f 6c 73 2f 73 65 72 76 65    72 23 71 75 69 63 6b 2d 73 74 61 72 74 5d 5b 4c  | ster/tools/server#quick-start][L | 
| 0920 |  6c 61 6d 61 2e 63 70 70 20 72 75 6e 6e 69 6e 67    20 6c 6f 63 61 6c 6c 79 5d 5d 20 20 7c 0a 7c 20  | lama.cpp.running.locally]]..|.|. | 
| 0940 |  4c 6c 61 6d 61 66 69 6c 65 20 20 20 20 20 20 20    20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20  | Llamafile............|.......... | 
| 0960 |  20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69    74 68 75 62 2e 63 6f 6d 2f 4d 6f 7a 69 6c 6c 61  | ..|.[[https://github.com/Mozilla | 
| 0980 |  2d 4f 63 68 6f 2f 6c 6c 61 6d 61 66 69 6c 65 23    71 75 69 63 6b 73 74 61 72 74 5d 5b 4c 6f 63 61  | -Ocho/llamafile#quickstart][Loca | 
| 09a0 |  6c 20 4c 6c 61 6d 61 66 69 6c 65 20 73 65 72 76    65 72 5d 5d 20 20 20 20 20 7c 0a 7c 20 47 50 54  | l.Llamafile.server]].....|.|.GPT | 
| 09c0 |  34 41 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20    20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c  | 4All..............|............| | 
| 09e0 |  20 5b 5b 68 74 74 70 73 3a 2f 2f 67 70 74 34 61    6c 6c 2e 69 6f 2f 69 6e 64 65 78 2e 68 74 6d 6c  | .[[https://gpt4all.io/index.html | 
| 0a00 |  5d 5b 47 50 54 34 41 6c 6c 20 72 75 6e 6e 69 6e    67 20 6c 6f 63 61 6c 6c 79 5d 5d 20 20 20 20 7c  | ][GPT4All.running.locally]]....| | 
| 0a20 |  0a 7c 20 4b 61 67 69 20 46 61 73 74 47 50 54 20    20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20  | .|.Kagi.FastGPT.........|....... | 
| 0a40 |  20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f    2f 6b 61 67 69 2e 63 6f 6d 2f 73 65 74 74 69 6e  | .....|.[[https://kagi.com/settin | 
| 0a60 |  67 73 3f 70 3d 61 70 69 5d 5b 41 50 49 20 6b 65    79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20 20  | gs?p=api][API.key]]............. | 
| 0a80 |  20 20 20 20 20 20 20 7c 0a 7c 20 4b 61 67 69 20    53 75 6d 6d 61 72 69 7a 65 72 20 20 20 20 20 20  | .......|.|.Kagi.Summarizer...... | 
| 0aa0 |  7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b    5b 68 74 74 70 73 3a 2f 2f 6b 61 67 69 2e 63 6f  | |............|.[[https://kagi.co | 
| 0ac0 |  6d 2f 73 65 74 74 69 6e 67 73 3f 70 3d 61 70 69    5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20  | m/settings?p=api][API.key]]..... | 
| 0ae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c    0a 7c 20 41 7a 75 72 65 20 20 20 20 20 20 20 20  | ...............|.|.Azure........ | 
| 0b00 |  20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20    20 20 20 20 20 7c 20 44 65 70 6c 6f 79 6d 65 6e  | ........|............|.Deploymen | 
| 0b20 |  74 20 61 6e 64 20 41 50 49 20 6b 65 79 20 20 20    20 20 7c 0a 7c 20 47 72 6f 71 20 20 20 20 20 20  | t.and.API.key.....|.|.Groq...... | 
| 0b40 |  20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93    20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70  | ...........|............|.[[http | 
| 0b60 |  73 3a 2f 2f 63 6f 6e 73 6f 6c 65 2e 67 72 6f 71    2e 63 6f 6d 2f 6b 65 79 73 5d 5b 41 50 49 20 6b  | s://console.groq.com/keys][API.k | 
| 0b80 |  65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 7c 0a 7c 20 4d 69 73 74  | ey]]....................|.|.Mist | 
| 0ba0 |  72 61 6c 20 4c 65 20 43 68 61 74 20 20 20 20 20    20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20  | ral.Le.Chat......|............|. | 
| 0bc0 |  5b 5b 68 74 74 70 73 3a 2f 2f 63 6f 6e 73 6f 6c    65 2e 6d 69 73 74 72 61 6c 2e 61 69 2f 61 70 69  | [[https://console.mistral.ai/api | 
| 0be0 |  2d 6b 65 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -keys][API.key]]................ | 
| 0c00 |  20 20 20 20 7c 0a 7c 20 50 65 72 70 6c 65 78 69    74 79 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2  | ....|.|.Perplexity...........|.. | 
| 0c20 |  9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74    74 70 73 3a 2f 2f 64 6f 63 73 2e 70 65 72 70 6c  | ..........|.[[https://docs.perpl | 
| 0c40 |  65 78 69 74 79 2e 61 69 2f 64 6f 63 73 2f 67 65    74 74 69 6e 67 2d 73 74 61 72 74 65 64 5d 5b 41  | exity.ai/docs/getting-started][A | 
| 0c60 |  50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20  | PI.key]]....................|.|. | 
| 0c80 |  4f 70 65 6e 52 6f 75 74 65 72 20 20 20 20 20 20    20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20  | OpenRouter...........|.......... | 
| 0ca0 |  20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 6f 70    65 6e 72 6f 75 74 65 72 2e 61 69 2f 6b 65 79 73  | ..|.[[https://openrouter.ai/keys | 
| 0cc0 |  5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c  | ][API.key]]....................| | 
| 0ce0 |  0a 7c 20 74 6f 67 65 74 68 65 72 2e 61 69 20 20    20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20  | .|.together.ai..........|....... | 
| 0d00 |  20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f    2f 61 70 69 2e 74 6f 67 65 74 68 65 72 2e 78 79  | .....|.[[https://api.together.xy | 
| 0d20 |  7a 2f 73 65 74 74 69 6e 67 73 2f 61 70 69 2d 6b    65 79 73 5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20  | z/settings/api-keys][API.key]].. | 
| 0d40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 7c 0a 7c 20 41 6e 79 73 63 61 6c 65 20 20  | ..................|.|.Anyscale.. | 
| 0d60 |  20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c 93    20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74 70  | ...........|............|.[[http | 
| 0d80 |  73 3a 2f 2f 64 6f 63 73 2e 65 6e 64 70 6f 69 6e    74 73 2e 61 6e 79 73 63 61 6c 65 2e 63 6f 6d 2f  | s://docs.endpoints.anyscale.com/ | 
| 0da0 |  5d 5b 41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c  | ][API.key]]....................| | 
| 0dc0 |  0a 7c 20 50 72 69 76 61 74 65 47 50 54 20 20 20    20 20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20  | .|.PrivateGPT...........|....... | 
| 0de0 |  20 20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f    2f 67 69 74 68 75 62 2e 63 6f 6d 2f 7a 79 6c 6f  | .....|.[[https://github.com/zylo | 
| 0e00 |  6e 2d 61 69 2f 70 72 69 76 61 74 65 2d 67 70 74    23 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5d  | n-ai/private-gpt#-documentation] | 
| 0e20 |  5b 50 72 69 76 61 74 65 47 50 54 20 72 75 6e 6e    69 6e 67 20 6c 6f 63 61 6c 6c 79 5d 5d 20 7c 0a  | [PrivateGPT.running.locally]].|. | 
| 0e40 |  7c 20 44 65 65 70 53 65 65 6b 20 20 20 20 20 20    20 20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20  | |.DeepSeek.............|........ | 
| 0e60 |  20 20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f    70 6c 61 74 66 6f 72 6d 2e 64 65 65 70 73 65 65  | ....|.[[https://platform.deepsee | 
| 0e80 |  6b 2e 63 6f 6d 2f 61 70 69 5f 6b 65 79 73 5d 5b    41 50 49 20 6b 65 79 5d 5d 20 20 20 20 20 20 20  | k.com/api_keys][API.key]]....... | 
| 0ea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c    20 53 61 6d 62 61 6e 6f 76 61 20 28 44 65 65 70  | .............|.|.Sambanova.(Deep | 
| 0ec0 |  73 65 65 6b 29 20 7c 20 e2 9c 93 20 20 20 20 20    20 20 20 7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 63  | seek).|............|.[[https://c | 
| 0ee0 |  6c 6f 75 64 2e 73 61 6d 62 61 6e 6f 76 61 2e 61    69 2f 61 70 69 73 5d 5b 41 50 49 20 6b 65 79 5d  | loud.sambanova.ai/apis][API.key] | 
| 0f00 |  5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 7c 0a 7c 20 43 65 72 65 62 72 61  | ]....................|.|.Cerebra | 
| 0f20 |  73 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20    e2 9c 93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68  | s.............|............|.[[h | 
| 0f40 |  74 74 70 73 3a 2f 2f 63 6c 6f 75 64 2e 63 65 72    65 62 72 61 73 2e 61 69 2f 5d 5b 41 50 49 20 6b  | ttps://cloud.cerebras.ai/][API.k | 
| 0f60 |  65 79 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 7c 0a 7c 20 47 69 74 68  | ey]]....................|.|.Gith | 
| 0f80 |  75 62 20 4d 6f 64 65 6c 73 20 20 20 20 20 20 20    20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20 7c 20  | ub.Models........|............|. | 
| 0fa0 |  5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62    2e 63 6f 6d 2f 73 65 74 74 69 6e 67 73 2f 74 6f  | [[https://github.com/settings/to | 
| 0fc0 |  6b 65 6e 73 5d 5b 54 6f 6b 65 6e 5d 5d 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | kens][Token]]................... | 
| 0fe0 |  20 20 20 7c 0a 7c 20 4e 6f 76 69 74 61 20 41 49    20 20 20 20 20 20 20 20 20 20 20 20 7c 20 e2 9c  | ...|.|.Novita.AI............|... | 
| 1000 |  93 20 20 20 20 20 20 20 20 7c 20 5b 5b 68 74 74    70 73 3a 2f 2f 6e 6f 76 69 74 61 2e 61 69 2f 6d  | .........|.[[https://novita.ai/m | 
| 1020 |  6f 64 65 6c 2d 61 70 69 2f 70 72 6f 64 75 63 74    2f 6c 6c 6d 2d 61 70 69 3f 75 74 6d 5f 73 6f 75  | odel-api/product/llm-api?utm_sou | 
| 1040 |  72 63 65 3d 67 69 74 68 75 62 5f 67 70 74 65 6c    26 75 74 6d 5f 6d 65 64 69 75 6d 3d 67 69 74 68  | rce=github_gptel&utm_medium=gith | 
| 1060 |  75 62 5f 72 65 61 64 6d 65 26 75 74 6d 5f 63 61    6d 70 61 69 67 6e 3d 6c 69 6e 6b 5d 5b 54 6f 6b  | ub_readme&utm_campaign=link][Tok | 
| 1080 |  65 6e 5d 5d 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 78 41  | en]]......................|.|.xA | 
| 10a0 |  49 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20  | I..................|............ | 
| 10c0 |  7c 20 5b 5b 68 74 74 70 73 3a 2f 2f 63 6f 6e 73    6f 6c 65 2e 78 2e 61 69 3f 75 74 6d 5f 73 6f 75  | |.[[https://console.x.ai?utm_sou | 
| 10e0 |  72 63 65 3d 67 69 74 68 75 62 5f 67 70 74 65 6c    26 75 74 6d 5f 6d 65 64 69 75 6d 3d 67 69 74 68  | rce=github_gptel&utm_medium=gith | 
| 1100 |  75 62 5f 72 65 61 64 6d 65 26 75 74 6d 5f 63 61    6d 70 61 69 67 6e 3d 6c 69 6e 6b 5d 5b 41 50 49  | ub_readme&utm_campaign=link][API | 
| 1120 |  20 6b 65 79 5d 5d 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 47 69  | .key]]....................|.|.Gi | 
| 1140 |  74 68 75 62 20 43 6f 70 69 6c 6f 74 43 68 61 74    20 20 20 7c 20 e2 9c 93 20 20 20 20 20 20 20 20  | thub.CopilotChat...|............ | 
| 1160 |  7c 20 47 69 74 68 75 62 20 61 63 63 6f 75 6e 74    20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c  | |.Github.account.............|.| | 
| 1180 |  20 42 65 64 72 6f 63 6b 20 20 20 20 20 20 20 20    20 20 20 20 20 20 7c 20 e2 9c 93 20 20 20 20 20  | .Bedrock..............|......... | 
| 11a0 |  20 20 20 7c 20 41 57 53 20 63 72 65 64 65 6e 74    69 61 6c 73 20 20 20 20 20 20 20 20 20 20 20 20  | ...|.AWS.credentials............ | 
| 11c0 |  7c 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 69 76 3e    0a 0a 2a 47 65 6e 65 72 61 6c 20 75 73 61 67 65  | |.#+html:.</div>..*General.usage | 
| 11e0 |  2a 3a 20 28 5b 5b 68 74 74 70 73 3a 2f 2f 77 77    77 2e 79 6f 75 74 75 62 65 2e 63 6f 6d 2f 77 61  | *:.([[https://www.youtube.com/wa | 
| 1200 |  74 63 68 3f 76 3d 62 73 52 6e 68 5f 62 72 67 67    4d 5d 5b 59 6f 75 54 75 62 65 20 44 65 6d 6f 5d  | tch?v=bsRnh_brggM][YouTube.Demo] | 
| 1220 |  5d 29 0a 0a 68 74 74 70 73 3a 2f 2f 75 73 65 72    2d 69 6d 61 67 65 73 2e 67 69 74 68 75 62 75 73  | ])..https://user-images.githubus | 
| 1240 |  65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d 2f 38 36    30 37 35 33 32 2f 32 33 30 35 31 36 38 31 32 2d  | ercontent.com/8607532/230516812- | 
| 1260 |  38 36 35 31 30 61 30 39 2d 61 32 66 62 2d 34 63    62 64 2d 62 35 33 66 2d 63 63 32 35 32 32 64 30  | 86510a09-a2fb-4cbd-b53f-cc2522d0 | 
| 1280 |  35 61 31 33 2e 6d 70 34 0a 0a 68 74 74 70 73 3a    2f 2f 75 73 65 72 2d 69 6d 61 67 65 73 2e 67 69  | 5a13.mp4..https://user-images.gi | 
| 12a0 |  74 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e    63 6f 6d 2f 38 36 30 37 35 33 32 2f 32 33 30 35  | thubusercontent.com/8607532/2305 | 
| 12c0 |  31 36 38 31 36 2d 61 65 34 61 36 31 33 61 2d 34    64 30 31 2d 34 30 37 33 2d 61 64 33 66 2d 62 36  | 16816-ae4a613a-4d01-4073-ad3f-b6 | 
| 12e0 |  36 66 61 37 33 63 36 65 34 35 2e 6d 70 34 0a 0a    2a 49 6e 2d 70 6c 61 63 65 20 75 73 61 67 65 2a  | 6fa73c6e45.mp4..*In-place.usage* | 
| 1300 |  0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c 69    67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74  | ..#+html:.<p.align="center">.htt | 
| 1320 |  70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f    75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73  | ps://github.com/user-attachments | 
| 1340 |  2f 61 73 73 65 74 73 2f 63 65 63 31 31 61 65 63    2d 35 32 66 36 2d 34 31 32 65 2d 39 65 37 61 2d  | /assets/cec11aec-52f6-412e-9e7a- | 
| 1360 |  39 33 35 38 65 38 62 39 62 31 62 66 0a 23 2b 68    74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 2a 54 6f 6f 6c  | 9358e8b9b1bf.#+html:.</p>..*Tool | 
| 1380 |  20 75 73 65 2a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c    70 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  | .use*..#+html:.<p.align="center" | 
| 13a0 |  3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62    2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68  | >.https://github.com/user-attach | 
| 13c0 |  6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 35 66 39    39 33 36 35 39 2d 34 63 66 64 2d 34 39 66 61 2d  | ments/assets/5f993659-4cfd-49fa- | 
| 13e0 |  62 35 63 64 2d 31 39 63 35 35 37 36 36 62 39 62    32 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a  | b5cd-19c55766b9b2.#+html:.</p>.. | 
| 1400 |  23 2b 68 74 6d 6c 3a 20 3c 70 20 61 6c 69 67 6e    3d 22 63 65 6e 74 65 72 22 3e 0a 68 74 74 70 73  | #+html:.<p.align="center">.https | 
| 1420 |  3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73    65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61  | ://github.com/user-attachments/a | 
| 1440 |  73 73 65 74 73 2f 38 66 35 37 63 32 30 62 2d 65    31 62 30 2d 34 64 38 36 2d 62 39 37 32 2d 66 34  | ssets/8f57c20b-e1b0-4d86-b972-f4 | 
| 1460 |  36 66 62 39 30 61 65 31 65 37 0a 23 2b 68 74 6d    6c 3a 20 3c 2f 70 3e 0a 0a 53 65 65 20 61 6c 73  | 6fb90ae1e7.#+html:.</p>..See.als | 
| 1480 |  6f 20 5b 5b 68 74 74 70 73 3a 2f 2f 79 6f 75 74    75 2e 62 65 2f 67 31 56 4d 47 68 43 35 67 52 55  | o.[[https://youtu.be/g1VMGhC5gRU | 
| 14a0 |  5d 5b 74 68 69 73 20 79 6f 75 74 75 62 65 20 64    65 6d 6f 20 28 32 20 6d 69 6e 75 74 65 73 29 5d  | ][this.youtube.demo.(2.minutes)] | 
| 14c0 |  5d 20 62 79 20 41 72 6d 69 6e 20 44 61 72 76 69    73 68 2e 0a 0a 23 20 2a 4d 65 64 69 61 20 73 75  | ].by.Armin.Darvish...#.*Media.su | 
| 14e0 |  70 70 6f 72 74 2a 0a 0a 23 20 23 2b 68 74 6d 6c    3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74  | pport*..#.#+html:.<p.align="cent | 
| 1500 |  65 72 22 3e 0a 23 20 68 74 74 70 73 3a 2f 2f 67    69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61  | er">.#.https://github.com/user-a | 
| 1520 |  74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74    73 2f 31 66 64 39 34 37 65 31 2d 32 32 36 62 2d  | ttachments/assets/1fd947e1-226b- | 
| 1540 |  34 62 65 32 2d 62 63 36 38 2d 37 62 32 32 62 32    65 33 32 31 35 66 0a 23 20 23 2b 68 74 6d 6c 3a  | 4be2-bc68-7b22b2e3215f.#.#+html: | 
| 1560 |  20 3c 2f 70 3e 0a 0a 23 20 2a 4d 75 6c 74 69 2d    4c 4c 4d 20 73 75 70 70 6f 72 74 20 64 65 6d 6f  | .</p>..#.*Multi-LLM.support.demo | 
| 1580 |  2a 3a 0a 0a 23 20 68 74 74 70 73 3a 2f 2f 67 69    74 68 75 62 2d 70 72 6f 64 75 63 74 69 6f 6e 2d  | *:..#.https://github-production- | 
| 15a0 |  75 73 65 72 2d 61 73 73 65 74 2d 36 32 31 30 64    66 2e 73 33 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63  | user-asset-6210df.s3.amazonaws.c | 
| 15c0 |  6f 6d 2f 38 36 30 37 35 33 32 2f 32 37 38 38 35    34 30 32 34 2d 61 65 31 33 33 36 63 34 2d 35 62  | om/8607532/278854024-ae1336c4-5b | 
| 15e0 |  38 37 2d 34 31 66 32 2d 38 33 65 39 2d 65 34 31    35 33 34 39 64 36 61 34 33 2e 6d 70 34 0a 0a 2d  | 87-41f2-83e9-e415349d6a43.mp4..- | 
| 1600 |  2d 2d 2d 2d 2d 0a 0a 2d 20 67 70 74 65 6c 20 69    73 20 61 73 79 6e 63 20 61 6e 64 20 66 61 73 74  | -----..-.gptel.is.async.and.fast | 
| 1620 |  2c 20 73 74 72 65 61 6d 73 20 72 65 73 70 6f 6e    73 65 73 2e 0a 2d 20 49 6e 74 65 72 61 63 74 20  | ,.streams.responses..-.Interact. | 
| 1640 |  77 69 74 68 20 4c 4c 4d 73 20 66 72 6f 6d 20 61    6e 79 77 68 65 72 65 20 69 6e 20 45 6d 61 63 73  | with.LLMs.from.anywhere.in.Emacs | 
| 1660 |  20 28 61 6e 79 20 62 75 66 66 65 72 2c 20 73 68    65 6c 6c 2c 20 6d 69 6e 69 62 75 66 66 65 72 2c  | .(any.buffer,.shell,.minibuffer, | 
| 1680 |  20 77 68 65 72 65 76 65 72 29 2e 0a 2d 20 4c 4c    4d 20 72 65 73 70 6f 6e 73 65 73 20 61 72 65 20  | .wherever)..-.LLM.responses.are. | 
| 16a0 |  69 6e 20 4d 61 72 6b 64 6f 77 6e 20 6f 72 20 4f    72 67 20 6d 61 72 6b 75 70 2e 0a 2d 20 53 75 70  | in.Markdown.or.Org.markup..-.Sup | 
| 16c0 |  70 6f 72 74 73 20 6d 75 6c 74 69 70 6c 65 20 69    6e 64 65 70 65 6e 64 65 6e 74 20 63 6f 6e 76 65  | ports.multiple.independent.conve | 
| 16e0 |  72 73 61 74 69 6f 6e 73 20 61 6e 64 20 6f 6e 65    2d 6f 66 66 20 61 64 20 68 6f 63 20 69 6e 74 65  | rsations.and.one-off.ad.hoc.inte | 
| 1700 |  72 61 63 74 69 6f 6e 73 2e 0a 2d 20 53 75 70 70    6f 72 74 73 20 74 6f 6f 6c 2d 75 73 65 20 74 6f  | ractions..-.Supports.tool-use.to | 
| 1720 |  20 65 71 75 69 70 20 4c 4c 4d 73 20 77 69 74 68    20 61 67 65 6e 74 69 63 20 63 61 70 61 62 69 6c  | .equip.LLMs.with.agentic.capabil | 
| 1740 |  69 74 69 65 73 2e 0a 2d 20 53 75 70 70 6f 72 74    73 20 4d 6f 64 65 6c 20 43 6f 6e 74 65 78 74 20  | ities..-.Supports.Model.Context. | 
| 1760 |  50 72 6f 74 6f 63 6f 6c 20 28 4d 43 50 29 20 69    6e 74 65 67 72 61 74 69 6f 6e 20 75 73 69 6e 67  | Protocol.(MCP).integration.using | 
| 1780 |  20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75    62 2e 63 6f 6d 2f 6c 69 7a 71 77 65 72 73 63 6f  | .[[https://github.com/lizqwersco | 
| 17a0 |  74 74 2f 6d 63 70 2e 65 6c 5d 5b 6d 63 70 2e 65    6c 5d 5d 2e 0a 2d 20 53 75 70 70 6f 72 74 73 20  | tt/mcp.el][mcp.el]]..-.Supports. | 
| 17c0 |  6d 75 6c 74 69 2d 6d 6f 64 61 6c 20 69 6e 70 75    74 20 28 69 6e 63 6c 75 64 65 20 69 6d 61 67 65  | multi-modal.input.(include.image | 
| 17e0 |  73 2c 20 64 6f 63 75 6d 65 6e 74 73 29 2e 0a 2d    20 53 75 70 70 6f 72 74 73 20 22 72 65 61 73 6f  | s,.documents)..-.Supports."reaso | 
| 1800 |  6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 20 69 6e    20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a  | ning".content.in.LLM.responses.. | 
| 1820 |  2d 20 53 61 76 65 20 63 68 61 74 73 20 61 73 20    72 65 67 75 6c 61 72 20 4d 61 72 6b 64 6f 77 6e  | -.Save.chats.as.regular.Markdown | 
| 1840 |  2f 4f 72 67 2f 54 65 78 74 20 66 69 6c 65 73 20    61 6e 64 20 72 65 73 75 6d 65 20 74 68 65 6d 20  | /Org/Text.files.and.resume.them. | 
| 1860 |  6c 61 74 65 72 2e 0a 2d 20 45 64 69 74 20 79 6f    75 72 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d  | later..-.Edit.your.previous.prom | 
| 1880 |  70 74 73 20 6f 72 20 4c 4c 4d 20 72 65 73 70 6f    6e 73 65 73 20 77 68 65 6e 20 63 6f 6e 74 69 6e  | pts.or.LLM.responses.when.contin | 
| 18a0 |  75 69 6e 67 20 61 20 63 6f 6e 76 65 72 73 61 74    69 6f 6e 2e 20 54 68 65 73 65 20 77 69 6c 6c 20  | uing.a.conversation..These.will. | 
| 18c0 |  62 65 20 66 65 64 20 62 61 63 6b 20 74 6f 20 74    68 65 20 6d 6f 64 65 6c 2e 0a 2d 20 53 75 70 70  | be.fed.back.to.the.model..-.Supp | 
| 18e0 |  6f 72 74 73 20 69 6e 74 72 6f 73 70 65 63 74 69    6f 6e 2c 20 73 6f 20 79 6f 75 20 63 61 6e 20 73  | orts.introspection,.so.you.can.s | 
| 1900 |  65 65 20 2f 65 78 61 63 74 6c 79 2f 20 77 68 61    74 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 2e 20  | ee./exactly/.what.will.be.sent.. | 
| 1920 |  20 49 6e 73 70 65 63 74 20 61 6e 64 20 6d 6f 64    69 66 79 20 71 75 65 72 69 65 73 20 62 65 66 6f  | .Inspect.and.modify.queries.befo | 
| 1940 |  72 65 20 73 65 6e 64 69 6e 67 20 74 68 65 6d 2e    0a 2d 20 50 61 75 73 65 20 6d 75 6c 74 69 2d 73  | re.sending.them..-.Pause.multi-s | 
| 1960 |  74 61 67 65 20 72 65 71 75 65 73 74 73 20 61 74    20 61 6e 20 69 6e 74 65 72 6d 65 64 69 61 74 65  | tage.requests.at.an.intermediate | 
| 1980 |  20 73 74 61 67 65 20 61 6e 64 20 72 65 73 75 6d    65 20 74 68 65 6d 20 6c 61 74 65 72 2e 0a 2d 20  | .stage.and.resume.them.later..-. | 
| 19a0 |  44 6f 6e 27 74 20 6c 69 6b 65 20 67 70 74 65 6c    27 73 20 77 6f 72 6b 66 6c 6f 77 3f 20 55 73 65  | Don't.like.gptel's.workflow?.Use | 
| 19c0 |  20 69 74 20 74 6f 20 63 72 65 61 74 65 20 79 6f    75 72 20 6f 77 6e 20 66 6f 72 20 61 6e 79 20 73  | .it.to.create.your.own.for.any.s | 
| 19e0 |  75 70 70 6f 72 74 65 64 20 6d 6f 64 65 6c 2f 62    61 63 6b 65 6e 64 20 77 69 74 68 20 61 20 5b 5b  | upported.model/backend.with.a.[[ | 
| 1a00 |  68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63    6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65  | https://github.com/karthink/gpte | 
| 1a20 |  6c 2f 77 69 6b 69 2f 44 65 66 69 6e 69 6e 67 2d    63 75 73 74 6f 6d 2d 67 70 74 65 6c 2d 63 6f 6d  | l/wiki/Defining-custom-gptel-com | 
| 1a40 |  6d 61 6e 64 73 5d 5b 73 69 6d 70 6c 65 20 41 50    49 5d 5d 2e 0a 0a 67 70 74 65 6c 20 75 73 65 73  | mands][simple.API]]...gptel.uses | 
| 1a60 |  20 43 75 72 6c 20 69 66 20 61 76 61 69 6c 61 62    6c 65 2c 20 62 75 74 20 66 61 6c 6c 73 20 62 61  | .Curl.if.available,.but.falls.ba | 
| 1a80 |  63 6b 20 74 6f 20 74 68 65 20 62 75 69 6c 74 2d    69 6e 20 75 72 6c 2d 72 65 74 72 69 65 76 65 20  | ck.to.the.built-in.url-retrieve. | 
| 1aa0 |  74 6f 20 77 6f 72 6b 20 77 69 74 68 6f 75 74 20    65 78 74 65 72 6e 61 6c 20 64 65 70 65 6e 64 65  | to.work.without.external.depende | 
| 1ac0 |  6e 63 69 65 73 2e 0a 0a 2a 2a 20 43 6f 6e 74 65    6e 74 73 20 3a 74 6f 63 3a 0a 20 20 2d 20 5b 5b  | ncies...**.Contents.:toc:...-.[[ | 
| 1ae0 |  23 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 5d 5b 49    6e 73 74 61 6c 6c 61 74 69 6f 6e 5d 5d 0a 20 20  | #installation][Installation]]... | 
| 1b00 |  20 20 20 20 2d 20 5b 5b 23 73 74 72 61 69 67 68    74 5d 5b 53 74 72 61 69 67 68 74 5d 5d 0a 20 20  | ....-.[[#straight][Straight]]... | 
| 1b20 |  20 20 20 20 2d 20 5b 5b 23 6d 61 6e 75 61 6c 5d    5b 4d 61 6e 75 61 6c 5d 5d 0a 20 20 20 20 20 20  | ....-.[[#manual][Manual]]....... | 
| 1b40 |  2d 20 5b 5b 23 64 6f 6f 6d 2d 65 6d 61 63 73 5d    5b 44 6f 6f 6d 20 45 6d 61 63 73 5d 5d 0a 20 20  | -.[[#doom-emacs][Doom.Emacs]]... | 
| 1b60 |  20 20 20 20 2d 20 5b 5b 23 73 70 61 63 65 6d 61    63 73 5d 5b 53 70 61 63 65 6d 61 63 73 5d 5d 0a  | ....-.[[#spacemacs][Spacemacs]]. | 
| 1b80 |  20 20 2d 20 5b 5b 23 73 65 74 75 70 5d 5b 53 65    74 75 70 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 63  | ..-.[[#setup][Setup]].....-.[[#c | 
| 1ba0 |  68 61 74 67 70 74 5d 5b 43 68 61 74 47 50 54 5d    5d 0a 20 20 20 20 2d 20 5b 5b 23 6f 74 68 65 72  | hatgpt][ChatGPT]].....-.[[#other | 
| 1bc0 |  2d 6c 6c 6d 2d 62 61 63 6b 65 6e 64 73 5d 5b 4f    74 68 65 72 20 4c 4c 4d 20 62 61 63 6b 65 6e 64  | -llm-backends][Other.LLM.backend | 
| 1be0 |  73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 61    7a 75 72 65 5d 5b 41 7a 75 72 65 5d 5d 0a 20 20  | s]].......-.[[#azure][Azure]]... | 
| 1c00 |  20 20 20 20 2d 20 5b 5b 23 67 70 74 34 61 6c 6c    5d 5b 47 50 54 34 41 6c 6c 5d 5d 0a 20 20 20 20  | ....-.[[#gpt4all][GPT4All]]..... | 
| 1c20 |  20 20 2d 20 5b 5b 23 6f 6c 6c 61 6d 61 5d 5b 4f    6c 6c 61 6d 61 5d 5d 0a 20 20 20 20 20 20 2d 20  | ..-.[[#ollama][Ollama]].......-. | 
| 1c40 |  5b 5b 23 67 65 6d 69 6e 69 5d 5b 47 65 6d 69 6e    69 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6c  | [[#gemini][Gemini]].......-.[[#l | 
| 1c60 |  6c 61 6d 61 63 70 70 2d 6f 72 2d 6c 6c 61 6d 61    66 69 6c 65 5d 5b 4c 6c 61 6d 61 2e 63 70 70 20  | lamacpp-or-llamafile][Llama.cpp. | 
| 1c80 |  6f 72 20 4c 6c 61 6d 61 66 69 6c 65 5d 5d 0a 20    20 20 20 20 20 2d 20 5b 5b 23 6b 61 67 69 2d 66  | or.Llamafile]].......-.[[#kagi-f | 
| 1ca0 |  61 73 74 67 70 74 2d 2d 73 75 6d 6d 61 72 69 7a    65 72 5d 5b 4b 61 67 69 20 28 46 61 73 74 47 50  | astgpt--summarizer][Kagi.(FastGP | 
| 1cc0 |  54 20 26 20 53 75 6d 6d 61 72 69 7a 65 72 29 5d    5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 74 6f 67  | T.&.Summarizer)]].......-.[[#tog | 
| 1ce0 |  65 74 68 65 72 61 69 5d 5b 74 6f 67 65 74 68 65    72 2e 61 69 5d 5d 0a 20 20 20 20 20 20 2d 20 5b  | etherai][together.ai]].......-.[ | 
| 1d00 |  5b 23 61 6e 79 73 63 61 6c 65 5d 5b 41 6e 79 73    63 61 6c 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b  | [#anyscale][Anyscale]].......-.[ | 
| 1d20 |  5b 23 70 65 72 70 6c 65 78 69 74 79 5d 5b 50 65    72 70 6c 65 78 69 74 79 5d 5d 0a 20 20 20 20 20  | [#perplexity][Perplexity]]...... | 
| 1d40 |  20 2d 20 5b 5b 23 61 6e 74 68 72 6f 70 69 63 2d    63 6c 61 75 64 65 5d 5b 41 6e 74 68 72 6f 70 69  | .-.[[#anthropic-claude][Anthropi | 
| 1d60 |  63 20 28 43 6c 61 75 64 65 29 5d 5d 0a 20 20 20    20 20 20 2d 20 5b 5b 23 67 72 6f 71 5d 5b 47 72  | c.(Claude)]].......-.[[#groq][Gr | 
| 1d80 |  6f 71 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23    6d 69 73 74 72 61 6c 2d 6c 65 2d 63 68 61 74 5d  | oq]].......-.[[#mistral-le-chat] | 
| 1da0 |  5b 4d 69 73 74 72 61 6c 20 4c 65 20 43 68 61 74    5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 6f 70  | [Mistral.Le.Chat]].......-.[[#op | 
| 1dc0 |  65 6e 72 6f 75 74 65 72 5d 5b 4f 70 65 6e 52 6f    75 74 65 72 5d 5d 0a 20 20 20 20 20 20 2d 20 5b  | enrouter][OpenRouter]].......-.[ | 
| 1de0 |  5b 23 70 72 69 76 61 74 65 67 70 74 5d 5b 50 72    69 76 61 74 65 47 50 54 5d 5d 0a 20 20 20 20 20  | [#privategpt][PrivateGPT]]...... | 
| 1e00 |  20 2d 20 5b 5b 23 64 65 65 70 73 65 65 6b 5d 5b    44 65 65 70 53 65 65 6b 5d 5d 0a 20 20 20 20 20  | .-.[[#deepseek][DeepSeek]]...... | 
| 1e20 |  20 2d 20 5b 5b 23 73 61 6d 62 61 6e 6f 76 61 2d    64 65 65 70 73 65 65 6b 5d 5b 53 61 6d 62 61 6e  | .-.[[#sambanova-deepseek][Samban | 
| 1e40 |  6f 76 61 20 28 44 65 65 70 73 65 65 6b 29 5d 5d    0a 20 20 20 20 20 20 2d 20 5b 5b 23 63 65 72 65  | ova.(Deepseek)]].......-.[[#cere | 
| 1e60 |  62 72 61 73 5d 5b 43 65 72 65 62 72 61 73 5d 5d    0a 20 20 20 20 20 20 2d 20 5b 5b 23 67 69 74 68  | bras][Cerebras]].......-.[[#gith | 
| 1e80 |  75 62 2d 6d 6f 64 65 6c 73 5d 5b 47 69 74 68 75    62 20 4d 6f 64 65 6c 73 5d 5d 0a 20 20 20 20 20  | ub-models][Github.Models]]...... | 
| 1ea0 |  20 2d 20 5b 5b 23 6e 6f 76 69 74 61 2d 61 69 5d    5b 4e 6f 76 69 74 61 20 41 49 5d 5d 0a 20 20 20  | .-.[[#novita-ai][Novita.AI]].... | 
| 1ec0 |  20 20 20 2d 20 5b 5b 23 78 61 69 5d 5b 78 41 49    5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 67 69  | ...-.[[#xai][xAI]].......-.[[#gi | 
| 1ee0 |  74 68 75 62 2d 63 6f 70 69 6c 6f 74 63 68 61 74    5d 5b 47 69 74 68 75 62 20 43 6f 70 69 6c 6f 74  | thub-copilotchat][Github.Copilot | 
| 1f00 |  43 68 61 74 5d 5d 0a 20 20 20 20 20 20 2d 20 5b    5b 23 61 77 73 2d 62 65 64 72 6f 63 6b 5d 5b 41  | Chat]].......-.[[#aws-bedrock][A | 
| 1f20 |  57 53 20 42 65 64 72 6f 63 6b 5d 5d 0a 20 20 2d    20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65  | WS.Bedrock]]...-.[[#usage][Usage | 
| 1f40 |  5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 69 6e 2d 61    6e 79 2d 62 75 66 66 65 72 5d 5b 49 6e 20 61 6e  | ]].....-.[[#in-any-buffer][In.an | 
| 1f60 |  79 20 62 75 66 66 65 72 3a 5d 5d 0a 20 20 20 20    2d 20 5b 5b 23 69 6e 2d 61 2d 64 65 64 69 63 61  | y.buffer:]].....-.[[#in-a-dedica | 
| 1f80 |  74 65 64 2d 63 68 61 74 2d 62 75 66 66 65 72 5d    5b 49 6e 20 61 20 64 65 64 69 63 61 74 65 64 20  | ted-chat-buffer][In.a.dedicated. | 
| 1fa0 |  63 68 61 74 20 62 75 66 66 65 72 3a 5d 5d 0a 20    20 20 20 20 20 2d 20 5b 5b 23 69 6e 63 6c 75 64  | chat.buffer:]].......-.[[#includ | 
| 1fc0 |  69 6e 67 2d 6d 65 64 69 61 2d 69 6d 61 67 65 73    2d 64 6f 63 75 6d 65 6e 74 73 2d 6f 72 2d 70 6c  | ing-media-images-documents-or-pl | 
| 1fe0 |  61 69 6e 2d 74 65 78 74 2d 66 69 6c 65 73 2d 77    69 74 68 2d 72 65 71 75 65 73 74 73 5d 5b 49 6e  | ain-text-files-with-requests][In | 
| 2000 |  63 6c 75 64 69 6e 67 20 6d 65 64 69 61 20 28 69    6d 61 67 65 73 2c 20 64 6f 63 75 6d 65 6e 74 73  | cluding.media.(images,.documents | 
| 2020 |  20 6f 72 20 70 6c 61 69 6e 2d 74 65 78 74 20 66    69 6c 65 73 29 20 77 69 74 68 20 72 65 71 75 65  | .or.plain-text.files).with.reque | 
| 2040 |  73 74 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b    23 73 61 76 65 2d 61 6e 64 2d 72 65 73 74 6f 72  | sts]].......-.[[#save-and-restor | 
| 2060 |  65 2d 79 6f 75 72 2d 63 68 61 74 2d 73 65 73 73    69 6f 6e 73 5d 5b 53 61 76 65 20 61 6e 64 20 72  | e-your-chat-sessions][Save.and.r | 
| 2080 |  65 73 74 6f 72 65 20 79 6f 75 72 20 63 68 61 74    20 73 65 73 73 69 6f 6e 73 5d 5d 0a 20 20 20 20  | estore.your.chat.sessions]]..... | 
| 20a0 |  2d 20 5b 5b 23 73 65 74 74 69 6e 67 2d 6f 70 74    69 6f 6e 73 2d 62 61 63 6b 65 6e 64 2d 6d 6f 64  | -.[[#setting-options-backend-mod | 
| 20c0 |  65 6c 2d 72 65 71 75 65 73 74 2d 70 61 72 61 6d    65 74 65 72 73 2d 73 79 73 74 65 6d 2d 70 72 6f  | el-request-parameters-system-pro | 
| 20e0 |  6d 70 74 73 2d 61 6e 64 2d 6d 6f 72 65 5d 5b 53    65 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20 28  | mpts-and-more][Setting.options.( | 
| 2100 |  62 61 63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 2c 20    72 65 71 75 65 73 74 20 70 61 72 61 6d 65 74 65  | backend,.model,.request.paramete | 
| 2120 |  72 73 2c 20 73 79 73 74 65 6d 20 70 72 6f 6d 70    74 73 20 61 6e 64 20 6d 6f 72 65 29 5d 5d 0a 20  | rs,.system.prompts.and.more)]].. | 
| 2140 |  20 20 20 2d 20 5b 5b 23 69 6e 63 6c 75 64 65 2d    6d 6f 72 65 2d 63 6f 6e 74 65 78 74 2d 77 69 74  | ...-.[[#include-more-context-wit | 
| 2160 |  68 2d 72 65 71 75 65 73 74 73 5d 5b 49 6e 63 6c    75 64 65 20 6d 6f 72 65 20 63 6f 6e 74 65 78 74  | h-requests][Include.more.context | 
| 2180 |  20 77 69 74 68 20 72 65 71 75 65 73 74 73 5d 5d    0a 20 20 20 20 2d 20 5b 5b 23 68 61 6e 64 6c 65  | .with.requests]].....-.[[#handle | 
| 21a0 |  2d 72 65 61 73 6f 6e 69 6e 67 2d 63 6f 6e 74 65    6e 74 5d 5b 48 61 6e 64 6c 65 20 22 72 65 61 73  | -reasoning-content][Handle."reas | 
| 21c0 |  6f 6e 69 6e 67 22 20 63 6f 6e 74 65 6e 74 5d 5d    0a 20 20 20 20 2d 20 5b 5b 23 74 6f 6f 6c 2d 75  | oning".content]].....-.[[#tool-u | 
| 21e0 |  73 65 5d 5b 54 6f 6f 6c 20 75 73 65 5d 5d 0a 20    20 20 20 20 20 2d 20 5b 5b 23 64 65 66 69 6e 69  | se][Tool.use]].......-.[[#defini | 
| 2200 |  6e 67 2d 67 70 74 65 6c 2d 74 6f 6f 6c 73 5d 5b    44 65 66 69 6e 69 6e 67 20 67 70 74 65 6c 20 74  | ng-gptel-tools][Defining.gptel.t | 
| 2220 |  6f 6f 6c 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b    5b 23 73 65 6c 65 63 74 69 6e 67 2d 74 6f 6f 6c  | ools]].......-.[[#selecting-tool | 
| 2240 |  73 5d 5b 53 65 6c 65 63 74 69 6e 67 20 74 6f 6f    6c 73 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23  | s][Selecting.tools]].......-.[[# | 
| 2260 |  6d 6f 64 65 6c 2d 63 6f 6e 74 65 78 74 2d 70 72    6f 74 6f 63 6f 6c 2d 6d 63 70 2d 69 6e 74 65 67  | model-context-protocol-mcp-integ | 
| 2280 |  72 61 74 69 6f 6e 5d 5b 4d 6f 64 65 6c 20 43 6f    6e 74 65 78 74 20 50 72 6f 74 6f 63 6f 6c 20 28  | ration][Model.Context.Protocol.( | 
| 22a0 |  4d 43 50 29 20 69 6e 74 65 67 72 61 74 69 6f 6e    5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 72 65 77 72  | MCP).integration]].....-.[[#rewr | 
| 22c0 |  69 74 65 2d 72 65 66 61 63 74 6f 72 2d 6f 72 2d    66 69 6c 6c 2d 69 6e 2d 61 2d 72 65 67 69 6f 6e  | ite-refactor-or-fill-in-a-region | 
| 22e0 |  5d 5b 52 65 77 72 69 74 65 2c 20 72 65 66 61 63    74 6f 72 20 6f 72 20 66 69 6c 6c 20 69 6e 20 61  | ][Rewrite,.refactor.or.fill.in.a | 
| 2300 |  20 72 65 67 69 6f 6e 5d 5d 0a 20 20 20 20 2d 20    5b 5b 23 65 78 74 72 61 2d 6f 72 67 2d 6d 6f 64  | .region]].....-.[[#extra-org-mod | 
| 2320 |  65 2d 63 6f 6e 76 65 6e 69 65 6e 63 65 73 5d 5b    45 78 74 72 61 20 4f 72 67 20 6d 6f 64 65 20 63  | e-conveniences][Extra.Org.mode.c | 
| 2340 |  6f 6e 76 65 6e 69 65 6e 63 65 73 5d 5d 0a 20 20    2d 20 5b 5b 23 66 61 71 5d 5b 46 41 51 5d 5d 0a  | onveniences]]...-.[[#faq][FAQ]]. | 
| 2360 |  20 20 20 20 2d 20 5b 5b 23 63 68 61 74 2d 62 75    66 66 65 72 2d 75 69 5d 5b 43 68 61 74 20 62 75  | ....-.[[#chat-buffer-ui][Chat.bu | 
| 2380 |  66 66 65 72 20 55 49 5d 5d 0a 20 20 20 20 20 20    2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 68 65 2d  | ffer.UI]].......-.[[#i-want-the- | 
| 23a0 |  77 69 6e 64 6f 77 2d 74 6f 2d 73 63 72 6f 6c 6c    2d 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2d 61  | window-to-scroll-automatically-a | 
| 23c0 |  73 2d 74 68 65 2d 72 65 73 70 6f 6e 73 65 2d 69    73 2d 69 6e 73 65 72 74 65 64 5d 5b 49 20 77 61  | s-the-response-is-inserted][I.wa | 
| 23e0 |  6e 74 20 74 68 65 20 77 69 6e 64 6f 77 20 74 6f    20 73 63 72 6f 6c 6c 20 61 75 74 6f 6d 61 74 69  | nt.the.window.to.scroll.automati | 
| 2400 |  63 61 6c 6c 79 20 61 73 20 74 68 65 20 72 65 73    70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65  | cally.as.the.response.is.inserte | 
| 2420 |  64 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 69    2d 77 61 6e 74 2d 74 68 65 2d 63 75 72 73 6f 72  | d]].......-.[[#i-want-the-cursor | 
| 2440 |  2d 74 6f 2d 6d 6f 76 65 2d 74 6f 2d 74 68 65 2d    6e 65 78 74 2d 70 72 6f 6d 70 74 2d 61 66 74 65  | -to-move-to-the-next-prompt-afte | 
| 2460 |  72 2d 74 68 65 2d 72 65 73 70 6f 6e 73 65 2d 69    73 2d 69 6e 73 65 72 74 65 64 5d 5b 49 20 77 61  | r-the-response-is-inserted][I.wa | 
| 2480 |  6e 74 20 74 68 65 20 63 75 72 73 6f 72 20 74 6f    20 6d 6f 76 65 20 74 6f 20 74 68 65 20 6e 65 78  | nt.the.cursor.to.move.to.the.nex | 
| 24a0 |  74 20 70 72 6f 6d 70 74 20 61 66 74 65 72 20 74    68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69  | t.prompt.after.the.response.is.i | 
| 24c0 |  6e 73 65 72 74 65 64 5d 5d 0a 20 20 20 20 20 20    2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 6f 2d 63  | nserted]].......-.[[#i-want-to-c | 
| 24e0 |  68 61 6e 67 65 2d 74 68 65 2d 66 6f 72 6d 61 74    74 69 6e 67 2d 6f 66 2d 74 68 65 2d 70 72 6f 6d  | hange-the-formatting-of-the-prom | 
| 2500 |  70 74 2d 61 6e 64 2d 6c 6c 6d 2d 72 65 73 70 6f    6e 73 65 5d 5b 49 20 77 61 6e 74 20 74 6f 20 63  | pt-and-llm-response][I.want.to.c | 
| 2520 |  68 61 6e 67 65 20 74 68 65 20 66 6f 72 6d 61 74    74 69 6e 67 20 6f 66 20 74 68 65 20 70 72 6f 6d  | hange.the.formatting.of.the.prom | 
| 2540 |  70 74 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f    6e 73 65 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b  | pt.and.LLM.response]].......-.[[ | 
| 2560 |  23 68 6f 77 2d 64 6f 65 73 2d 67 70 74 65 6c 2d    64 69 73 74 69 6e 67 75 69 73 68 2d 62 65 74 77  | #how-does-gptel-distinguish-betw | 
| 2580 |  65 65 6e 2d 75 73 65 72 2d 70 72 6f 6d 70 74 73    2d 61 6e 64 2d 6c 6c 6d 2d 72 65 73 70 6f 6e 73  | een-user-prompts-and-llm-respons | 
| 25a0 |  65 73 5d 5b 48 6f 77 20 64 6f 65 73 20 67 70 74    65 6c 20 64 69 73 74 69 6e 67 75 69 73 68 20 62  | es][How.does.gptel.distinguish.b | 
| 25c0 |  65 74 77 65 65 6e 20 75 73 65 72 20 70 72 6f 6d    70 74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70  | etween.user.prompts.and.LLM.resp | 
| 25e0 |  6f 6e 73 65 73 3f 5d 5d 0a 20 20 20 20 2d 20 5b    5b 23 74 72 61 6e 73 69 65 6e 74 2d 6d 65 6e 75  | onses?]].....-.[[#transient-menu | 
| 2600 |  2d 62 65 68 61 76 69 6f 72 5d 5b 54 72 61 6e 73    69 65 6e 74 20 6d 65 6e 75 20 62 65 68 61 76 69  | -behavior][Transient.menu.behavi | 
| 2620 |  6f 72 5d 5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23    69 2d 77 61 6e 74 2d 74 6f 2d 73 65 74 2d 67 70  | or]].......-.[[#i-want-to-set-gp | 
| 2640 |  74 65 6c 2d 6f 70 74 69 6f 6e 73 2d 62 75 74 2d    6f 6e 6c 79 2d 66 6f 72 2d 74 68 69 73 2d 62 75  | tel-options-but-only-for-this-bu | 
| 2660 |  66 66 65 72 5d 5b 49 20 77 61 6e 74 20 74 6f 20    73 65 74 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e  | ffer][I.want.to.set.gptel.option | 
| 2680 |  73 2c 20 62 75 74 20 6f 6e 6c 79 20 66 6f 72 20    74 68 69 73 20 62 75 66 66 65 72 5d 5d 0a 20 20  | s,.but.only.for.this.buffer]]... | 
| 26a0 |  20 20 20 20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d    74 68 65 2d 74 72 61 6e 73 69 65 6e 74 2d 6d 65  | ....-.[[#i-want-the-transient-me | 
| 26c0 |  6e 75 2d 6f 70 74 69 6f 6e 73 2d 74 6f 2d 62 65    2d 73 61 76 65 64 2d 73 6f 2d 69 2d 6f 6e 6c 79  | nu-options-to-be-saved-so-i-only | 
| 26e0 |  2d 6e 65 65 64 2d 74 6f 2d 73 65 74 2d 74 68 65    6d 2d 6f 6e 63 65 5d 5b 49 20 77 61 6e 74 20 74  | -need-to-set-them-once][I.want.t | 
| 2700 |  68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e    75 20 6f 70 74 69 6f 6e 73 20 74 6f 20 62 65 20  | he.transient.menu.options.to.be. | 
| 2720 |  73 61 76 65 64 20 73 6f 20 49 20 6f 6e 6c 79 20    6e 65 65 64 20 74 6f 20 73 65 74 20 74 68 65 6d  | saved.so.I.only.need.to.set.them | 
| 2740 |  20 6f 6e 63 65 5d 5d 0a 20 20 20 20 20 20 2d 20    5b 5b 23 75 73 69 6e 67 2d 74 68 65 2d 74 72 61  | .once]].......-.[[#using-the-tra | 
| 2760 |  6e 73 69 65 6e 74 2d 6d 65 6e 75 2d 6c 65 61 76    65 73 2d 62 65 68 69 6e 64 2d 65 78 74 72 61 2d  | nsient-menu-leaves-behind-extra- | 
| 2780 |  77 69 6e 64 6f 77 73 5d 5b 55 73 69 6e 67 20 74    68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e  | windows][Using.the.transient.men | 
| 27a0 |  75 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20    65 78 74 72 61 20 77 69 6e 64 6f 77 73 5d 5d 0a  | u.leaves.behind.extra.windows]]. | 
| 27c0 |  20 20 20 20 20 20 2d 20 5b 5b 23 63 61 6e 2d 69    2d 63 68 61 6e 67 65 2d 74 68 65 2d 74 72 61 6e  | ......-.[[#can-i-change-the-tran | 
| 27e0 |  73 69 65 6e 74 2d 6d 65 6e 75 2d 6b 65 79 2d 62    69 6e 64 69 6e 67 73 5d 5b 43 61 6e 20 49 20 63  | sient-menu-key-bindings][Can.I.c | 
| 2800 |  68 61 6e 67 65 20 74 68 65 20 74 72 61 6e 73 69    65 6e 74 20 6d 65 6e 75 20 6b 65 79 20 62 69 6e  | hange.the.transient.menu.key.bin | 
| 2820 |  64 69 6e 67 73 3f 5d 5d 0a 20 20 20 20 20 20 2d    20 5b 5b 23 64 6f 6f 6d 2d 65 6d 61 63 73 2d 73  | dings?]].......-.[[#doom-emacs-s | 
| 2840 |  65 6e 64 69 6e 67 2d 61 2d 71 75 65 72 79 2d 66    72 6f 6d 2d 74 68 65 2d 67 70 74 65 6c 2d 6d 65  | ending-a-query-from-the-gptel-me | 
| 2860 |  6e 75 2d 66 61 69 6c 73 2d 62 65 63 61 75 73 65    2d 6f 66 2d 61 2d 6b 65 79 2d 63 6f 6e 66 6c 69  | nu-fails-because-of-a-key-confli | 
| 2880 |  63 74 2d 77 69 74 68 2d 6f 72 67 2d 6d 6f 64 65    5d 5b 28 44 6f 6f 6d 20 45 6d 61 63 73 29 20 53  | ct-with-org-mode][(Doom.Emacs).S | 
| 28a0 |  65 6e 64 69 6e 67 20 61 20 71 75 65 72 79 20 66    72 6f 6d 20 74 68 65 20 67 70 74 65 6c 20 6d 65  | ending.a.query.from.the.gptel.me | 
| 28c0 |  6e 75 20 66 61 69 6c 73 20 62 65 63 61 75 73 65    20 6f 66 20 61 20 6b 65 79 20 63 6f 6e 66 6c 69  | nu.fails.because.of.a.key.confli | 
| 28e0 |  63 74 20 77 69 74 68 20 4f 72 67 20 6d 6f 64 65    5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 6d 69 73 63  | ct.with.Org.mode]].....-.[[#misc | 
| 2900 |  65 6c 6c 61 6e 65 6f 75 73 5d 5b 4d 69 73 63 65    6c 6c 61 6e 65 6f 75 73 5d 5d 0a 20 20 20 20 20  | ellaneous][Miscellaneous]]...... | 
| 2920 |  20 2d 20 5b 5b 23 69 2d 77 61 6e 74 2d 74 6f 2d    75 73 65 2d 67 70 74 65 6c 2d 69 6e 2d 61 2d 77  | .-.[[#i-want-to-use-gptel-in-a-w | 
| 2940 |  61 79 2d 74 68 61 74 73 2d 6e 6f 74 2d 73 75 70    70 6f 72 74 65 64 2d 62 79 2d 67 70 74 65 6c 2d  | ay-thats-not-supported-by-gptel- | 
| 2960 |  73 65 6e 64 2d 6f 72 2d 74 68 65 2d 6f 70 74 69    6f 6e 73 2d 6d 65 6e 75 5d 5b 49 20 77 61 6e 74  | send-or-the-options-menu][I.want | 
| 2980 |  20 74 6f 20 75 73 65 20 67 70 74 65 6c 20 69 6e    20 61 20 77 61 79 20 74 68 61 74 27 73 20 6e 6f  | .to.use.gptel.in.a.way.that's.no | 
| 29a0 |  74 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 3d    67 70 74 65 6c 2d 73 65 6e 64 3d 20 6f 72 20 74  | t.supported.by.=gptel-send=.or.t | 
| 29c0 |  68 65 20 6f 70 74 69 6f 6e 73 20 6d 65 6e 75 5d    5d 0a 20 20 20 20 20 20 2d 20 5b 5b 23 63 68 61  | he.options.menu]].......-.[[#cha | 
| 29e0 |  74 67 70 74 2d 69 2d 67 65 74 2d 74 68 65 2d 65    72 72 6f 72 2d 68 74 74 70 32 2d 34 32 39 2d 79  | tgpt-i-get-the-error-http2-429-y | 
| 2a00 |  6f 75 2d 65 78 63 65 65 64 65 64 2d 79 6f 75 72    2d 63 75 72 72 65 6e 74 2d 71 75 6f 74 61 5d 5b  | ou-exceeded-your-current-quota][ | 
| 2a20 |  28 43 68 61 74 47 50 54 29 20 49 20 67 65 74 20    74 68 65 20 65 72 72 6f 72 20 22 28 48 54 54 50  | (ChatGPT).I.get.the.error."(HTTP | 
| 2a40 |  2f 32 20 34 32 39 29 20 59 6f 75 20 65 78 63 65    65 64 65 64 20 79 6f 75 72 20 63 75 72 72 65 6e  | /2.429).You.exceeded.your.curren | 
| 2a60 |  74 20 71 75 6f 74 61 22 5d 5d 0a 20 20 20 20 20    20 2d 20 5b 5b 23 77 68 79 2d 61 6e 6f 74 68 65  | t.quota"]].......-.[[#why-anothe | 
| 2a80 |  72 2d 6c 6c 6d 2d 63 6c 69 65 6e 74 5d 5b 57 68    79 20 61 6e 6f 74 68 65 72 20 4c 4c 4d 20 63 6c  | r-llm-client][Why.another.LLM.cl | 
| 2aa0 |  69 65 6e 74 3f 5d 5d 0a 20 20 2d 20 5b 5b 23 61    64 64 69 74 69 6f 6e 61 6c 2d 63 6f 6e 66 69 67  | ient?]]...-.[[#additional-config | 
| 2ac0 |  75 72 61 74 69 6f 6e 5d 5b 41 64 64 69 74 69 6f    6e 61 6c 20 43 6f 6e 66 69 67 75 72 61 74 69 6f  | uration][Additional.Configuratio | 
| 2ae0 |  6e 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 6f 70 74    69 6f 6e 2d 70 72 65 73 65 74 73 5d 5b 4f 70 74  | n]].....-.[[#option-presets][Opt | 
| 2b00 |  69 6f 6e 20 70 72 65 73 65 74 73 5d 5d 0a 20 20    20 20 20 20 2d 20 5b 5b 23 61 70 70 6c 79 69 6e  | ion.presets]].......-.[[#applyin | 
| 2b20 |  67 2d 70 72 65 73 65 74 73 2d 74 6f 2d 72 65 71    75 65 73 74 73 2d 61 75 74 6f 6d 61 74 69 63 61  | g-presets-to-requests-automatica | 
| 2b40 |  6c 6c 79 5d 5b 41 70 70 6c 79 69 6e 67 20 70 72    65 73 65 74 73 20 74 6f 20 72 65 71 75 65 73 74  | lly][Applying.presets.to.request | 
| 2b60 |  73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 5d    5d 0a 20 20 2d 20 5b 5b 23 61 6c 74 65 72 6e 61  | s.automatically]]...-.[[#alterna | 
| 2b80 |  74 69 76 65 73 5d 5b 41 6c 74 65 72 6e 61 74 69    76 65 73 5d 5d 0a 20 20 20 20 2d 20 5b 5b 23 70  | tives][Alternatives]].....-.[[#p | 
| 2ba0 |  61 63 6b 61 67 65 73 2d 75 73 69 6e 67 2d 67 70    74 65 6c 5d 5b 50 61 63 6b 61 67 65 73 20 75 73  | ackages-using-gptel][Packages.us | 
| 2bc0 |  69 6e 67 20 67 70 74 65 6c 5d 5d 0a 20 20 2d 20    5b 5b 23 61 63 6b 6e 6f 77 6c 65 64 67 6d 65 6e  | ing.gptel]]...-.[[#acknowledgmen | 
| 2be0 |  74 73 5d 5b 41 63 6b 6e 6f 77 6c 65 64 67 6d 65    6e 74 73 5d 5d 0a 0a 2a 2a 20 43 4f 4d 4d 45 4e  | ts][Acknowledgments]]..**.COMMEN | 
| 2c00 |  54 20 42 72 65 61 6b 69 6e 67 20 63 68 61 6e 67    65 73 21 0a 0a 2d 20 3d 67 70 74 65 6c 2d 6d 6f  | T.Breaking.changes!..-.=gptel-mo | 
| 2c20 |  64 65 6c 3d 20 69 73 20 6e 6f 77 20 65 78 70 65    63 74 65 64 20 74 6f 20 62 65 20 61 20 73 79 6d  | del=.is.now.expected.to.be.a.sym | 
| 2c40 |  62 6f 6c 2c 20 6e 6f 74 20 61 20 73 74 72 69 6e    67 2e 20 20 50 6c 65 61 73 65 20 75 70 64 61 74  | bol,.not.a.string...Please.updat | 
| 2c60 |  65 20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61    74 69 6f 6e 2e 0a 0a 2a 2a 20 49 6e 73 74 61 6c  | e.your.configuration...**.Instal | 
| 2c80 |  6c 61 74 69 6f 6e 0a 0a 2d 20 2a 52 65 6c 65 61    73 65 20 76 65 72 73 69 6f 6e 2a 3a 20 3d 4d 2d  | lation..-.*Release.version*:.=M- | 
| 2ca0 |  78 20 70 61 63 6b 61 67 65 2d 69 6e 73 74 61 6c    6c 3d 20 e2 8f 8e 20 3d 67 70 74 65 6c 3d 20 69  | x.package-install=.....=gptel=.i | 
| 2cc0 |  6e 20 45 6d 61 63 73 2e 0a 2d 20 2a 44 65 76 65    6c 6f 70 6d 65 6e 74 20 73 6e 61 70 73 68 6f 74  | n.Emacs..-.*Development.snapshot | 
| 2ce0 |  2a 3a 20 41 64 64 20 4d 45 4c 50 41 20 6f 72 20    4e 6f 6e 47 4e 55 2d 64 65 76 65 6c 20 45 4c 50  | *:.Add.MELPA.or.NonGNU-devel.ELP | 
| 2d00 |  41 20 74 6f 20 79 6f 75 72 20 6c 69 73 74 20 6f    66 20 70 61 63 6b 61 67 65 20 73 6f 75 72 63 65  | A.to.your.list.of.package.source | 
| 2d20 |  73 2c 20 74 68 65 6e 20 69 6e 73 74 61 6c 6c 20    77 69 74 68 20 3d 4d 2d 78 20 70 61 63 6b 61 67  | s,.then.install.with.=M-x.packag | 
| 2d40 |  65 2d 69 6e 73 74 61 6c 6c 3d 20 e2 8f 8e 20 3d    67 70 74 65 6c 3d 2e 0a 2d 20 2a 4f 70 74 69 6f  | e-install=.....=gptel=..-.*Optio | 
| 2d60 |  6e 61 6c 3a 2a 20 49 6e 73 74 61 6c 6c 20 3d 6d    61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 3d 2e 0a 0a  | nal:*.Install.=markdown-mode=... | 
| 2d80 |  23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73    3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20  | #+html:.<details><summary>.****. | 
| 2da0 |  53 74 72 61 69 67 68 74 0a 23 2b 68 74 6d 6c 3a    20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 23 2b 62 65  | Straight.#+html:.</summary>.#+be | 
| 2dc0 |  67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69    73 70 0a 20 20 28 73 74 72 61 69 67 68 74 2d 75  | gin_src.emacs-lisp...(straight-u | 
| 2de0 |  73 65 2d 70 61 63 6b 61 67 65 20 27 67 70 74 65    6c 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 23 2b 68  | se-package.'gptel).#+end_src.#+h | 
| 2e00 |  74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a    23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73  | tml:.</details>.#+html:.<details | 
| 2e20 |  3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20    4d 61 6e 75 61 6c 0a 23 2b 68 74 6d 6c 3a 20 3c  | ><summary>.****.Manual.#+html:.< | 
| 2e40 |  2f 73 75 6d 6d 61 72 79 3e 0a 43 6c 6f 6e 65 20    6f 72 20 64 6f 77 6e 6c 6f 61 64 20 74 68 69 73  | /summary>.Clone.or.download.this | 
| 2e60 |  20 72 65 70 6f 73 69 74 6f 72 79 20 61 6e 64 20    72 75 6e 20 3d 4d 2d 78 20 70 61 63 6b 61 67 65  | .repository.and.run.=M-x.package | 
| 2e80 |  2d 69 6e 73 74 61 6c 6c 2d 66 69 6c 65 e2 8f 8e    3d 20 6f 6e 20 74 68 65 20 72 65 70 6f 73 69 74  | -install-file...=.on.the.reposit | 
| 2ea0 |  6f 72 79 20 64 69 72 65 63 74 6f 72 79 2e 0a 23    2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73  | ory.directory..#+html:.</details | 
| 2ec0 |  3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69    6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a  | >.#+html:.<details><summary>.*** | 
| 2ee0 |  2a 20 44 6f 6f 6d 20 45 6d 61 63 73 0a 23 2b 68    74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a  | *.Doom.Emacs.#+html:.</summary>. | 
| 2f00 |  49 6e 20 3d 70 61 63 6b 61 67 65 73 2e 65 6c 3d    0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61  | In.=packages.el=.#+begin_src.ema | 
| 2f20 |  63 73 2d 6c 69 73 70 0a 28 70 61 63 6b 61 67 65    21 20 67 70 74 65 6c 20 3a 72 65 63 69 70 65 20  | cs-lisp.(package!.gptel.:recipe. | 
| 2f40 |  28 3a 6e 6f 6e 72 65 63 75 72 73 69 76 65 20 74    29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 49 6e  | (:nonrecursive.t)).#+end_src..In | 
| 2f60 |  20 3d 63 6f 6e 66 69 67 2e 65 6c 3d 0a 23 2b 62    65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c  | .=config.el=.#+begin_src.emacs-l | 
| 2f80 |  69 73 70 0a 28 75 73 65 2d 70 61 63 6b 61 67 65    21 20 67 70 74 65 6c 0a 20 3a 63 6f 6e 66 69 67  | isp.(use-package!.gptel..:config | 
| 2fa0 |  0a 20 28 73 65 74 71 21 20 67 70 74 65 6c 2d 61    70 69 2d 6b 65 79 20 22 79 6f 75 72 20 6b 65 79  | ..(setq!.gptel-api-key."your.key | 
| 2fc0 |  22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 22 79    6f 75 72 20 6b 65 79 22 20 63 61 6e 20 62 65 20  | ")).#+end_src."your.key".can.be. | 
| 2fe0 |  74 68 65 20 41 50 49 20 6b 65 79 20 69 74 73 65    6c 66 2c 20 6f 72 20 28 73 61 66 65 72 29 20 61  | the.API.key.itself,.or.(safer).a | 
| 3000 |  20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72    65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20  | .function.that.returns.the.key.. | 
| 3020 |  20 53 65 74 74 69 6e 67 20 3d 67 70 74 65 6c 2d    61 70 69 2d 6b 65 79 3d 20 69 73 20 6f 70 74 69  | .Setting.=gptel-api-key=.is.opti | 
| 3040 |  6f 6e 61 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 62    65 20 61 73 6b 65 64 20 66 6f 72 20 61 20 6b 65  | onal,.you.will.be.asked.for.a.ke | 
| 3060 |  79 20 69 66 20 69 74 27 73 20 6e 6f 74 20 66 6f    75 6e 64 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f  | y.if.it's.not.found...#+html:.</ | 
| 3080 |  64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a    20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61  | details>.#+html:.<details><summa | 
| 30a0 |  72 79 3e 0a 2a 2a 2a 2a 20 53 70 61 63 65 6d 61    63 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d  | ry>.****.Spacemacs.#+html:.</sum | 
| 30c0 |  6d 61 72 79 3e 0a 49 6e 20 79 6f 75 72 20 3d 2e    73 70 61 63 65 6d 61 63 73 3d 20 66 69 6c 65 2c  | mary>.In.your.=.spacemacs=.file, | 
| 30e0 |  20 61 64 64 20 3d 6c 6c 6d 2d 63 6c 69 65 6e 74    3d 20 74 6f 20 3d 64 6f 74 73 70 61 63 65 6d 61  | .add.=llm-client=.to.=dotspacema | 
| 3100 |  63 73 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e    2d 6c 61 79 65 72 73 3d 2e 0a 23 2b 62 65 67 69  | cs-configuration-layers=..#+begi | 
| 3120 |  6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70    0a 28 6c 6c 6d 2d 63 6c 69 65 6e 74 20 3a 76 61  | n_src.emacs-lisp.(llm-client.:va | 
| 3140 |  72 69 61 62 6c 65 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 6c 6c 6d 2d 63 6c 69 65 6e 74 2d 65  | riables.............llm-client-e | 
| 3160 |  6e 61 62 6c 65 2d 67 70 74 65 6c 20 74 29 0a 23    2b 65 6e 64 5f 73 72 63 0a 23 2b 68 74 6d 6c 3a  | nable-gptel.t).#+end_src.#+html: | 
| 3180 |  20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 20 53    65 74 75 70 0a 2a 2a 2a 20 43 68 61 74 47 50 54  | .</details>.**.Setup.***.ChatGPT | 
| 31a0 |  0a 50 72 6f 63 75 72 65 20 61 6e 20 5b 5b 68 74    74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f  | .Procure.an.[[https://platform.o | 
| 31c0 |  70 65 6e 61 69 2e 63 6f 6d 2f 61 63 63 6f 75 6e    74 2f 61 70 69 2d 6b 65 79 73 5d 5b 4f 70 65 6e  | penai.com/account/api-keys][Open | 
| 31e0 |  41 49 20 41 50 49 20 6b 65 79 5d 5d 2e 0a 0a 4f    70 74 69 6f 6e 61 6c 3a 20 53 65 74 20 3d 67 70  | AI.API.key]]...Optional:.Set.=gp | 
| 3200 |  74 65 6c 2d 61 70 69 2d 6b 65 79 3d 20 74 6f 20    74 68 65 20 6b 65 79 2e 20 41 6c 74 65 72 6e 61  | tel-api-key=.to.the.key..Alterna | 
| 3220 |  74 69 76 65 6c 79 2c 20 79 6f 75 20 6d 61 79 20    63 68 6f 6f 73 65 20 61 20 6d 6f 72 65 20 73 65  | tively,.you.may.choose.a.more.se | 
| 3240 |  63 75 72 65 20 6d 65 74 68 6f 64 20 73 75 63 68    20 61 73 3a 0a 0a 2d 20 53 65 74 74 69 6e 67 20  | cure.method.such.as:..-.Setting. | 
| 3260 |  69 74 20 74 6f 20 61 20 63 75 73 74 6f 6d 20 66    75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74  | it.to.a.custom.function.that.ret | 
| 3280 |  75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 2d 20    4c 65 61 76 69 6e 67 20 69 74 20 73 65 74 20 74  | urns.the.key..-.Leaving.it.set.t | 
| 32a0 |  6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 3d 67    70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 6f  | o.the.default.=gptel-api-key-fro | 
| 32c0 |  6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 3d 20 66    75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 72 65  | m-auth-source=.function.which.re | 
| 32e0 |  61 64 73 20 6b 65 79 73 20 66 72 6f 6d 20 3d 7e    2f 2e 61 75 74 68 69 6e 66 6f 3d 2e 20 28 53 65  | ads.keys.from.=~/.authinfo=..(Se | 
| 3300 |  65 20 5b 5b 23 6f 70 74 69 6f 6e 61 6c 2d 73 65    63 75 72 69 6e 67 2d 61 70 69 2d 6b 65 79 73 2d  | e.[[#optional-securing-api-keys- | 
| 3320 |  77 69 74 68 2d 61 75 74 68 69 6e 66 6f 5d 5b 61    75 74 68 69 6e 66 6f 20 64 65 74 61 69 6c 73 5d  | with-authinfo][authinfo.details] | 
| 3340 |  5d 29 0a 0a 2a 2a 2a 20 4f 74 68 65 72 20 4c 4c    4d 20 62 61 63 6b 65 6e 64 73 0a 0a 43 68 61 74  | ])..***.Other.LLM.backends..Chat | 
| 3360 |  47 50 54 20 69 73 20 63 6f 6e 66 69 67 75 72 65    64 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f 78  | GPT.is.configured.out.of.the.box | 
| 3380 |  2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74    6f 20 75 73 65 20 6f 74 68 65 72 20 4c 4c 4d 20  | ...If.you.want.to.use.other.LLM. | 
| 33a0 |  62 61 63 6b 65 6e 64 73 20 28 6c 69 6b 65 20 4f    6c 6c 61 6d 61 2c 20 43 6c 61 75 64 65 2f 41 6e  | backends.(like.Ollama,.Claude/An | 
| 33c0 |  74 68 72 6f 70 69 63 20 6f 72 20 47 65 6d 69 6e    69 29 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 72  | thropic.or.Gemini).you.need.to.r | 
| 33e0 |  65 67 69 73 74 65 72 20 61 6e 64 20 63 6f 6e 66    69 67 75 72 65 20 74 68 65 6d 20 66 69 72 73 74  | egister.and.configure.them.first | 
| 3400 |  2e 0a 0a 41 73 20 61 6e 20 65 78 61 6d 70 6c 65    2c 20 72 65 67 69 73 74 65 72 69 6e 67 20 61 20  | ...As.an.example,.registering.a. | 
| 3420 |  62 61 63 6b 65 6e 64 20 74 79 70 69 63 61 6c 6c    79 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 68 65  | backend.typically.looks.like.the | 
| 3440 |  20 66 6f 6c 6c 6f 77 69 6e 67 3a 0a 23 2b 62 65    67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69  | .following:.#+begin_src.emacs-li | 
| 3460 |  73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 61    6e 74 68 72 6f 70 69 63 20 22 43 6c 61 75 64 65  | sp.(gptel-make-anthropic."Claude | 
| 3480 |  22 20 3a 73 74 72 65 61 6d 20 74 20 3a 6b 65 79    20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 29 0a  | ".:stream.t.:key.gptel-api-key). | 
| 34a0 |  23 2b 65 6e 64 5f 73 72 63 0a 4f 6e 63 65 20 74    68 69 73 20 62 61 63 6b 65 6e 64 20 69 73 20 72  | #+end_src.Once.this.backend.is.r | 
| 34c0 |  65 67 69 73 74 65 72 65 64 2c 20 79 6f 75 27 6c    6c 20 73 65 65 20 6d 6f 64 65 6c 20 6e 61 6d 65  | egistered,.you'll.see.model.name | 
| 34e0 |  73 20 70 72 65 66 69 78 65 64 20 62 79 20 22 43    6c 61 75 64 65 3a 22 20 61 70 70 65 61 72 20 69  | s.prefixed.by."Claude:".appear.i | 
| 3500 |  6e 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 2e 0a    0a 53 65 65 20 62 65 6c 6f 77 20 66 6f 72 20 64  | n.gptel's.menu...See.below.for.d | 
| 3520 |  65 74 61 69 6c 73 20 6f 6e 20 79 6f 75 72 20 70    72 65 66 65 72 72 65 64 20 4c 4c 4d 20 70 72 6f  | etails.on.your.preferred.LLM.pro | 
| 3540 |  76 69 64 65 72 2c 20 69 6e 63 6c 75 64 69 6e 67    20 6c 6f 63 61 6c 20 4c 4c 4d 73 2e 0a 0a 23 2b  | vider,.including.local.LLMs...#+ | 
| 3560 |  68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c    73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 2a 20 28  | html:.<details><summary>.*****.( | 
| 3580 |  4f 70 74 69 6f 6e 61 6c 29 20 53 65 63 75 72 69    6e 67 20 41 50 49 20 6b 65 79 73 20 77 69 74 68  | Optional).Securing.API.keys.with | 
| 35a0 |  20 3d 61 75 74 68 69 6e 66 6f 3d 0a 23 2b 68 74    6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a  | .=authinfo=.#+html:.</summary>.. | 
| 35c0 |  59 6f 75 20 63 61 6e 20 75 73 65 20 45 6d 61 63    73 27 20 62 75 69 6c 74 2d 69 6e 20 73 75 70 70  | You.can.use.Emacs'.built-in.supp | 
| 35e0 |  6f 72 74 20 66 6f 72 20 3d 61 75 74 68 69 6e 66    6f 3d 20 74 6f 20 73 74 6f 72 65 20 41 50 49 20  | ort.for.=authinfo=.to.store.API. | 
| 3600 |  6b 65 79 73 20 72 65 71 75 69 72 65 64 20 62 79    20 67 70 74 65 6c 2e 20 20 41 64 64 20 79 6f 75  | keys.required.by.gptel...Add.you | 
| 3620 |  72 20 41 50 49 20 6b 65 79 73 20 74 6f 20 3d 7e    2f 2e 61 75 74 68 69 6e 66 6f 3d 2c 20 61 6e 64  | r.API.keys.to.=~/.authinfo=,.and | 
| 3640 |  20 6c 65 61 76 65 20 3d 67 70 74 65 6c 2d 61 70    69 2d 6b 65 79 3d 20 73 65 74 20 74 6f 20 69 74  | .leave.=gptel-api-key=.set.to.it | 
| 3660 |  73 20 64 65 66 61 75 6c 74 2e 20 20 42 79 20 64    65 66 61 75 6c 74 2c 20 74 68 65 20 41 50 49 20  | s.default...By.default,.the.API. | 
| 3680 |  65 6e 64 70 6f 69 6e 74 20 44 4e 53 20 6e 61 6d    65 20 28 65 2e 67 2e 20 22 61 70 69 2e 6f 70 65  | endpoint.DNS.name.(e.g.."api.ope | 
| 36a0 |  6e 61 69 2e 63 6f 6d 22 29 20 69 73 20 75 73 65    64 20 61 73 20 48 4f 53 54 20 61 6e 64 20 22 61  | nai.com").is.used.as.HOST.and."a | 
| 36c0 |  70 69 6b 65 79 22 20 61 73 20 55 53 45 52 2e 0a    23 2b 62 65 67 69 6e 5f 73 72 63 20 61 75 74 68  | pikey".as.USER..#+begin_src.auth | 
| 36e0 |  69 6e 66 6f 0a 6d 61 63 68 69 6e 65 20 61 70 69    2e 6f 70 65 6e 61 69 2e 63 6f 6d 20 6c 6f 67 69  | info.machine.api.openai.com.logi | 
| 3700 |  6e 20 61 70 69 6b 65 79 20 70 61 73 73 77 6f 72    64 20 73 6b 2d 73 65 63 72 65 74 2d 6f 70 65 6e  | n.apikey.password.sk-secret-open | 
| 3720 |  61 69 2d 61 70 69 2d 6b 65 79 2d 67 6f 65 73 2d    68 65 72 65 0a 6d 61 63 68 69 6e 65 20 61 70 69  | ai-api-key-goes-here.machine.api | 
| 3740 |  2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 20 6c    6f 67 69 6e 20 61 70 69 6b 65 79 20 70 61 73 73  | .anthropic.com.login.apikey.pass | 
| 3760 |  77 6f 72 64 20 73 6b 2d 73 65 63 72 65 74 2d 61    6e 74 68 72 6f 70 69 63 2d 61 70 69 2d 6b 65 79  | word.sk-secret-anthropic-api-key | 
| 3780 |  2d 67 6f 65 73 2d 68 65 72 65 0a 23 2b 65 6e 64    5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f  | -goes-here.#+end_src..#+html:.</ | 
| 37a0 |  64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a    20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61  | details>.#+html:.<details><summa | 
| 37c0 |  72 79 3e 0a 2a 2a 2a 2a 20 41 7a 75 72 65 0a 23    2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79  | ry>.****.Azure.#+html:.</summary | 
| 37e0 |  3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61    63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67  | >..Register.a.backend.with.#+beg | 
| 3800 |  69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73    70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a  | in_src.emacs-lisp.(gptel-make-az | 
| 3820 |  75 72 65 20 22 41 7a 75 72 65 2d 31 22 20 20 20    20 20 20 20 20 20 20 20 20 20 3b 4e 61 6d 65 2c  | ure."Azure-1".............;Name, | 
| 3840 |  20 77 68 61 74 65 76 65 72 20 79 6f 75 27 64 20    6c 69 6b 65 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c  | .whatever.you'd.like...:protocol | 
| 3860 |  20 22 68 74 74 70 73 22 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 4f 70  | ."https".....................;Op | 
| 3880 |  74 69 6f 6e 61 6c 20 2d 2d 20 68 74 74 70 73 20    69 73 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20  | tional.--.https.is.the.default.. | 
| 38a0 |  20 3a 68 6f 73 74 20 22 59 4f 55 52 5f 52 45 53    4f 55 52 43 45 5f 4e 41 4d 45 2e 6f 70 65 6e 61  | .:host."YOUR_RESOURCE_NAME.opena | 
| 38c0 |  69 2e 61 7a 75 72 65 2e 63 6f 6d 22 0a 20 20 3a    65 6e 64 70 6f 69 6e 74 20 22 2f 6f 70 65 6e 61  | i.azure.com"...:endpoint."/opena | 
| 38e0 |  69 2f 64 65 70 6c 6f 79 6d 65 6e 74 73 2f 59 4f    55 52 5f 44 45 50 4c 4f 59 4d 45 4e 54 5f 4e 41  | i/deployments/YOUR_DEPLOYMENT_NA | 
| 3900 |  4d 45 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69    6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e 3d  | ME/chat/completions?api-version= | 
| 3920 |  32 30 32 33 2d 30 35 2d 31 35 22 20 3b 6f 72 20    65 71 75 69 76 61 6c 65 6e 74 0a 20 20 3a 73 74  | 2023-05-15".;or.equivalent...:st | 
| 3940 |  72 65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ream.t.......................... | 
| 3960 |  20 20 20 3b 45 6e 61 62 6c 65 20 73 74 72 65 61    6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20  | ...;Enable.streaming.responses.. | 
| 3980 |  20 3a 6b 65 79 20 23 27 67 70 74 65 6c 2d 61 70    69 2d 6b 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20  | .:key.#'gptel-api-key...:models. | 
| 39a0 |  27 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 20    67 70 74 2d 34 29 29 0a 23 2b 65 6e 64 5f 73 72  | '(gpt-3.5-turbo.gpt-4)).#+end_sr | 
| 39c0 |  63 0a 52 65 66 65 72 20 74 6f 20 74 68 65 20 64    6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  | c.Refer.to.the.documentation.of. | 
| 39e0 |  3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a 75 72    65 3d 20 74 6f 20 73 65 74 20 6d 6f 72 65 20 70  | =gptel-make-azure=.to.set.more.p | 
| 3a00 |  61 72 61 6d 65 74 65 72 73 2e 0a 0a 59 6f 75 20    63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61  | arameters...You.can.pick.this.ba | 
| 3a20 |  63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d    65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67  | ckend.from.the.menu.when.using.g | 
| 3a40 |  70 74 65 6c 2e 20 28 73 65 65 20 5b 5b 23 75 73    61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a  | ptel..(see.[[#usage][Usage]])... | 
| 3a60 |  2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29    20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61  | *****.(Optional).Set.as.the.defa | 
| 3a80 |  75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e    64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64  | ult.gptel.backend..The.above.cod | 
| 3aa0 |  65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b    65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f  | e.makes.the.backend.available.to | 
| 3ac0 |  20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75    20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74  | .select...If.you.want.it.to.be.t | 
| 3ae0 |  68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65    6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f  | he.default.backend.for.gptel,.yo | 
| 3b00 |  75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61    73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d  | u.can.set.this.as.the.value.of.= | 
| 3b20 |  67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20    20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61  | gptel-backend=...Use.this.instea | 
| 3b40 |  64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a    23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63  | d.of.the.above..#+begin_src.emac | 
| 3b60 |  73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e    41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  | s-lisp.;;.OPTIONAL.configuration | 
| 3b80 |  0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f    64 65 6c 20 27 67 70 74 2d 33 2e 35 2d 74 75 72  | .(setq..gptel-model.'gpt-3.5-tur | 
| 3ba0 |  62 6f 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e    64 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a  | bo..gptel-backend.(gptel-make-az | 
| 3bc0 |  75 72 65 20 22 41 7a 75 72 65 2d 31 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | ure."Azure-1"..................: | 
| 3be0 |  70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | protocol."https"................ | 
| 3c00 |  20 20 3a 68 6f 73 74 20 22 59 4f 55 52 5f 52 45    53 4f 55 52 43 45 5f 4e 41 4d 45 2e 6f 70 65 6e  | ..:host."YOUR_RESOURCE_NAME.open | 
| 3c20 |  61 69 2e 61 7a 75 72 65 2e 63 6f 6d 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | ai.azure.com"..................: | 
| 3c40 |  65 6e 64 70 6f 69 6e 74 20 22 2f 6f 70 65 6e 61    69 2f 64 65 70 6c 6f 79 6d 65 6e 74 73 2f 59 4f  | endpoint."/openai/deployments/YO | 
| 3c60 |  55 52 5f 44 45 50 4c 4f 59 4d 45 4e 54 5f 4e 41    4d 45 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69  | UR_DEPLOYMENT_NAME/chat/completi | 
| 3c80 |  6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e 3d    32 30 32 33 2d 30 35 2d 31 35 22 0a 20 20 20 20  | ons?api-version=2023-05-15"..... | 
| 3ca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74    72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 20  | .............:stream.t.......... | 
| 3cc0 |  20 20 20 20 20 20 20 20 3a 6b 65 79 20 23 27 67    70 74 65 6c 2d 61 70 69 2d 6b 65 79 0a 20 20 20  | ........:key.#'gptel-api-key.... | 
| 3ce0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d    6f 64 65 6c 73 20 27 28 67 70 74 2d 33 2e 35 2d  | ..............:models.'(gpt-3.5- | 
| 3d00 |  74 75 72 62 6f 20 67 70 74 2d 34 29 29 29 0a 23    2b 65 6e 64 5f 73 72 63 0a 23 2b 68 74 6d 6c 3a  | turbo.gpt-4))).#+end_src.#+html: | 
| 3d20 |  20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b 68    74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73  | .</details>..#+html:.<details><s | 
| 3d40 |  75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 47 50 54    34 41 6c 6c 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73  | ummary>.****.GPT4All.#+html:.</s | 
| 3d60 |  75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65    72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68  | ummary>..Register.a.backend.with | 
| 3d80 |  0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61    63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d  | .#+begin_src.emacs-lisp.(gptel-m | 
| 3da0 |  61 6b 65 2d 67 70 74 34 61 6c 6c 20 22 47 50 54    34 41 6c 6c 22 20 20 20 20 20 20 20 20 20 20 20  | ake-gpt4all."GPT4All"........... | 
| 3dc0 |  3b 4e 61 6d 65 20 6f 66 20 79 6f 75 72 20 63 68    6f 6f 73 69 6e 67 0a 20 3a 70 72 6f 74 6f 63 6f  | ;Name.of.your.choosing..:protoco | 
| 3de0 |  6c 20 22 68 74 74 70 22 0a 20 3a 68 6f 73 74 20    22 6c 6f 63 61 6c 68 6f 73 74 3a 34 38 39 31 22  | l."http"..:host."localhost:4891" | 
| 3e00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3b 57 68 65 72 65 20 69 74 27 73 20 72 75 6e  | .................;Where.it's.run | 
| 3e20 |  6e 69 6e 67 0a 20 3a 6d 6f 64 65 6c 73 20 27 28    6d 69 73 74 72 61 6c 2d 37 62 2d 6f 70 65 6e 6f  | ning..:models.'(mistral-7b-openo | 
| 3e40 |  72 63 61 2e 51 34 5f 30 2e 67 67 75 66 29 29 20    3b 41 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c  | rca.Q4_0.gguf)).;Available.model | 
| 3e60 |  73 0a 23 2b 65 6e 64 5f 73 72 63 0a 54 68 65 73    65 20 61 72 65 20 74 68 65 20 72 65 71 75 69 72  | s.#+end_src.These.are.the.requir | 
| 3e80 |  65 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72    65 66 65 72 20 74 6f 20 74 68 65 20 64 6f 63 75  | ed.parameters,.refer.to.the.docu | 
| 3ea0 |  6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67 70    74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c  | mentation.of.=gptel-make-gpt4all | 
| 3ec0 |  3d 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f 75    20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62  | =.for.more...You.can.pick.this.b | 
| 3ee0 |  61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20    6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20  | ackend.from.the.menu.when.using. | 
| 3f00 |  67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73    61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a  | gptel.(see.[[#usage][Usage]])... | 
| 3f20 |  2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29    20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61  | *****.(Optional).Set.as.the.defa | 
| 3f40 |  75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e    64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64  | ult.gptel.backend..The.above.cod | 
| 3f60 |  65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b    65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f  | e.makes.the.backend.available.to | 
| 3f80 |  20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75    20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74  | .select...If.you.want.it.to.be.t | 
| 3fa0 |  68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65    6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f  | he.default.backend.for.gptel,.yo | 
| 3fc0 |  75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61    73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d  | u.can.set.this.as.the.value.of.= | 
| 3fe0 |  67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20    20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61  | gptel-backend=...Use.this.instea | 
| 4000 |  64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 20    20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 20 79 6f  | d.of.the.above...Additionally.yo | 
| 4020 |  75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 69 6e    63 72 65 61 73 65 20 74 68 65 20 72 65 73 70 6f  | u.may.want.to.increase.the.respo | 
| 4040 |  6e 73 65 20 74 6f 6b 65 6e 20 73 69 7a 65 20 73    69 6e 63 65 20 47 50 54 34 41 6c 6c 20 75 73 65  | nse.token.size.since.GPT4All.use | 
| 4060 |  73 20 76 65 72 79 20 73 68 6f 72 74 20 28 6f 66    74 65 6e 20 74 72 75 6e 63 61 74 65 64 29 20 72  | s.very.short.(often.truncated).r | 
| 4080 |  65 73 70 6f 6e 73 65 73 20 62 79 20 64 65 66 61    75 6c 74 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63  | esponses.by.default..#+begin_src | 
| 40a0 |  20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f    50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72  | .emacs-lisp.;;.OPTIONAL.configur | 
| 40c0 |  61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74    65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 35 30  | ation.(setq..gptel-max-tokens.50 | 
| 40e0 |  30 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27    6d 69 73 74 72 61 6c 2d 37 62 2d 6f 70 65 6e 6f  | 0..gptel-model.'mistral-7b-openo | 
| 4100 |  72 63 61 2e 51 34 5f 30 2e 67 67 75 66 0a 20 67    70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70  | rca.Q4_0.gguf..gptel-backend.(gp | 
| 4120 |  74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c    20 22 47 50 54 34 41 6c 6c 22 0a 20 20 20 20 20  | tel-make-gpt4all."GPT4All"...... | 
| 4140 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f    74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20 20 20  | ............:protocol."http".... | 
| 4160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68    6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 34  | ..............:host."localhost:4 | 
| 4180 |  38 39 31 22 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28  | 891"..................:models.'( | 
| 41a0 |  6d 69 73 74 72 61 6c 2d 37 62 2d 6f 70 65 6e 6f    72 63 61 2e 51 34 5f 30 2e 67 67 75 66 29 29 29  | mistral-7b-openorca.Q4_0.gguf))) | 
| 41c0 |  0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74    6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a  | .#+end_src..#+html:.</details>.. | 
| 41e0 |  23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73    3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20  | #+html:.<details><summary>.****. | 
| 4200 |  4f 6c 6c 61 6d 61 0a 23 2b 68 74 6d 6c 3a 20 3c    2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73  | Ollama.#+html:.</summary>..Regis | 
| 4220 |  74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69    74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65  | ter.a.backend.with.#+begin_src.e | 
| 4240 |  6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c    2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 20 22 4f 6c  | macs-lisp.(gptel-make-ollama."Ol | 
| 4260 |  6c 61 6d 61 22 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 41 6e 79 20 6e 61 6d 65 20 6f 66 20 79  | lama".............;Any.name.of.y | 
| 4280 |  6f 75 72 20 63 68 6f 6f 73 69 6e 67 0a 20 20 3a    68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a  | our.choosing...:host."localhost: | 
| 42a0 |  31 31 34 33 34 22 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 57 68 65 72 65 20 69 74 27 73  | 11434"...............;Where.it's | 
| 42c0 |  20 72 75 6e 6e 69 6e 67 0a 20 20 3a 73 74 72 65    61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20 20  | .running...:stream.t............ | 
| 42e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3b 53 74 72 65 61 6d 20 72 65 73 70 6f 6e 73  | .................;Stream.respons | 
| 4300 |  65 73 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6d    69 73 74 72 61 6c 3a 6c 61 74 65 73 74 29 29 20  | es...:models.'(mistral:latest)). | 
| 4320 |  20 20 20 20 20 20 20 20 20 3b 4c 69 73 74 20 6f    66 20 6d 6f 64 65 6c 73 0a 23 2b 65 6e 64 5f 73  | .........;List.of.models.#+end_s | 
| 4340 |  72 63 0a 54 68 65 73 65 20 61 72 65 20 74 68 65    20 72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65  | rc.These.are.the.required.parame | 
| 4360 |  74 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 74    68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  | ters,.refer.to.the.documentation | 
| 4380 |  20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d    6f 6c 6c 61 6d 61 3d 20 66 6f 72 20 6d 6f 72 65  | .of.=gptel-make-ollama=.for.more | 
| 43a0 |  2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20    74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f  | ...You.can.pick.this.backend.fro | 
| 43c0 |  6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20    75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65  | m.the.menu.when.using.gptel.(see | 
| 43e0 |  20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65    5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69  | .[[#usage][Usage]])..*****.(Opti | 
| 4400 |  6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65    20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62  | onal).Set.as.the.default.gptel.b | 
| 4420 |  61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76    65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65  | ackend..The.above.code.makes.the | 
| 4440 |  20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62    6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49  | .backend.available.to.select...I | 
| 4460 |  66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f    20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20  | f.you.want.it.to.be.the.default. | 
| 4480 |  62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65    6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74  | backend.for.gptel,.you.can.set.t | 
| 44a0 |  68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65    20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65  | his.as.the.value.of.=gptel-backe | 
| 44c0 |  6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69    6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62  | nd=...Use.this.instead.of.the.ab | 
| 44e0 |  6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63    20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f  | ove..#+begin_src.emacs-lisp.;;.O | 
| 4500 |  50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72    61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74  | PTIONAL.configuration.(setq..gpt | 
| 4520 |  65 6c 2d 6d 6f 64 65 6c 20 27 6d 69 73 74 72 61    6c 3a 6c 61 74 65 73 74 0a 20 67 70 74 65 6c 2d  | el-model.'mistral:latest..gptel- | 
| 4540 |  62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d    61 6b 65 2d 6f 6c 6c 61 6d 61 20 22 4f 6c 6c 61  | backend.(gptel-make-ollama."Olla | 
| 4560 |  6d 61 22 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61  | ma"..................:host."loca | 
| 4580 |  6c 68 6f 73 74 3a 31 31 34 33 34 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73  | lhost:11434"..................:s | 
| 45a0 |  74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73  | tream.t..................:models | 
| 45c0 |  20 27 28 6d 69 73 74 72 61 6c 3a 6c 61 74 65 73    74 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a  | .'(mistral:latest))).#+end_src.. | 
| 45e0 |  23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c    73 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74  | #+html:.</details>..#+html:.<det | 
| 4600 |  61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a    2a 2a 2a 20 47 65 6d 69 6e 69 0a 23 2b 68 74 6d  | ails><summary>.****.Gemini.#+htm | 
| 4620 |  6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52    65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e  | l:.</summary>..Register.a.backen | 
| 4640 |  64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73    72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b  | d.with.#+begin_src.emacs-lisp.;; | 
| 4660 |  20 3a 6b 65 79 20 63 61 6e 20 62 65 20 61 20 66    75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74  | .:key.can.be.a.function.that.ret | 
| 4680 |  75 72 6e 73 20 74 68 65 20 41 50 49 20 6b 65 79    2e 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65  | urns.the.API.key..(gptel-make-ge | 
| 46a0 |  6d 69 6e 69 20 22 47 65 6d 69 6e 69 22 20 3a 6b    65 79 20 22 59 4f 55 52 5f 47 45 4d 49 4e 49 5f  | mini."Gemini".:key."YOUR_GEMINI_ | 
| 46c0 |  41 50 49 5f 4b 45 59 22 20 3a 73 74 72 65 61 6d    20 74 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 54 68  | API_KEY".:stream.t).#+end_src.Th | 
| 46e0 |  65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 75    69 72 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c  | ese.are.the.required.parameters, | 
| 4700 |  20 72 65 66 65 72 20 74 6f 20 74 68 65 20 64 6f    63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d  | .refer.to.the.documentation.of.= | 
| 4720 |  67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e    69 3d 20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 59 6f  | gptel-make-gemini=.for.more...Yo | 
| 4740 |  75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20    62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65  | u.can.pick.this.backend.from.the | 
| 4760 |  20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67    20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75  | .menu.when.using.gptel.(see.[[#u | 
| 4780 |  73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a 0a    2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29  | sage][Usage]])..*****.(Optional) | 
| 47a0 |  20 53 65 74 20 61 73 20 74 68 65 20 64 65 66 61    75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e  | .Set.as.the.default.gptel.backen | 
| 47c0 |  64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64    65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b  | d..The.above.code.makes.the.back | 
| 47e0 |  65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f    20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75  | end.available.to.select...If.you | 
| 4800 |  20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74    68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65  | .want.it.to.be.the.default.backe | 
| 4820 |  6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f    75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61  | nd.for.gptel,.you.can.set.this.a | 
| 4840 |  73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d    67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20  | s.the.value.of.=gptel-backend=.. | 
| 4860 |  20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65 61    64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a  | .Use.this.instead.of.the.above.. | 
| 4880 |  23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63    73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e  | #+begin_src.emacs-lisp.;;.OPTION | 
| 48a0 |  41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e    0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f  | AL.configuration.(setq..gptel-mo | 
| 48c0 |  64 65 6c 20 27 67 65 6d 69 6e 69 2d 32 2e 35 2d    70 72 6f 2d 65 78 70 2d 30 33 2d 32 35 0a 20 67  | del.'gemini-2.5-pro-exp-03-25..g | 
| 48e0 |  70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 67 70    74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 20  | ptel-backend.(gptel-make-gemini. | 
| 4900 |  22 47 65 6d 69 6e 69 22 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 22  | "Gemini"..................:key." | 
| 4920 |  59 4f 55 52 5f 47 45 4d 49 4e 49 5f 41 50 49 5f    4b 45 59 22 0a 20 20 20 20 20 20 20 20 20 20 20  | YOUR_GEMINI_API_KEY"............ | 
| 4940 |  20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 29    29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68  | ......:stream.t)).#+end_src..#+h | 
| 4960 |  74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a    0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c  | tml:.</details>..#+html:.<detail | 
| 4980 |  73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 73 75 6d 6d    61 72 79 3e 0a 2a 2a 2a 2a 20 4c 6c 61 6d 61 2e  | s>.#+html:.<summary>.****.Llama. | 
| 49a0 |  63 70 70 20 6f 72 20 4c 6c 61 6d 61 66 69 6c 65    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61  | cpp.or.Llamafile.#+html:.</summa | 
| 49c0 |  72 79 3e 0a 0a 28 49 66 20 75 73 69 6e 67 20 61    20 6c 6c 61 6d 61 66 69 6c 65 2c 20 72 75 6e 20  | ry>..(If.using.a.llamafile,.run. | 
| 49e0 |  61 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68    75 62 2e 63 6f 6d 2f 4d 6f 7a 69 6c 6c 61 2d 4f  | a.[[https://github.com/Mozilla-O | 
| 4a00 |  63 68 6f 2f 6c 6c 61 6d 61 66 69 6c 65 23 6f 74    68 65 72 2d 65 78 61 6d 70 6c 65 2d 6c 6c 61 6d  | cho/llamafile#other-example-llam | 
| 4a20 |  61 66 69 6c 65 73 5d 5b 73 65 72 76 65 72 20 6c    6c 61 6d 61 66 69 6c 65 5d 5d 20 69 6e 73 74 65  | afiles][server.llamafile]].inste | 
| 4a40 |  61 64 20 6f 66 20 61 20 22 63 6f 6d 6d 61 6e 64    2d 6c 69 6e 65 20 6c 6c 61 6d 61 66 69 6c 65 22  | ad.of.a."command-line.llamafile" | 
| 4a60 |  2c 20 61 6e 64 20 61 20 6d 6f 64 65 6c 20 74 68    61 74 20 73 75 70 70 6f 72 74 73 20 74 65 78 74  | ,.and.a.model.that.supports.text | 
| 4a80 |  20 67 65 6e 65 72 61 74 69 6f 6e 2e 29 0a 0a 52    65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e  | .generation.)..Register.a.backen | 
| 4aa0 |  64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73    72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b  | d.with.#+begin_src.emacs-lisp.;; | 
| 4ac0 |  20 4c 6c 61 6d 61 2e 63 70 70 20 6f 66 66 65 72    73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70  | .Llama.cpp.offers.an.OpenAI.comp | 
| 4ae0 |  61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74 65    6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 6c  | atible.API.(gptel-make-openai."l | 
| 4b00 |  6c 61 6d 61 2d 63 70 70 22 20 20 20 20 20 20 20    20 20 20 3b 41 6e 79 20 6e 61 6d 65 0a 20 20 3a  | lama-cpp"..........;Any.name...: | 
| 4b20 |  73 74 72 65 61 6d 20 74 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | stream.t........................ | 
| 4b40 |  20 20 20 20 20 3b 53 74 72 65 61 6d 20 72 65 73    70 6f 6e 73 65 73 0a 20 20 3a 70 72 6f 74 6f 63  | .....;Stream.responses...:protoc | 
| 4b60 |  6f 6c 20 22 68 74 74 70 22 0a 20 20 3a 68 6f 73    74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30  | ol."http"...:host."localhost:800 | 
| 4b80 |  30 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 4c 6c 61 6d 61 2e 63 70 70 20 73 65 72  | 0"................;Llama.cpp.ser | 
| 4ba0 |  76 65 72 20 6c 6f 63 61 74 69 6f 6e 0a 20 20 3a    6d 6f 64 65 6c 73 20 27 28 74 65 73 74 29 29 20  | ver.location...:models.'(test)). | 
| 4bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 41 6e 79 20 6e 61 6d 65 73 2c 20 64  | ...................;Any.names,.d | 
| 4be0 |  6f 65 73 6e 27 74 20 6d 61 74 74 65 72 20 66 6f    72 20 4c 6c 61 6d 61 0a 23 2b 65 6e 64 5f 73 72  | oesn't.matter.for.Llama.#+end_sr | 
| 4c00 |  63 0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20    72 65 71 75 69 72 65 64 20 70 61 72 61 6d 65 74  | c.These.are.the.required.paramet | 
| 4c20 |  65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68    65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  | ers,.refer.to.the.documentation. | 
| 4c40 |  6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f    70 65 6e 61 69 3d 20 66 6f 72 20 6d 6f 72 65 2e  | of.=gptel-make-openai=.for.more. | 
| 4c60 |  0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74    68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d  | ..You.can.pick.this.backend.from | 
| 4c80 |  20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75    73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20  | .the.menu.when.using.gptel.(see. | 
| 4ca0 |  5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d    5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f  | [[#usage][Usage]])..*****.(Optio | 
| 4cc0 |  6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20    64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61  | nal).Set.as.the.default.gptel.ba | 
| 4ce0 |  63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65    20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20  | ckend..The.above.code.makes.the. | 
| 4d00 |  62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c    65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66  | backend.available.to.select...If | 
| 4d20 |  20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20    62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62  | .you.want.it.to.be.the.default.b | 
| 4d40 |  61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c    2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68  | ackend.for.gptel,.you.can.set.th | 
| 4d60 |  69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20    6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e  | is.as.the.value.of.=gptel-backen | 
| 4d80 |  64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e    73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f  | d=...Use.this.instead.of.the.abo | 
| 4da0 |  76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20    65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50  | ve..#+begin_src.emacs-lisp.;;.OP | 
| 4dc0 |  54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61    74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74 65  | TIONAL.configuration.(setq..gpte | 
| 4de0 |  6c 2d 6d 6f 64 65 6c 20 20 20 27 74 65 73 74 0a    20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28  | l-model...'test..gptel-backend.( | 
| 4e00 |  67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61    69 20 22 6c 6c 61 6d 61 2d 63 70 70 22 0a 20 20  | gptel-make-openai."llama-cpp"... | 
| 4e20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20  | ...............:stream.t........ | 
| 4e40 |  20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f    63 6f 6c 20 22 68 74 74 70 22 0a 20 20 20 20 20  | ..........:protocol."http"...... | 
| 4e60 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73    74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30  | ............:host."localhost:800 | 
| 4e80 |  30 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 74 65  | 0"..................:models.'(te | 
| 4ea0 |  73 74 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69  | st))).#+end_src..#+html:.</detai | 
| 4ec0 |  6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74    61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a  | ls>.#+html:.<details><summary>.* | 
| 4ee0 |  2a 2a 2a 20 4b 61 67 69 20 28 46 61 73 74 47 50    54 20 26 20 53 75 6d 6d 61 72 69 7a 65 72 29 0a  | ***.Kagi.(FastGPT.&.Summarizer). | 
| 4f00 |  23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72    79 3e 0a 0a 4b 61 67 69 27 73 20 46 61 73 74 47  | #+html:.</summary>..Kagi's.FastG | 
| 4f20 |  50 54 20 6d 6f 64 65 6c 20 61 6e 64 20 74 68 65    20 55 6e 69 76 65 72 73 61 6c 20 53 75 6d 6d 61  | PT.model.and.the.Universal.Summa | 
| 4f40 |  72 69 7a 65 72 20 61 72 65 20 62 6f 74 68 20 73    75 70 70 6f 72 74 65 64 2e 20 20 41 20 63 6f 75  | rizer.are.both.supported...A.cou | 
| 4f60 |  70 6c 65 20 6f 66 20 6e 6f 74 65 73 3a 0a 0a 31    2e 20 55 6e 69 76 65 72 73 61 6c 20 53 75 6d 6d  | ple.of.notes:..1..Universal.Summ | 
| 4f80 |  61 72 69 7a 65 72 3a 20 49 66 20 74 68 65 72 65    20 69 73 20 61 20 55 52 4c 20 61 74 20 70 6f 69  | arizer:.If.there.is.a.URL.at.poi | 
| 4fa0 |  6e 74 2c 20 74 68 65 20 73 75 6d 6d 61 72 69 7a    65 72 20 77 69 6c 6c 20 73 75 6d 6d 61 72 69 7a  | nt,.the.summarizer.will.summariz | 
| 4fc0 |  65 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f    66 20 74 68 65 20 55 52 4c 2e 20 20 4f 74 68 65  | e.the.contents.of.the.URL...Othe | 
| 4fe0 |  72 77 69 73 65 20 74 68 65 20 63 6f 6e 74 65 78    74 20 73 65 6e 74 20 74 6f 20 74 68 65 20 6d 6f  | rwise.the.context.sent.to.the.mo | 
| 5000 |  64 65 6c 20 69 73 20 74 68 65 20 73 61 6d 65 20    61 73 20 61 6c 77 61 79 73 3a 20 74 68 65 20 62  | del.is.the.same.as.always:.the.b | 
| 5020 |  75 66 66 65 72 20 74 65 78 74 20 75 70 74 6f 20    70 6f 69 6e 74 2c 20 6f 72 20 74 68 65 20 63 6f  | uffer.text.upto.point,.or.the.co | 
| 5040 |  6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 72 65    67 69 6f 6e 20 69 66 20 74 68 65 20 72 65 67 69  | ntents.of.the.region.if.the.regi | 
| 5060 |  6f 6e 20 69 73 20 61 63 74 69 76 65 2e 0a 0a 32    2e 20 4b 61 67 69 20 6d 6f 64 65 6c 73 20 64 6f  | on.is.active...2..Kagi.models.do | 
| 5080 |  20 6e 6f 74 20 73 75 70 70 6f 72 74 20 6d 75 6c    74 69 2d 74 75 72 6e 20 63 6f 6e 76 65 72 73 61  | .not.support.multi-turn.conversa | 
| 50a0 |  74 69 6f 6e 73 2c 20 69 6e 74 65 72 61 63 74 69    6f 6e 73 20 61 72 65 20 22 6f 6e 65 2d 73 68 6f  | tions,.interactions.are."one-sho | 
| 50c0 |  74 22 2e 20 20 54 68 65 79 20 61 6c 73 6f 20 64    6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 74  | t"...They.also.do.not.support.st | 
| 50e0 |  72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65    73 2e 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62  | reaming.responses...Register.a.b | 
| 5100 |  61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65    67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69  | ackend.with.#+begin_src.emacs-li | 
| 5120 |  73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b    61 67 69 20 22 4b 61 67 69 22 20 20 20 20 20 20  | sp.(gptel-make-kagi."Kagi"...... | 
| 5140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 61    6e 79 20 6e 61 6d 65 0a 20 20 3a 6b 65 79 20 22  | ..............;any.name...:key." | 
| 5160 |  59 4f 55 52 5f 4b 41 47 49 5f 41 50 49 5f 4b 45    59 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20  | YOUR_KAGI_API_KEY")............. | 
| 5180 |  20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e    63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72  | ...;can.be.a.function.that.retur | 
| 51a0 |  6e 73 20 74 68 65 20 6b 65 79 0a 23 2b 65 6e 64    5f 73 72 63 0a 54 68 65 73 65 20 61 72 65 20 74  | ns.the.key.#+end_src.These.are.t | 
| 51c0 |  68 65 20 72 65 71 75 69 72 65 64 20 70 61 72 61    6d 65 74 65 72 73 2c 20 72 65 66 65 72 20 74 6f  | he.required.parameters,.refer.to | 
| 51e0 |  20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69    6f 6e 20 6f 66 20 3d 67 70 74 65 6c 2d 6d 61 6b  | .the.documentation.of.=gptel-mak | 
| 5200 |  65 2d 6b 61 67 69 3d 20 66 6f 72 20 6d 6f 72 65    2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20  | e-kagi=.for.more...You.can.pick. | 
| 5220 |  74 68 69 73 20 62 61 63 6b 65 6e 64 20 61 6e 64    20 74 68 65 20 6d 6f 64 65 6c 20 28 66 61 73 74  | this.backend.and.the.model.(fast | 
| 5240 |  67 70 74 2f 73 75 6d 6d 61 72 69 7a 65 72 29 20    66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 69 65  | gpt/summarizer).from.the.transie | 
| 5260 |  6e 74 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69    6e 67 20 67 70 74 65 6c 2e 0a 0a 2a 2a 2a 2a 2a  | nt.menu.when.using.gptel...***** | 
| 5280 |  20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20    61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67  | .(Optional).Set.as.the.default.g | 
| 52a0 |  70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68    65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b  | ptel.backend..The.above.code.mak | 
| 52c0 |  65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61    76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65  | es.the.backend.available.to.sele | 
| 52e0 |  63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74    20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65  | ct...If.you.want.it.to.be.the.de | 
| 5300 |  66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f    72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e  | fault.backend.for.gptel,.you.can | 
| 5320 |  20 73 65 74 20 74 68 69 73 20 61 73 20 74 68 65    20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c  | .set.this.as.the.value.of.=gptel | 
| 5340 |  2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20    74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20  | -backend=...Use.this.instead.of. | 
| 5360 |  74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67    69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73  | the.above..#+begin_src.emacs-lis | 
| 5380 |  70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f    6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74  | p.;;.OPTIONAL.configuration.(set | 
| 53a0 |  71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 27    66 61 73 74 67 70 74 0a 20 67 70 74 65 6c 2d 62  | q..gptel-model.'fastgpt..gptel-b | 
| 53c0 |  61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61    6b 65 2d 6b 61 67 69 20 22 4b 61 67 69 22 0a 20  | ackend.(gptel-make-kagi."Kagi".. | 
| 53e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 6b 65 79 20 22 59 4f 55 52 5f 4b 41 47 49 5f  | ................:key."YOUR_KAGI_ | 
| 5400 |  41 50 49 5f 4b 45 59 22 29 29 0a 23 2b 65 6e 64    5f 73 72 63 0a 0a 54 68 65 20 61 6c 74 65 72 6e  | API_KEY")).#+end_src..The.altern | 
| 5420 |  61 74 69 76 65 73 20 74 6f 20 3d 66 61 73 74 67    70 74 3d 20 69 6e 63 6c 75 64 65 20 3d 73 75 6d  | atives.to.=fastgpt=.include.=sum | 
| 5440 |  6d 61 72 69 7a 65 3a 63 65 63 69 6c 3d 2c 20 3d    73 75 6d 6d 61 72 69 7a 65 3a 61 67 6e 65 73 3d  | marize:cecil=,.=summarize:agnes= | 
| 5460 |  2c 20 3d 73 75 6d 6d 61 72 69 7a 65 3a 64 61 70    68 6e 65 3d 20 61 6e 64 20 3d 73 75 6d 6d 61 72  | ,.=summarize:daphne=.and.=summar | 
| 5480 |  69 7a 65 3a 6d 75 72 69 65 6c 3d 2e 20 20 54 68    65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74  | ize:muriel=...The.difference.bet | 
| 54a0 |  77 65 65 6e 20 74 68 65 20 73 75 6d 6d 61 72 69    7a 65 72 20 65 6e 67 69 6e 65 73 20 69 73 20 5b  | ween.the.summarizer.engines.is.[ | 
| 54c0 |  5b 68 74 74 70 73 3a 2f 2f 68 65 6c 70 2e 6b 61    67 69 2e 63 6f 6d 2f 6b 61 67 69 2f 61 70 69 2f  | [https://help.kagi.com/kagi/api/ | 
| 54e0 |  73 75 6d 6d 61 72 69 7a 65 72 2e 68 74 6d 6c 23    73 75 6d 6d 61 72 69 7a 61 74 69 6f 6e 2d 65 6e  | summarizer.html#summarization-en | 
| 5500 |  67 69 6e 65 73 5d 5b 64 6f 63 75 6d 65 6e 74 65    64 20 68 65 72 65 5d 5d 2e 0a 0a 23 2b 68 74 6d  | gines][documented.here]]...#+htm | 
| 5520 |  6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b    68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c  | l:.</details>.#+html:.<details>< | 
| 5540 |  73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 74 6f    67 65 74 68 65 72 2e 61 69 0a 23 2b 68 74 6d 6c  | summary>.****.together.ai.#+html | 
| 5560 |  3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65    67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e 64  | :.</summary>..Register.a.backend | 
| 5580 |  20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73 72    63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20  | .with.#+begin_src.emacs-lisp.;;. | 
| 55a0 |  54 6f 67 65 74 68 65 72 2e 61 69 20 6f 66 66 65    72 73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d  | Together.ai.offers.an.OpenAI.com | 
| 55c0 |  70 61 74 69 62 6c 65 20 41 50 49 0a 28 67 70 74    65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22  | patible.API.(gptel-make-openai." | 
| 55e0 |  54 6f 67 65 74 68 65 72 41 49 22 20 20 20 20 20    20 20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f  | TogetherAI".........;Any.name.yo | 
| 5600 |  75 20 77 61 6e 74 0a 20 20 3a 68 6f 73 74 20 22    61 70 69 2e 74 6f 67 65 74 68 65 72 2e 78 79 7a  | u.want...:host."api.together.xyz | 
| 5620 |  22 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61    70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20  | "...:key."your-api-key"......... | 
| 5640 |  20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62    65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61  | ..........;can.be.a.function.tha | 
| 5660 |  74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65    79 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20  | t.returns.the.key...:stream.t... | 
| 5680 |  3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20 68 61 73    20 6d 61 6e 79 20 6d 6f 72 65 2c 20 63 68 65 63  | :models.'(;;.has.many.more,.chec | 
| 56a0 |  6b 20 74 6f 67 65 74 68 65 72 2e 61 69 0a 20 20    20 20 20 20 20 20 20 20 20 20 6d 69 73 74 72 61  | k.together.ai.............mistra | 
| 56c0 |  6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42    2d 49 6e 73 74 72 75 63 74 2d 76 30 2e 31 0a 20  | lai/Mixtral-8x7B-Instruct-v0.1.. | 
| 56e0 |  20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 6c    6c 61 6d 61 2f 43 6f 64 65 4c 6c 61 6d 61 2d 31  | ...........codellama/CodeLlama-1 | 
| 5700 |  33 62 2d 49 6e 73 74 72 75 63 74 2d 68 66 0a 20    20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 6c  | 3b-Instruct-hf.............codel | 
| 5720 |  6c 61 6d 61 2f 43 6f 64 65 4c 6c 61 6d 61 2d 33    34 62 2d 49 6e 73 74 72 75 63 74 2d 68 66 29 29  | lama/CodeLlama-34b-Instruct-hf)) | 
| 5740 |  0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20    63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62 61  | .#+end_src..You.can.pick.this.ba | 
| 5760 |  63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d    65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20 67  | ckend.from.the.menu.when.using.g | 
| 5780 |  70 74 65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61    67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a  | ptel.(see.[[#usage][Usage]])..** | 
| 57a0 |  2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53    65 74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c  | ***.(Optional).Set.as.the.defaul | 
| 57c0 |  74 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a    0a 54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20  | t.gptel.backend..The.above.code. | 
| 57e0 |  6d 61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e    64 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73  | makes.the.backend.available.to.s | 
| 5800 |  65 6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77    61 6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65  | elect...If.you.want.it.to.be.the | 
| 5820 |  20 64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64    20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20  | .default.backend.for.gptel,.you. | 
| 5840 |  63 61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20    74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70  | can.set.this.as.the.value.of.=gp | 
| 5860 |  74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55    73 65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20  | tel-backend=...Use.this.instead. | 
| 5880 |  6f 66 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b    62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d  | of.the.above..#+begin_src.emacs- | 
| 58a0 |  6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c    20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28  | lisp.;;.OPTIONAL.configuration.( | 
| 58c0 |  73 65 74 71 0a 20 67 70 74 65 6c 2d 6d 6f 64 65    6c 20 20 20 27 6d 69 73 74 72 61 6c 61 69 2f 4d  | setq..gptel-model...'mistralai/M | 
| 58e0 |  69 78 74 72 61 6c 2d 38 78 37 42 2d 49 6e 73 74    72 75 63 74 2d 76 30 2e 31 0a 20 67 70 74 65 6c  | ixtral-8x7B-Instruct-v0.1..gptel | 
| 5900 |  2d 62 61 63 6b 65 6e 64 0a 20 28 67 70 74 65 6c    2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 54 6f  | -backend..(gptel-make-openai."To | 
| 5920 |  67 65 74 68 65 72 41 49 22 20 20 20 20 20 20 20    20 20 0a 20 20 20 3a 68 6f 73 74 20 22 61 70 69  | getherAI".............:host."api | 
| 5940 |  2e 74 6f 67 65 74 68 65 72 2e 78 79 7a 22 0a 20    20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69  | .together.xyz"....:key."your-api | 
| 5960 |  2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 0a 20 20 20 3a 73 74 72  | -key".......................:str | 
| 5980 |  65 61 6d 20 74 0a 20 20 20 3a 6d 6f 64 65 6c 73    20 27 28 3b 3b 20 68 61 73 20 6d 61 6e 79 20 6d  | eam.t....:models.'(;;.has.many.m | 
| 59a0 |  6f 72 65 2c 20 63 68 65 63 6b 20 74 6f 67 65 74    68 65 72 2e 61 69 0a 20 20 20 20 20 20 20 20 20  | ore,.check.together.ai.......... | 
| 59c0 |  20 20 20 20 6d 69 73 74 72 61 6c 61 69 2f 4d 69    78 74 72 61 6c 2d 38 78 37 42 2d 49 6e 73 74 72  | ....mistralai/Mixtral-8x7B-Instr | 
| 59e0 |  75 63 74 2d 76 30 2e 31 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 63 6f 64 65 6c 6c 61 6d 61 2f  | uct-v0.1..............codellama/ | 
| 5a00 |  43 6f 64 65 4c 6c 61 6d 61 2d 31 33 62 2d 49 6e    73 74 72 75 63 74 2d 68 66 0a 20 20 20 20 20 20  | CodeLlama-13b-Instruct-hf....... | 
| 5a20 |  20 20 20 20 20 20 20 63 6f 64 65 6c 6c 61 6d 61    2f 43 6f 64 65 4c 6c 61 6d 61 2d 33 34 62 2d 49  | .......codellama/CodeLlama-34b-I | 
| 5a40 |  6e 73 74 72 75 63 74 2d 68 66 29 29 29 0a 23 2b    65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a  | nstruct-hf))).#+end_src..#+html: | 
| 5a60 |  20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74    6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75  | .</details>.#+html:.<details><su | 
| 5a80 |  6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 41 6e 79 73    63 61 6c 65 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73  | mmary>.****.Anyscale.#+html:.</s | 
| 5aa0 |  75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65    72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68  | ummary>..Register.a.backend.with | 
| 5ac0 |  0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61    63 73 2d 6c 69 73 70 0a 3b 3b 20 41 6e 79 73 63  | .#+begin_src.emacs-lisp.;;.Anysc | 
| 5ae0 |  61 6c 65 20 6f 66 66 65 72 73 20 61 6e 20 4f 70    65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20  | ale.offers.an.OpenAI.compatible. | 
| 5b00 |  41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d    6f 70 65 6e 61 69 20 22 41 6e 79 73 63 61 6c 65  | API.(gptel-make-openai."Anyscale | 
| 5b20 |  22 20 20 20 20 20 20 20 20 20 20 20 3b 41 6e 79    20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20  | "...........;Any.name.you.want.. | 
| 5b40 |  20 3a 68 6f 73 74 20 22 61 70 69 2e 65 6e 64 70    6f 69 6e 74 73 2e 61 6e 79 73 63 61 6c 65 2e 63  | .:host."api.endpoints.anyscale.c | 
| 5b60 |  6f 6d 22 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72    2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20 20  | om"...:key."your-api-key"....... | 
| 5b80 |  20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e    20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74  | ............;can.be.a.function.t | 
| 5ba0 |  68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20    6b 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28  | hat.returns.the.key...:models.'( | 
| 5bc0 |  3b 3b 20 68 61 73 20 6d 61 6e 79 20 6d 6f 72 65    2c 20 63 68 65 63 6b 20 61 6e 79 73 63 61 6c 65  | ;;.has.many.more,.check.anyscale | 
| 5be0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 73    74 72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38  | .............mistralai/Mixtral-8 | 
| 5c00 |  78 37 42 2d 49 6e 73 74 72 75 63 74 2d 76 30 2e    31 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59  | x7B-Instruct-v0.1)).#+end_src..Y | 
| 5c20 |  6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73    20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68  | ou.can.pick.this.backend.from.th | 
| 5c40 |  65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e    67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23  | e.menu.when.using.gptel.(see.[[# | 
| 5c60 |  75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a    0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c  | usage][Usage]])..*****.(Optional | 
| 5c80 |  29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66    61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65  | ).Set.as.the.default.gptel.backe | 
| 5ca0 |  6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f    64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63  | nd..The.above.code.makes.the.bac | 
| 5cc0 |  6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74    6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f  | kend.available.to.select...If.yo | 
| 5ce0 |  75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20    74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b  | u.want.it.to.be.the.default.back | 
| 5d00 |  65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79    6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20  | end.for.gptel,.you.can.set.this. | 
| 5d20 |  61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20    3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e  | as.the.value.of.=gptel-backend=. | 
| 5d40 |  20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65    61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e  | ..Use.this.instead.of.the.above. | 
| 5d60 |  0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61    63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f  | .#+begin_src.emacs-lisp.;;.OPTIO | 
| 5d80 |  4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f    6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d  | NAL.configuration.(setq..gptel-m | 
| 5da0 |  6f 64 65 6c 20 20 20 27 6d 69 73 74 72 61 6c 61    69 2f 4d 69 78 74 72 61 6c 2d 38 78 37 42 2d 49  | odel...'mistralai/Mixtral-8x7B-I | 
| 5dc0 |  6e 73 74 72 75 63 74 2d 76 30 2e 31 0a 20 67 70    74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 28 67 70  | nstruct-v0.1..gptel-backend..(gp | 
| 5de0 |  74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20    22 41 6e 79 73 63 61 6c 65 22 0a 20 20 20 20 20  | tel-make-openai."Anyscale"...... | 
| 5e00 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73    74 20 22 61 70 69 2e 65 6e 64 70 6f 69 6e 74 73  | ............:host."api.endpoints | 
| 5e20 |  2e 61 6e 79 73 63 61 6c 65 2e 63 6f 6d 22 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .anyscale.com".................. | 
| 5e40 |  3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b    65 79 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  | :key."your-api-key"............. | 
| 5e60 |  20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 3b    3b 20 68 61 73 20 6d 61 6e 79 20 6d 6f 72 65 2c  | .....:models.'(;;.has.many.more, | 
| 5e80 |  20 63 68 65 63 6b 20 61 6e 79 73 63 61 6c 65 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .check.anyscale................. | 
| 5ea0 |  20 20 20 20 20 20 20 20 20 20 20 6d 69 73 74 72    61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78 37  | ...........mistralai/Mixtral-8x7 | 
| 5ec0 |  42 2d 49 6e 73 74 72 75 63 74 2d 76 30 2e 31 29    29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b  | B-Instruct-v0.1))).#+end_src..#+ | 
| 5ee0 |  68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e    0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c  | html:.</details>.#+html:.<detail | 
| 5f00 |  73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a    20 50 65 72 70 6c 65 78 69 74 79 0a 23 2b 68 74  | s><summary>.****.Perplexity.#+ht | 
| 5f20 |  6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a    52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65  | ml:.</summary>..Register.a.backe | 
| 5f40 |  6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f    73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28  | nd.with.#+begin_src.emacs-lisp.( | 
| 5f60 |  67 70 74 65 6c 2d 6d 61 6b 65 2d 70 65 72 70 6c    65 78 69 74 79 20 22 50 65 72 70 6c 65 78 69 74  | gptel-make-perplexity."Perplexit | 
| 5f80 |  79 22 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65    20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 6b 65 79  | y".....;Any.name.you.want...:key | 
| 5fa0 |  20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ."your-api-key"................. | 
| 5fc0 |  20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63    74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e  | ..;can.be.a.function.that.return | 
| 5fe0 |  73 20 74 68 65 20 6b 65 79 0a 20 20 3a 73 74 72    65 61 6d 20 74 29 20 20 20 20 20 20 20 20 20 20  | s.the.key...:stream.t).......... | 
| 6000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 49 66 20 79 6f 75 20 77 61 6e 74 20 72  | ..................;If.you.want.r | 
| 6020 |  65 73 70 6f 6e 73 65 73 20 74 6f 20 62 65 20 73    74 72 65 61 6d 65 64 0a 23 2b 65 6e 64 5f 73 72  | esponses.to.be.streamed.#+end_sr | 
| 6040 |  63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20    74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f  | c..You.can.pick.this.backend.fro | 
| 6060 |  6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20    75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65  | m.the.menu.when.using.gptel.(see | 
| 6080 |  20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65    5d 5d 29 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69  | .[[#usage][Usage]])..*****.(Opti | 
| 60a0 |  6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65    20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62  | onal).Set.as.the.default.gptel.b | 
| 60c0 |  61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76    65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65  | ackend..The.above.code.makes.the | 
| 60e0 |  20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62    6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49  | .backend.available.to.select...I | 
| 6100 |  66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f    20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20  | f.you.want.it.to.be.the.default. | 
| 6120 |  62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65    6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74  | backend.for.gptel,.you.can.set.t | 
| 6140 |  68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65    20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65  | his.as.the.value.of.=gptel-backe | 
| 6160 |  6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69    6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62  | nd=...Use.this.instead.of.the.ab | 
| 6180 |  6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63    20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f  | ove..#+begin_src.emacs-lisp.;;.O | 
| 61a0 |  50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72    61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67 70 74  | PTIONAL.configuration.(setq..gpt | 
| 61c0 |  65 6c 2d 6d 6f 64 65 6c 20 20 20 27 73 6f 6e 61    72 0a 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64  | el-model...'sonar..gptel-backend | 
| 61e0 |  20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 65 72    70 6c 65 78 69 74 79 20 22 50 65 72 70 6c 65 78  | .(gptel-make-perplexity."Perplex | 
| 6200 |  69 74 79 22 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75 72  | ity"..................:key."your | 
| 6220 |  2d 61 70 69 2d 6b 65 79 22 20 3a 73 74 72 65 61    6d 20 74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a  | -api-key".:stream.t)).#+end_src. | 
| 6240 |  0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69    6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74  | .#+html:.</details>.#+html:.<det | 
| 6260 |  61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a    2a 2a 2a 20 41 6e 74 68 72 6f 70 69 63 20 28 43  | ails><summary>.****.Anthropic.(C | 
| 6280 |  6c 61 75 64 65 29 0a 23 2b 68 74 6d 6c 3a 20 3c    2f 73 75 6d 6d 61 72 79 3e 0a 52 65 67 69 73 74  | laude).#+html:.</summary>.Regist | 
| 62a0 |  65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74    68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d  | er.a.backend.with.#+begin_src.em | 
| 62c0 |  61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d    6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 20 22  | acs-lisp.(gptel-make-anthropic." | 
| 62e0 |  43 6c 61 75 64 65 22 20 20 20 20 20 20 20 20 20    20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77  | Claude"..........;Any.name.you.w | 
| 6300 |  61 6e 74 0a 20 20 3a 73 74 72 65 61 6d 20 74 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ant...:stream.t................. | 
| 6320 |  20 20 20 20 20 20 20 20 20 20 20 20 3b 53 74 72    65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73  | ............;Streaming.responses | 
| 6340 |  0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70    69 2d 6b 65 79 22 29 0a 23 2b 65 6e 64 5f 73 72  | ...:key."your-api-key").#+end_sr | 
| 6360 |  63 0a 54 68 65 20 3d 3a 6b 65 79 3d 20 63 61 6e    20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74  | c.The.=:key=.can.be.a.function.t | 
| 6380 |  68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20    6b 65 79 20 28 6d 6f 72 65 20 73 65 63 75 72 65  | hat.returns.the.key.(more.secure | 
| 63a0 |  29 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b    20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66 72  | )...You.can.pick.this.backend.fr | 
| 63c0 |  6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e    20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73 65  | om.the.menu.when.using.gptel.(se | 
| 63e0 |  65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67    65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70  | e.[[#usage][Usage]])...*****.(Op | 
| 6400 |  74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74    68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65 6c  | tional).Set.as.the.default.gptel | 
| 6420 |  20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62    6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74  | .backend..The.above.code.makes.t | 
| 6440 |  68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c    61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20  | he.backend.available.to.select.. | 
| 6460 |  20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74 20    74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75 6c  | .If.you.want.it.to.be.the.defaul | 
| 6480 |  74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70    74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74  | t.backend.for.gptel,.you.can.set | 
| 64a0 |  20 74 68 69 73 20 61 73 20 74 68 65 20 76 61 6c    75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63  | .this.as.the.value.of.=gptel-bac | 
| 64c0 |  6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73    20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20  | kend=...Use.this.instead.of.the. | 
| 64e0 |  61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73    72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b  | above..#+begin_src.emacs-lisp.;; | 
| 6500 |  20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67    75 72 61 74 69 6f 6e 0a 28 73 65 74 71 0a 20 67  | .OPTIONAL.configuration.(setq..g | 
| 6520 |  70 74 65 6c 2d 6d 6f 64 65 6c 20 27 63 6c 61 75    64 65 2d 33 2d 73 6f 6e 6e 65 74 2d 32 30 32 34  | ptel-model.'claude-3-sonnet-2024 | 
| 6540 |  30 32 32 39 20 3b 20 20 22 63 6c 61 75 64 65 2d    33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39 22  | 0229.;.."claude-3-opus-20240229" | 
| 6560 |  20 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 0a    20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28  | .also.available..gptel-backend.( | 
| 6580 |  67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72    6f 70 69 63 20 22 43 6c 61 75 64 65 22 0a 20 20  | gptel-make-anthropic."Claude"... | 
| 65a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    73 74 72 65 61 6d 20 74 20 3a 6b 65 79 20 22 79  | ...............:stream.t.:key."y | 
| 65c0 |  6f 75 72 2d 61 70 69 2d 6b 65 79 22 29 29 0a 23    2b 65 6e 64 5f 73 72 63 0a 0a 2a 2a 2a 2a 2a 20  | our-api-key")).#+end_src..*****. | 
| 65e0 |  28 4f 70 74 69 6f 6e 61 6c 29 20 49 6e 74 65 72    69 6d 20 73 75 70 70 6f 72 74 20 66 6f 72 20 43  | (Optional).Interim.support.for.C | 
| 6600 |  6c 61 75 64 65 20 33 2e 37 20 53 6f 6e 6e 65 74    0a 0a 54 6f 20 75 73 65 20 43 6c 61 75 64 65 20  | laude.3.7.Sonnet..To.use.Claude. | 
| 6620 |  33 2e 37 20 53 6f 6e 6e 65 74 20 6d 6f 64 65 6c    20 69 6e 20 69 74 73 20 22 74 68 69 6e 6b 69 6e  | 3.7.Sonnet.model.in.its."thinkin | 
| 6640 |  67 22 20 6d 6f 64 65 2c 20 79 6f 75 20 63 61 6e    20 64 65 66 69 6e 65 20 61 20 73 65 63 6f 6e 64  | g".mode,.you.can.define.a.second | 
| 6660 |  20 43 6c 61 75 64 65 20 62 61 63 6b 65 6e 64 20    61 6e 64 20 73 65 6c 65 63 74 20 69 74 20 76 69  | .Claude.backend.and.select.it.vi | 
| 6680 |  61 20 74 68 65 20 55 49 20 6f 72 20 65 6c 69 73    70 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20  | a.the.UI.or.elisp:..#+begin_src. | 
| 66a0 |  65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65    6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63  | emacs-lisp.(gptel-make-anthropic | 
| 66c0 |  20 22 43 6c 61 75 64 65 2d 74 68 69 6e 6b 69 6e    67 22 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75  | ."Claude-thinking".;Any.name.you | 
| 66e0 |  20 77 61 6e 74 0a 20 20 3a 6b 65 79 20 22 79 6f    75 72 2d 41 50 49 2d 6b 65 79 22 0a 20 20 3a 73  | .want...:key."your-API-key"...:s | 
| 6700 |  74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c    73 20 27 28 63 6c 61 75 64 65 2d 33 2d 37 2d 73  | tream.t...:models.'(claude-3-7-s | 
| 6720 |  6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 29 0a    20 20 3a 68 65 61 64 65 72 20 28 6c 61 6d 62 64  | onnet-20250219)...:header.(lambd | 
| 6740 |  61 20 28 29 20 28 77 68 65 6e 2d 6c 65 74 2a 20    28 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d 67 65  | a.().(when-let*.((key.(gptel--ge | 
| 6760 |  74 2d 61 70 69 2d 6b 65 79 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60  | t-api-key)))...................` | 
| 6780 |  28 28 22 78 2d 61 70 69 2d 6b 65 79 22 20 2e 20    2c 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20  | (("x-api-key"...,key)........... | 
| 67a0 |  20 20 20 20 20 20 20 20 20 20 28 22 61 6e 74 68    72 6f 70 69 63 2d 76 65 72 73 69 6f 6e 22 20 2e  | ..........("anthropic-version".. | 
| 67c0 |  20 22 32 30 32 33 2d 30 36 2d 30 31 22 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ."2023-06-01").................. | 
| 67e0 |  20 20 20 28 22 61 6e 74 68 72 6f 70 69 63 2d 62    65 74 61 22 20 2e 20 22 70 64 66 73 2d 32 30 32  | ...("anthropic-beta"..."pdfs-202 | 
| 6800 |  34 2d 30 39 2d 32 35 22 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22  | 4-09-25").....................(" | 
| 6820 |  61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20    2e 20 22 6f 75 74 70 75 74 2d 31 32 38 6b 2d 32  | anthropic-beta"..."output-128k-2 | 
| 6840 |  30 32 35 2d 30 32 2d 31 39 22 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | 025-02-19")..................... | 
| 6860 |  28 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 74 61    22 20 2e 20 22 70 72 6f 6d 70 74 2d 63 61 63 68  | ("anthropic-beta"..."prompt-cach | 
| 6880 |  69 6e 67 2d 32 30 32 34 2d 30 37 2d 33 31 22 29    29 29 29 0a 20 20 3a 72 65 71 75 65 73 74 2d 70  | ing-2024-07-31"))))...:request-p | 
| 68a0 |  61 72 61 6d 73 20 27 28 3a 74 68 69 6e 6b 69 6e    67 20 28 3a 74 79 70 65 20 22 65 6e 61 62 6c 65  | arams.'(:thinking.(:type."enable | 
| 68c0 |  64 22 20 3a 62 75 64 67 65 74 5f 74 6f 6b 65 6e    73 20 32 30 34 38 29 0a 20 20 20 20 20 20 20 20  | d".:budget_tokens.2048)......... | 
| 68e0 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78    5f 74 6f 6b 65 6e 73 20 34 30 39 36 29 29 0a 23  | ............:max_tokens.4096)).# | 
| 6900 |  2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61    6e 20 73 65 74 20 74 68 65 20 72 65 61 73 6f 6e  | +end_src..You.can.set.the.reason | 
| 6920 |  69 6e 67 20 62 75 64 67 65 74 20 74 6f 6b 65 6e    73 20 61 6e 64 20 6d 61 78 20 74 6f 6b 65 6e 73  | ing.budget.tokens.and.max.tokens | 
| 6940 |  20 66 6f 72 20 74 68 69 73 20 75 73 61 67 65 20    76 69 61 20 74 68 65 20 3d 3a 62 75 64 67 65 74  | .for.this.usage.via.the.=:budget | 
| 6960 |  5f 74 6f 6b 65 6e 73 3d 20 61 6e 64 20 3d 3a 6d    61 78 5f 74 6f 6b 65 6e 73 3d 20 6b 65 79 73 20  | _tokens=.and.=:max_tokens=.keys. | 
| 6980 |  68 65 72 65 2c 20 72 65 73 70 65 63 74 69 76 65    6c 79 2e 0a 0a 59 6f 75 20 63 61 6e 20 63 6f 6e  | here,.respectively...You.can.con | 
| 69a0 |  74 72 6f 6c 20 77 68 65 74 68 65 72 2f 68 6f 77    20 74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 6f  | trol.whether/how.the.reasoning.o | 
| 69c0 |  75 74 70 75 74 20 69 73 20 73 68 6f 77 6e 20 76    69 61 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 20  | utput.is.shown.via.gptel's.menu. | 
| 69e0 |  6f 72 20 3d 67 70 74 65 6c 2d 69 6e 63 6c 75 64    65 2d 72 65 61 73 6f 6e 69 6e 67 3d 2c 20 73 65  | or.=gptel-include-reasoning=,.se | 
| 6a00 |  65 20 5b 5b 23 68 61 6e 64 6c 65 2d 72 65 61 73    6f 6e 69 6e 67 2d 63 6f 6e 74 65 6e 74 5d 5b 68  | e.[[#handle-reasoning-content][h | 
| 6a20 |  61 6e 64 6c 69 6e 67 20 72 65 61 73 6f 6e 69 6e    67 20 63 6f 6e 74 65 6e 74 5d 5d 2e 20 0a 0a 23  | andling.reasoning.content]]....# | 
| 6a40 |  2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73    3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69  | +html:.</details>.#+html:.<detai | 
| 6a60 |  6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a    2a 20 47 72 6f 71 0a 23 2b 68 74 6d 6c 3a 20 3c  | ls><summary>.****.Groq.#+html:.< | 
| 6a80 |  2f 73 75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73    74 65 72 20 61 20 62 61 63 6b 65 6e 64 20 77 69  | /summary>..Register.a.backend.wi | 
| 6aa0 |  74 68 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65    6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 47 72 6f  | th.#+begin_src.emacs-lisp.;;.Gro | 
| 6ac0 |  71 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e    41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50  | q.offers.an.OpenAI.compatible.AP | 
| 6ae0 |  49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70    65 6e 61 69 20 22 47 72 6f 71 22 20 20 20 20 20  | I.(gptel-make-openai."Groq"..... | 
| 6b00 |  20 20 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e    61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a  | ..........;Any.name.you.want...: | 
| 6b20 |  68 6f 73 74 20 22 61 70 69 2e 67 72 6f 71 2e 63    6f 6d 22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20  | host."api.groq.com"...:endpoint. | 
| 6b40 |  22 2f 6f 70 65 6e 61 69 2f 76 31 2f 63 68 61 74    2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20  | "/openai/v1/chat/completions"... | 
| 6b60 |  3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6b 65 79    20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20  | :stream.t...:key."your-api-key". | 
| 6b80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63  | ..................;can.be.a.func | 
| 6ba0 |  74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e    73 20 74 68 65 20 6b 65 79 0a 20 20 3a 6d 6f 64  | tion.that.returns.the.key...:mod | 
| 6bc0 |  65 6c 73 20 27 28 6c 6c 61 6d 61 2d 33 2e 31 2d    37 30 62 2d 76 65 72 73 61 74 69 6c 65 0a 20 20  | els.'(llama-3.1-70b-versatile... | 
| 6be0 |  20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61 2d    33 2e 31 2d 38 62 2d 69 6e 73 74 61 6e 74 0a 20  | ..........llama-3.1-8b-instant.. | 
| 6c00 |  20 20 20 20 20 20 20 20 20 20 20 6c 6c 61 6d 61    33 2d 37 30 62 2d 38 31 39 32 0a 20 20 20 20 20  | ...........llama3-70b-8192...... | 
| 6c20 |  20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2d 38 62    2d 38 31 39 32 0a 20 20 20 20 20 20 20 20 20 20  | .......llama3-8b-8192........... | 
| 6c40 |  20 20 6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 33    32 37 36 38 0a 20 20 20 20 20 20 20 20 20 20 20  | ..mixtral-8x7b-32768............ | 
| 6c60 |  20 67 65 6d 6d 61 2d 37 62 2d 69 74 29 29 0a 23    2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61  | .gemma-7b-it)).#+end_src..You.ca | 
| 6c80 |  6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b    65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e  | n.pick.this.backend.from.the.men | 
| 6ca0 |  75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74    65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65  | u.when.using.gptel.(see.[[#usage | 
| 6cc0 |  5d 5b 55 73 61 67 65 5d 5d 29 2e 20 20 4e 6f 74    65 20 74 68 61 74 20 47 72 6f 71 20 69 73 20 66  | ][Usage]])...Note.that.Groq.is.f | 
| 6ce0 |  61 73 74 20 65 6e 6f 75 67 68 20 74 68 61 74 20    79 6f 75 20 63 6f 75 6c 64 20 65 61 73 69 6c 79  | ast.enough.that.you.could.easily | 
| 6d00 |  20 73 65 74 20 3d 3a 73 74 72 65 61 6d 20 6e 69    6c 3d 20 61 6e 64 20 73 74 69 6c 6c 20 67 65 74  | .set.=:stream.nil=.and.still.get | 
| 6d20 |  20 6e 65 61 72 2d 69 6e 73 74 61 6e 74 20 72 65    73 70 6f 6e 73 65 73 2e 0a 0a 2a 2a 2a 2a 2a 20  | .near-instant.responses...*****. | 
| 6d40 |  28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61    73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70  | (Optional).Set.as.the.default.gp | 
| 6d60 |  74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65    20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65  | tel.backend..The.above.code.make | 
| 6d80 |  73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76    61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63  | s.the.backend.available.to.selec | 
| 6da0 |  74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20    69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66  | t...If.you.want.it.to.be.the.def | 
| 6dc0 |  61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72    20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20  | ault.backend.for.gptel,.you.can. | 
| 6de0 |  73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20    76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d  | set.this.as.the.value.of.=gptel- | 
| 6e00 |  62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74    68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74  | backend=...Use.this.instead.of.t | 
| 6e20 |  68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69    6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70  | he.above..#+begin_src.emacs-lisp | 
| 6e40 |  0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e    66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71  | .;;.OPTIONAL.configuration.(setq | 
| 6e60 |  20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27    6d 69 78 74 72 61 6c 2d 38 78 37 62 2d 33 32 37  | .gptel-model...'mixtral-8x7b-327 | 
| 6e80 |  36 38 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62    61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67 70  | 68.......gptel-backend.......(gp | 
| 6ea0 |  74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20    22 47 72 6f 71 22 0a 20 20 20 20 20 20 20 20 3a  | tel-make-openai."Groq".........: | 
| 6ec0 |  68 6f 73 74 20 22 61 70 69 2e 67 72 6f 71 2e 63    6f 6d 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64  | host."api.groq.com".........:end | 
| 6ee0 |  70 6f 69 6e 74 20 22 2f 6f 70 65 6e 61 69 2f 76    31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f  | point."/openai/v1/chat/completio | 
| 6f00 |  6e 73 22 0a 20 20 20 20 20 20 20 20 3a 73 74 72    65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 3a 6b  | ns".........:stream.t.........:k | 
| 6f20 |  65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79    22 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c  | ey."your-api-key".........:model | 
| 6f40 |  73 20 27 28 6c 6c 61 6d 61 2d 33 2e 31 2d 37 30    62 2d 76 65 72 73 61 74 69 6c 65 0a 20 20 20 20  | s.'(llama-3.1-70b-versatile..... | 
| 6f60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6c    61 6d 61 2d 33 2e 31 2d 38 62 2d 69 6e 73 74 61  | ..............llama-3.1-8b-insta | 
| 6f80 |  6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 6c 6c 61 6d 61 33 2d 37 30 62 2d  | nt...................llama3-70b- | 
| 6fa0 |  38 31 39 32 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2d 38 62  | 8192...................llama3-8b | 
| 6fc0 |  2d 38 31 39 32 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 6d 69 78 74 72 61 6c 2d  | -8192...................mixtral- | 
| 6fe0 |  38 78 37 62 2d 33 32 37 36 38 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 6d  | 8x7b-32768...................gem | 
| 7000 |  6d 61 2d 37 62 2d 69 74 29 29 29 0a 23 2b 65 6e    64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c  | ma-7b-it))).#+end_src..#+html:.< | 
| 7020 |  2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b 68 74 6d    6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d  | /details>..#+html:.<details><sum | 
| 7040 |  6d 61 72 79 3e 0a 2a 2a 2a 2a 20 4d 69 73 74 72    61 6c 20 4c 65 20 43 68 61 74 0a 23 2b 68 74 6d  | mary>.****.Mistral.Le.Chat.#+htm | 
| 7060 |  6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 52    65 67 69 73 74 65 72 20 61 20 62 61 63 6b 65 6e  | l:.</summary>..Register.a.backen | 
| 7080 |  64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e 5f 73    72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b  | d.with.#+begin_src.emacs-lisp.;; | 
| 70a0 |  20 4d 69 73 74 72 61 6c 20 6f 66 66 65 72 73 20    61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70 61 74  | .Mistral.offers.an.OpenAI.compat | 
| 70c0 |  69 62 6c 65 20 41 50 49 0a 28 67 70 74 65 6c 2d    6d 61 6b 65 2d 6f 70 65 6e 61 69 20 22 4d 69 73  | ible.API.(gptel-make-openai."Mis | 
| 70e0 |  74 72 61 6c 4c 65 43 68 61 74 22 20 20 3b 41 6e    79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a  | tralLeChat"..;Any.name.you.want. | 
| 7100 |  20 20 3a 68 6f 73 74 20 22 61 70 69 2e 6d 69 73    74 72 61 6c 2e 61 69 22 0a 20 20 3a 65 6e 64 70  | ..:host."api.mistral.ai"...:endp | 
| 7120 |  6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63    6f 6d 70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 70  | oint."/v1/chat/completions"...:p | 
| 7140 |  72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 0a    20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69  | rotocol."https"...:key."your-api | 
| 7160 |  2d 6b 65 79 22 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75  | -key"...............;can.be.a.fu | 
| 7180 |  6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75    72 6e 73 20 74 68 65 20 6b 65 79 0a 20 20 3a 6d  | nction.that.returns.the.key...:m | 
| 71a0 |  6f 64 65 6c 73 20 27 28 22 6d 69 73 74 72 61 6c    2d 73 6d 61 6c 6c 22 29 29 0a 23 2b 65 6e 64 5f  | odels.'("mistral-small")).#+end_ | 
| 71c0 |  73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63    6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66  | src..You.can.pick.this.backend.f | 
| 71e0 |  72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65    6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73  | rom.the.menu.when.using.gptel.(s | 
| 7200 |  65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61    67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f  | ee.[[#usage][Usage]])...*****.(O | 
| 7220 |  70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20    74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65  | ptional).Set.as.the.default.gpte | 
| 7240 |  6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61    62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20  | l.backend..The.above.code.makes. | 
| 7260 |  74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69    6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e  | the.backend.available.to.select. | 
| 7280 |  20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74    20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75  | ..If.you.want.it.to.be.the.defau | 
| 72a0 |  6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67    70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65  | lt.backend.for.gptel,.you.can.se | 
| 72c0 |  74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61    6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61  | t.this.as.the.value.of.=gptel-ba | 
| 72e0 |  63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69    73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65  | ckend=...Use.this.instead.of.the | 
| 7300 |  20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f    73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b  | .above..#+begin_src.emacs-lisp.; | 
| 7320 |  3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69    67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67  | ;.OPTIONAL.configuration.(setq.g | 
| 7340 |  70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 6d 69    73 74 72 61 6c 2d 73 6d 61 6c 6c 0a 20 20 20 20  | ptel-model...'mistral-small..... | 
| 7360 |  20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a    20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b  | ..gptel-backend.......(gptel-mak | 
| 7380 |  65 2d 6f 70 65 6e 61 69 20 22 4d 69 73 74 72 61    6c 4c 65 43 68 61 74 22 20 20 3b 41 6e 79 20 6e  | e-openai."MistralLeChat"..;Any.n | 
| 73a0 |  61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 20    20 20 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e  | ame.you.want.........:host."api. | 
| 73c0 |  6d 69 73 74 72 61 6c 2e 61 69 22 0a 20 20 20 20    20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f  | mistral.ai".........:endpoint."/ | 
| 73e0 |  76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69    6f 6e 73 22 0a 20 20 20 20 20 20 20 20 3a 70 72  | v1/chat/completions".........:pr | 
| 7400 |  6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 0a 20    20 20 20 20 20 20 20 3a 6b 65 79 20 22 79 6f 75  | otocol."https".........:key."you | 
| 7420 |  72 2d 61 70 69 2d 6b 65 79 22 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62 65  | r-api-key"...............;can.be | 
| 7440 |  20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74    20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79  | .a.function.that.returns.the.key | 
| 7460 |  0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73    20 27 28 22 6d 69 73 74 72 61 6c 2d 73 6d 61 6c  | .........:models.'("mistral-smal | 
| 7480 |  6c 22 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69  | l"))).#+end_src..#+html:.</detai | 
| 74a0 |  6c 73 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65    74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a  | ls>..#+html:.<details><summary>. | 
| 74c0 |  0a 2a 2a 2a 2a 20 4f 70 65 6e 52 6f 75 74 65 72    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61  | .****.OpenRouter.#+html:.</summa | 
| 74e0 |  72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20    62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62  | ry>..Register.a.backend.with.#+b | 
| 7500 |  65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c    69 73 70 0a 3b 3b 20 4f 70 65 6e 52 6f 75 74 65  | egin_src.emacs-lisp.;;.OpenRoute | 
| 7520 |  72 20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e    41 49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50  | r.offers.an.OpenAI.compatible.AP | 
| 7540 |  49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70    65 6e 61 69 20 22 4f 70 65 6e 52 6f 75 74 65 72  | I.(gptel-make-openai."OpenRouter | 
| 7560 |  22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61  | "...............;Any.name.you.wa | 
| 7580 |  6e 74 0a 20 20 3a 68 6f 73 74 20 22 6f 70 65 6e    72 6f 75 74 65 72 2e 61 69 22 0a 20 20 3a 65 6e  | nt...:host."openrouter.ai"...:en | 
| 75a0 |  64 70 6f 69 6e 74 20 22 2f 61 70 69 2f 76 31 2f    63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73  | dpoint."/api/v1/chat/completions | 
| 75c0 |  22 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20    3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b  | "...:stream.t...:key."your-api-k | 
| 75e0 |  65 79 22 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 63 61 6e 20 62 65 20 61 20  | ey"...................;can.be.a. | 
| 7600 |  66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65    74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a 20 20  | function.that.returns.the.key... | 
| 7620 |  3a 6d 6f 64 65 6c 73 20 27 28 6f 70 65 6e 61 69    2f 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 0a 20  | :models.'(openai/gpt-3.5-turbo.. | 
| 7640 |  20 20 20 20 20 20 20 20 20 20 20 6d 69 73 74 72    61 6c 61 69 2f 6d 69 78 74 72 61 6c 2d 38 78 37  | ...........mistralai/mixtral-8x7 | 
| 7660 |  62 2d 69 6e 73 74 72 75 63 74 0a 20 20 20 20 20    20 20 20 20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d  | b-instruct.............meta-llam | 
| 7680 |  61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 33 34 62 2d    69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20  | a/codellama-34b-instruct........ | 
| 76a0 |  20 20 20 20 20 63 6f 64 65 6c 6c 61 6d 61 2f 63    6f 64 65 6c 6c 61 6d 61 2d 37 30 62 2d 69 6e 73  | .....codellama/codellama-70b-ins | 
| 76c0 |  74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20    20 20 67 6f 6f 67 6c 65 2f 70 61 6c 6d 2d 32 2d  | truct.............google/palm-2- | 
| 76e0 |  63 6f 64 65 63 68 61 74 2d 62 69 73 6f 6e 2d 33    32 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  | codechat-bison-32k.............g | 
| 7700 |  6f 6f 67 6c 65 2f 67 65 6d 69 6e 69 2d 70 72 6f    29 29 0a 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59  | oogle/gemini-pro))..#+end_src..Y | 
| 7720 |  6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73    20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68  | ou.can.pick.this.backend.from.th | 
| 7740 |  65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e    67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23  | e.menu.when.using.gptel.(see.[[# | 
| 7760 |  75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 2e    0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61  | usage][Usage]])...*****.(Optiona | 
| 7780 |  6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64 65    66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b  | l).Set.as.the.default.gptel.back | 
| 77a0 |  65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63    6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61  | end..The.above.code.makes.the.ba | 
| 77c0 |  63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20    74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79  | ckend.available.to.select...If.y | 
| 77e0 |  6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65    20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63  | ou.want.it.to.be.the.default.bac | 
| 7800 |  6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20    79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73  | kend.for.gptel,.you.can.set.this | 
| 7820 |  20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66    20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d  | .as.the.value.of.=gptel-backend= | 
| 7840 |  2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74    65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65  | ...Use.this.instead.of.the.above | 
| 7860 |  2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d    61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49  | ..#+begin_src.emacs-lisp.;;.OPTI | 
| 7880 |  4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69    6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d  | ONAL.configuration.(setq.gptel-m | 
| 78a0 |  6f 64 65 6c 20 20 20 27 6d 69 78 74 72 61 6c 2d    38 78 37 62 2d 33 32 37 36 38 0a 20 20 20 20 20  | odel...'mixtral-8x7b-32768...... | 
| 78c0 |  20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20    20 20 20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65  | .gptel-backend.......(gptel-make | 
| 78e0 |  2d 6f 70 65 6e 61 69 20 22 4f 70 65 6e 52 6f 75    74 65 72 22 20 20 20 20 20 20 20 20 20 20 20 20  | -openai."OpenRouter"............ | 
| 7900 |  20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75    20 77 61 6e 74 0a 20 20 20 20 20 20 20 20 3a 68  | ...;Any.name.you.want.........:h | 
| 7920 |  6f 73 74 20 22 6f 70 65 6e 72 6f 75 74 65 72 2e    61 69 22 0a 20 20 20 20 20 20 20 20 3a 65 6e 64  | ost."openrouter.ai".........:end | 
| 7940 |  70 6f 69 6e 74 20 22 2f 61 70 69 2f 76 31 2f 63    68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22  | point."/api/v1/chat/completions" | 
| 7960 |  0a 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d    20 74 0a 20 20 20 20 20 20 20 20 3a 6b 65 79 20  | .........:stream.t.........:key. | 
| 7980 |  22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "your-api-key".................. | 
| 79a0 |  20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e 63 74    69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73  | .;can.be.a.function.that.returns | 
| 79c0 |  20 74 68 65 20 6b 65 79 0a 20 20 20 20 20 20 20    20 3a 6d 6f 64 65 6c 73 20 27 28 6f 70 65 6e 61  | .the.key.........:models.'(opena | 
| 79e0 |  69 2f 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | i/gpt-3.5-turbo................. | 
| 7a00 |  20 20 6d 69 73 74 72 61 6c 61 69 2f 6d 69 78 74    72 61 6c 2d 38 78 37 62 2d 69 6e 73 74 72 75 63  | ..mistralai/mixtral-8x7b-instruc | 
| 7a20 |  74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 63  | t...................meta-llama/c | 
| 7a40 |  6f 64 65 6c 6c 61 6d 61 2d 33 34 62 2d 69 6e 73    74 72 75 63 74 0a 20 20 20 20 20 20 20 20 20 20  | odellama-34b-instruct........... | 
| 7a60 |  20 20 20 20 20 20 20 20 63 6f 64 65 6c 6c 61 6d    61 2f 63 6f 64 65 6c 6c 61 6d 61 2d 37 30 62 2d  | ........codellama/codellama-70b- | 
| 7a80 |  69 6e 73 74 72 75 63 74 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 67 6f 6f 67 6c  | instruct...................googl | 
| 7aa0 |  65 2f 70 61 6c 6d 2d 32 2d 63 6f 64 65 63 68 61    74 2d 62 69 73 6f 6e 2d 33 32 6b 0a 20 20 20 20  | e/palm-2-codechat-bison-32k..... | 
| 7ac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 6f    6f 67 6c 65 2f 67 65 6d 69 6e 69 2d 70 72 6f 29  | ..............google/gemini-pro) | 
| 7ae0 |  29 29 0a 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23    2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73  | ))..#+end_src..#+html:.</details | 
| 7b00 |  3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69    6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a  | >.#+html:.<details><summary>.*** | 
| 7b20 |  2a 20 50 72 69 76 61 74 65 47 50 54 0a 23 2b 68    74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a  | *.PrivateGPT.#+html:.</summary>. | 
| 7b40 |  0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63 6b    65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69 6e  | .Register.a.backend.with.#+begin | 
| 7b60 |  5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a    28 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 69 76  | _src.emacs-lisp.(gptel-make-priv | 
| 7b80 |  61 74 65 67 70 74 20 22 70 72 69 76 61 74 65 47    50 54 22 20 20 20 20 20 20 20 20 20 20 20 20 20  | ategpt."privateGPT"............. | 
| 7ba0 |  20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20    77 61 6e 74 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c  | ..;Any.name.you.want...:protocol | 
| 7bc0 |  20 22 68 74 74 70 22 0a 20 20 3a 68 6f 73 74 20    22 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 30 31 22  | ."http"...:host."localhost:8001" | 
| 7be0 |  0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a    63 6f 6e 74 65 78 74 20 74 20 20 20 20 20 20 20  | ...:stream.t...:context.t....... | 
| 7c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 55 73 65 20 63 6f 6e 74 65 78  | .....................;Use.contex | 
| 7c20 |  74 20 70 72 6f 76 69 64 65 64 20 62 79 20 65 6d    62 65 64 64 69 6e 67 73 0a 20 20 3a 73 6f 75 72  | t.provided.by.embeddings...:sour | 
| 7c40 |  63 65 73 20 74 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ces.t........................... | 
| 7c60 |  20 3b 52 65 74 75 72 6e 20 69 6e 66 6f 72 6d 61    74 69 6f 6e 20 61 62 6f 75 74 20 73 6f 75 72 63  | .;Return.information.about.sourc | 
| 7c80 |  65 20 64 6f 63 75 6d 65 6e 74 73 0a 20 20 3a 6d    6f 64 65 6c 73 20 27 28 70 72 69 76 61 74 65 2d  | e.documents...:models.'(private- | 
| 7ca0 |  67 70 74 29 29 0a 0a 23 2b 65 6e 64 5f 73 72 63    0a 0a 59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74  | gpt))..#+end_src..You.can.pick.t | 
| 7cc0 |  68 69 73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d    20 74 68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75  | his.backend.from.the.menu.when.u | 
| 7ce0 |  73 69 6e 67 20 67 70 74 65 6c 20 28 73 65 65 20    5b 5b 23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d  | sing.gptel.(see.[[#usage][Usage] | 
| 7d00 |  5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69    6f 6e 61 6c 29 20 53 65 74 20 61 73 20 74 68 65  | ])...*****.(Optional).Set.as.the | 
| 7d20 |  20 64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 62    61 63 6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76  | .default.gptel.backend..The.abov | 
| 7d40 |  65 20 63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65    20 62 61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62  | e.code.makes.the.backend.availab | 
| 7d60 |  6c 65 20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49    66 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f  | le.to.select...If.you.want.it.to | 
| 7d80 |  20 62 65 20 74 68 65 20 64 65 66 61 75 6c 74 20    62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65  | .be.the.default.backend.for.gpte | 
| 7da0 |  6c 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 74    68 69 73 20 61 73 20 74 68 65 20 76 61 6c 75 65  | l,.you.can.set.this.as.the.value | 
| 7dc0 |  20 6f 66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65    6e 64 3d 2e 20 20 55 73 65 20 74 68 69 73 20 69  | .of.=gptel-backend=...Use.this.i | 
| 7de0 |  6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 61 62    6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63  | nstead.of.the.above..#+begin_src | 
| 7e00 |  20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f    50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72  | .emacs-lisp.;;.OPTIONAL.configur | 
| 7e20 |  61 74 69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65    6c 2d 6d 6f 64 65 6c 20 20 20 27 70 72 69 76 61  | ation.(setq.gptel-model...'priva | 
| 7e40 |  74 65 2d 67 70 74 0a 20 20 20 20 20 20 67 70 74    65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 20 20 20  | te-gpt.......gptel-backend...... | 
| 7e60 |  20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 69    76 61 74 65 67 70 74 20 22 70 72 69 76 61 74 65  | .(gptel-make-privategpt."private | 
| 7e80 |  47 50 54 22 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75  | GPT"...............;Any.name.you | 
| 7ea0 |  20 77 61 6e 74 0a 20 20 20 20 20 20 20 20 3a 70    72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 0a 20  | .want.........:protocol."http".. | 
| 7ec0 |  20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 6c 6f    63 61 6c 68 6f 73 74 3a 38 30 30 31 22 0a 20 20  | .......:host."localhost:8001"... | 
| 7ee0 |  20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 74 0a    20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74  | ......:stream.t.........:context | 
| 7f00 |  20 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 55  | .t............................;U | 
| 7f20 |  73 65 20 63 6f 6e 74 65 78 74 20 70 72 6f 76 69    64 65 64 20 62 79 20 65 6d 62 65 64 64 69 6e 67  | se.context.provided.by.embedding | 
| 7f40 |  73 0a 20 20 20 20 20 20 20 20 3a 73 6f 75 72 63    65 73 20 74 20 20 20 20 20 20 20 20 20 20 20 20  | s.........:sources.t............ | 
| 7f60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 52 65 74 75 72 6e 20 69 6e 66 6f 72 6d 61 74  | ................;Return.informat | 
| 7f80 |  69 6f 6e 20 61 62 6f 75 74 20 73 6f 75 72 63 65    20 64 6f 63 75 6d 65 6e 74 73 0a 20 20 20 20 20  | ion.about.source.documents...... | 
| 7fa0 |  20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 70 72 69    76 61 74 65 2d 67 70 74 29 29 29 0a 0a 23 2b 65  | ...:models.'(private-gpt)))..#+e | 
| 7fc0 |  6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20    3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d  | nd_src..#+html:.</details>.#+htm | 
| 7fe0 |  6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d    6d 61 72 79 3e 0a 2a 2a 2a 2a 20 44 65 65 70 53  | l:.<details><summary>.****.DeepS | 
| 8000 |  65 65 6b 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75    6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72  | eek.#+html:.</summary>..Register | 
| 8020 |  20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a    23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63  | .a.backend.with.#+begin_src.emac | 
| 8040 |  73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61    6b 65 2d 64 65 65 70 73 65 65 6b 20 22 44 65 65  | s-lisp.(gptel-make-deepseek."Dee | 
| 8060 |  70 53 65 65 6b 22 20 20 20 20 20 20 20 3b 41 6e    79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a  | pSeek".......;Any.name.you.want. | 
| 8080 |  20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..:stream.t..................... | 
| 80a0 |  20 20 20 20 20 20 3b 66 6f 72 20 73 74 72 65 61    6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20  | ......;for.streaming.responses.. | 
| 80c0 |  20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d    6b 65 79 22 29 20 20 20 20 20 20 20 20 20 20 20  | .:key."your-api-key")........... | 
| 80e0 |  20 20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75    6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75  | ....;can.be.a.function.that.retu | 
| 8100 |  72 6e 73 20 74 68 65 20 6b 65 79 0a 23 2b 65 6e    64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 70  | rns.the.key.#+end_src..You.can.p | 
| 8120 |  69 63 6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64    20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77  | ick.this.backend.from.the.menu.w | 
| 8140 |  68 65 6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20    28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55  | hen.using.gptel.(see.[[#usage][U | 
| 8160 |  73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20    28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61  | sage]])...*****.(Optional).Set.a | 
| 8180 |  73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70    74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65  | s.the.default.gptel.backend..The | 
| 81a0 |  20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65    73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76  | .above.code.makes.the.backend.av | 
| 81c0 |  61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63    74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20  | ailable.to.select...If.you.want. | 
| 81e0 |  69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66    61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72  | it.to.be.the.default.backend.for | 
| 8200 |  20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20    73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20  | .gptel,.you.can.set.this.as.the. | 
| 8220 |  76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d    62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74  | value.of.=gptel-backend=...Use.t | 
| 8240 |  68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74    68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69  | his.instead.of.the.above..#+begi | 
| 8260 |  6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70    0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e  | n_src.emacs-lisp.;;.OPTIONAL.con | 
| 8280 |  66 69 67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71    20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27  | figuration.(setq.gptel-model...' | 
| 82a0 |  64 65 65 70 73 65 65 6b 2d 72 65 61 73 6f 6e 65    72 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61  | deepseek-reasoner.......gptel-ba | 
| 82c0 |  63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61 6b    65 2d 64 65 65 70 73 65 65 6b 20 22 44 65 65 70  | ckend.(gptel-make-deepseek."Deep | 
| 82e0 |  53 65 65 6b 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72  | Seek".......................:str | 
| 8300 |  65 61 6d 20 74 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79  | eam.t.......................:key | 
| 8320 |  20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 29    29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68  | ."your-api-key")).#+end_src..#+h | 
| 8340 |  74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a    23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73  | tml:.</details>.#+html:.<details | 
| 8360 |  3e 3c 73 75 6d 6d 61 72 79 3e 0a 0a 2a 2a 2a 2a    20 53 61 6d 62 61 6e 6f 76 61 20 28 44 65 65 70  | ><summary>..****.Sambanova.(Deep | 
| 8380 |  73 65 65 6b 29 0a 23 2b 68 74 6d 6c 3a 20 3c 2f    73 75 6d 6d 61 72 79 3e 0a 53 61 6d 62 61 6e 6f  | seek).#+html:.</summary>.Sambano | 
| 83a0 |  76 61 20 6f 66 66 65 72 73 20 76 61 72 69 6f 75    73 20 4c 4c 4d 73 20 74 68 72 6f 75 67 68 20 74  | va.offers.various.LLMs.through.t | 
| 83c0 |  68 65 69 72 20 53 61 6d 62 61 20 4e 6f 76 61 20    43 6c 6f 75 64 20 6f 66 66 65 72 69 6e 67 2c 20  | heir.Samba.Nova.Cloud.offering,. | 
| 83e0 |  77 69 74 68 20 44 65 65 70 73 65 65 6b 2d 52 31    20 62 65 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68  | with.Deepseek-R1.being.one.of.th | 
| 8400 |  65 6d 2e 20 54 68 65 20 74 6f 6b 65 6e 20 73 70    65 65 64 20 66 6f 72 20 44 65 65 70 73 65 65 6b  | em..The.token.speed.for.Deepseek | 
| 8420 |  20 52 31 20 76 69 61 20 53 61 6d 62 61 6e 6f 76    61 20 69 73 20 61 62 6f 75 74 20 36 20 74 69 6d  | .R1.via.Sambanova.is.about.6.tim | 
| 8440 |  65 73 20 66 61 73 74 65 72 20 74 68 61 6e 20 77    68 65 6e 20 61 63 63 65 73 73 65 64 20 74 68 72  | es.faster.than.when.accessed.thr | 
| 8460 |  6f 75 67 68 20 64 65 65 70 73 65 65 6b 2e 63 6f    6d 20 0a 0a 52 65 67 69 73 74 65 72 20 61 20 62  | ough.deepseek.com...Register.a.b | 
| 8480 |  61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65    67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69  | ackend.with.#+begin_src.emacs-li | 
| 84a0 |  73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f    70 65 6e 61 69 20 22 53 61 6d 62 61 6e 6f 76 61  | sp.(gptel-make-openai."Sambanova | 
| 84c0 |  22 20 20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61    6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68  | "........;Any.name.you.want...:h | 
| 84e0 |  6f 73 74 20 22 61 70 69 2e 73 61 6d 62 61 6e 6f    76 61 2e 61 69 22 0a 20 20 3a 65 6e 64 70 6f 69  | ost."api.sambanova.ai"...:endpoi | 
| 8500 |  6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d    70 6c 65 74 69 6f 6e 73 22 0a 20 20 3a 73 74 72  | nt."/v1/chat/completions"...:str | 
| 8520 |  65 61 6d 20 74 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b  | eam.t..........................; | 
| 8540 |  66 6f 72 20 73 74 72 65 61 6d 69 6e 67 20 72 65    73 70 6f 6e 73 65 73 0a 20 20 3a 6b 65 79 20 22  | for.streaming.responses...:key." | 
| 8560 |  79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 63 61 6e  | your-api-key"...............;can | 
| 8580 |  20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74    68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20  | .be.a.function.that.returns.the. | 
| 85a0 |  6b 65 79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28    44 65 65 70 53 65 65 6b 2d 52 31 29 29 0a 23 2b  | key...:models.'(DeepSeek-R1)).#+ | 
| 85c0 |  65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61 6e    20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b 65  | end_src..You.can.pick.this.backe | 
| 85e0 |  6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e 75    20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74 65  | nd.from.the.menu.when.using.gpte | 
| 8600 |  6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d    5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a  | l.(see.[[#usage][Usage]])...**** | 
| 8620 |  2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74    20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  | *.(Optional).Set.as.the.default. | 
| 8640 |  67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 54 68    65 20 63 6f 64 65 20 61 62 6f 76 65 73 20 6d 61  | gptel.backend.The.code.aboves.ma | 
| 8660 |  6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20    61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 73 65  | kes.the.backend.available.for.se | 
| 8680 |  6c 65 63 74 69 6f 6e 2e 20 20 49 66 20 79 6f 75    20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 74  | lection...If.you.want.it.to.be.t | 
| 86a0 |  68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b 65    6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79 6f  | he.default.backend.for.gptel,.yo | 
| 86c0 |  75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20 61    73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3d  | u.can.set.this.as.the.value.of.= | 
| 86e0 |  67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20    20 41 64 64 20 74 68 65 73 65 20 74 77 6f 20 6c  | gptel-backend=...Add.these.two.l | 
| 8700 |  69 6e 65 73 20 74 6f 20 79 6f 75 72 20 63 6f 6e    66 69 67 75 72 61 74 69 6f 6e 3a 20 0a 23 2b 62  | ines.to.your.configuration:..#+b | 
| 8720 |  65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c    69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20  | egin_src.emacs-lisp.;;.OPTIONAL. | 
| 8740 |  63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 20 20    28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65  | configuration...(setq.gptel-mode | 
| 8760 |  6c 20 27 44 65 65 70 53 65 65 6b 2d 52 31 29 0a    20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 62 61  | l.'DeepSeek-R1)...(setq.gptel-ba | 
| 8780 |  63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 67 65 74    2d 62 61 63 6b 65 6e 64 20 22 53 61 6d 62 61 6e  | ckend.(gptel-get-backend."Samban | 
| 87a0 |  6f 76 61 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69  | ova")).#+end_src.#+html:.</detai | 
| 87c0 |  6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74    61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 0a  | ls>.#+html:.<details><summary>.. | 
| 87e0 |  2a 2a 2a 2a 20 43 65 72 65 62 72 61 73 0a 23 2b    68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e  | ****.Cerebras.#+html:.</summary> | 
| 8800 |  0a 0a 52 65 67 69 73 74 65 72 20 61 20 62 61 63    6b 65 6e 64 20 77 69 74 68 0a 23 2b 62 65 67 69  | ..Register.a.backend.with.#+begi | 
| 8820 |  6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70    0a 3b 3b 20 43 65 72 65 62 72 61 73 20 6f 66 66  | n_src.emacs-lisp.;;.Cerebras.off | 
| 8840 |  65 72 73 20 61 6e 20 69 6e 73 74 61 6e 74 20 4f    70 65 6e 41 49 20 63 6f 6d 70 61 74 69 62 6c 65  | ers.an.instant.OpenAI.compatible | 
| 8860 |  20 41 50 49 0a 28 67 70 74 65 6c 2d 6d 61 6b 65    2d 6f 70 65 6e 61 69 20 22 43 65 72 65 62 72 61  | .API.(gptel-make-openai."Cerebra | 
| 8880 |  73 22 0a 20 20 3a 68 6f 73 74 20 22 61 70 69 2e    63 65 72 65 62 72 61 73 2e 61 69 22 0a 20 20 3a  | s"...:host."api.cerebras.ai"...: | 
| 88a0 |  65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68    61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 0a  | endpoint."/v1/chat/completions". | 
| 88c0 |  20 20 3a 73 74 72 65 61 6d 20 74 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..:stream.t..................... | 
| 88e0 |  20 20 20 20 20 20 20 20 3b 6f 70 74 69 6f 6e 61    6c 6c 79 20 6e 69 6c 20 61 73 20 43 65 72 65 62  | ........;optionally.nil.as.Cereb | 
| 8900 |  72 61 73 20 69 73 20 69 6e 73 74 61 6e 74 20 41    49 0a 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61  | ras.is.instant.AI...:key."your-a | 
| 8920 |  70 69 2d 6b 65 79 22 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3b 63 61 6e 20 62  | pi-key"...................;can.b | 
| 8940 |  65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61    74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65  | e.a.function.that.returns.the.ke | 
| 8960 |  79 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 6c 6c    61 6d 61 33 2e 31 2d 37 30 62 0a 20 20 20 20 20  | y...:models.'(llama3.1-70b...... | 
| 8980 |  20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2e 31 2d    38 62 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a  | .......llama3.1-8b)).#+end_src.. | 
| 89a0 |  59 6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69    73 20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74  | You.can.pick.this.backend.from.t | 
| 89c0 |  68 65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69    6e 67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b  | he.menu.when.using.gptel.(see.[[ | 
| 89e0 |  23 75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29    2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e  | #usage][Usage]])...*****.(Option | 
| 8a00 |  61 6c 29 20 53 65 74 20 61 73 20 74 68 65 20 64    65 66 61 75 6c 74 20 67 70 74 65 6c 20 62 61 63  | al).Set.as.the.default.gptel.bac | 
| 8a20 |  6b 65 6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20    63 6f 64 65 20 6d 61 6b 65 73 20 74 68 65 20 62  | kend..The.above.code.makes.the.b | 
| 8a40 |  61 63 6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65    20 74 6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20  | ackend.available.to.select...If. | 
| 8a60 |  79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62    65 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 61  | you.want.it.to.be.the.default.ba | 
| 8a80 |  63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c    20 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 69  | ckend.for.gptel,.you.can.set.thi | 
| 8aa0 |  73 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f    66 20 3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64  | s.as.the.value.of.=gptel-backend | 
| 8ac0 |  3d 2e 20 20 55 73 65 20 74 68 69 73 20 69 6e 73    74 65 61 64 20 6f 66 20 74 68 65 20 61 62 6f 76  | =...Use.this.instead.of.the.abov | 
| 8ae0 |  65 2e 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65    6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54  | e..#+begin_src.emacs-lisp.;;.OPT | 
| 8b00 |  49 4f 4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74    69 6f 6e 0a 28 73 65 74 71 20 67 70 74 65 6c 2d  | IONAL.configuration.(setq.gptel- | 
| 8b20 |  6d 6f 64 65 6c 20 20 20 27 6c 6c 61 6d 61 33 2e    31 2d 38 62 0a 20 20 20 20 20 20 67 70 74 65 6c  | model...'llama3.1-8b.......gptel | 
| 8b40 |  2d 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28    67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61  | -backend.......(gptel-make-opena | 
| 8b60 |  69 20 22 43 65 72 65 62 72 61 73 22 0a 20 20 20    20 20 20 20 20 3a 68 6f 73 74 20 22 61 70 69 2e  | i."Cerebras".........:host."api. | 
| 8b80 |  63 65 72 65 62 72 61 73 2e 61 69 22 0a 20 20 20    20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22  | cerebras.ai".........:endpoint." | 
| 8ba0 |  2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74    69 6f 6e 73 22 0a 20 20 20 20 20 20 20 20 3a 73  | /v1/chat/completions".........:s | 
| 8bc0 |  74 72 65 61 6d 20 6e 69 6c 0a 20 20 20 20 20 20    20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69  | tream.nil.........:key."your-api | 
| 8be0 |  2d 6b 65 79 22 0a 20 20 20 20 20 20 20 20 3a 6d    6f 64 65 6c 73 20 27 28 6c 6c 61 6d 61 33 2e 31  | -key".........:models.'(llama3.1 | 
| 8c00 |  2d 37 30 62 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 6c 6c 61 6d 61 33 2e 31 2d  | -70b...................llama3.1- | 
| 8c20 |  38 62 29 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69  | 8b))).#+end_src..#+html:.</detai | 
| 8c40 |  6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74    61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a  | ls>.#+html:.<details><summary>.* | 
| 8c60 |  2a 2a 2a 20 47 69 74 68 75 62 20 4d 6f 64 65 6c    73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d  | ***.Github.Models.#+html:.</summ | 
| 8c80 |  61 72 79 3e 0a 0a 4e 4f 54 45 3a 20 20 5b 5b 68    74 74 70 73 3a 2f 2f 64 6f 63 73 2e 67 69 74 68  | ary>..NOTE:..[[https://docs.gith | 
| 8ca0 |  75 62 2e 63 6f 6d 2f 65 6e 2f 67 69 74 68 75 62    2d 6d 6f 64 65 6c 73 2f 61 62 6f 75 74 2d 67 69  | ub.com/en/github-models/about-gi | 
| 8cc0 |  74 68 75 62 2d 6d 6f 64 65 6c 73 5d 5b 47 69 74    48 75 62 20 4d 6f 64 65 6c 73 5d 5d 20 69 73 20  | thub-models][GitHub.Models]].is. | 
| 8ce0 |  2f 6e 6f 74 2f 20 47 69 74 48 75 62 20 43 6f 70    69 6c 6f 74 21 20 20 49 66 20 79 6f 75 20 77 61  | /not/.GitHub.Copilot!..If.you.wa | 
| 8d00 |  6e 74 20 74 6f 20 75 73 65 20 47 69 74 48 75 62    20 43 6f 70 69 6c 6f 74 20 63 68 61 74 20 76 69  | nt.to.use.GitHub.Copilot.chat.vi | 
| 8d20 |  61 20 67 70 74 65 6c 2c 20 6c 6f 6f 6b 20 61 74    20 74 68 65 20 69 6e 73 74 72 75 63 74 69 6f 6e  | a.gptel,.look.at.the.instruction | 
| 8d40 |  73 20 66 6f 72 20 47 69 74 48 75 62 20 43 6f 70    69 6c 6f 74 43 68 61 74 20 62 65 6c 6f 77 20 69  | s.for.GitHub.CopilotChat.below.i | 
| 8d60 |  6e 73 74 65 61 64 2e 0a 0a 52 65 67 69 73 74 65    72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68  | nstead...Register.a.backend.with | 
| 8d80 |  0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61    63 73 2d 6c 69 73 70 0a 20 20 3b 3b 20 47 69 74  | .#+begin_src.emacs-lisp...;;.Git | 
| 8da0 |  68 75 62 20 4d 6f 64 65 6c 73 20 6f 66 66 65 72    73 20 61 6e 20 4f 70 65 6e 41 49 20 63 6f 6d 70  | hub.Models.offers.an.OpenAI.comp | 
| 8dc0 |  61 74 69 62 6c 65 20 41 50 49 0a 20 20 28 67 70    74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 20  | atible.API...(gptel-make-openai. | 
| 8de0 |  22 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 22 20    3b 41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61  | "Github.Models".;Any.name.you.wa | 
| 8e00 |  6e 74 0a 20 20 20 20 3a 68 6f 73 74 20 22 6d 6f    64 65 6c 73 2e 69 6e 66 65 72 65 6e 63 65 2e 61  | nt.....:host."models.inference.a | 
| 8e20 |  69 2e 61 7a 75 72 65 2e 63 6f 6d 22 0a 20 20 20    20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 63 68 61  | i.azure.com".....:endpoint."/cha | 
| 8e40 |  74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 3f 61 70    69 2d 76 65 72 73 69 6f 6e 3d 32 30 32 34 2d 30  | t/completions?api-version=2024-0 | 
| 8e60 |  35 2d 30 31 2d 70 72 65 76 69 65 77 22 0a 20 20    20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 20  | 5-01-preview".....:stream.t..... | 
| 8e80 |  3a 6b 65 79 20 22 79 6f 75 72 2d 67 69 74 68 75    62 2d 74 6f 6b 65 6e 22 0a 20 20 20 20 3a 6d 6f  | :key."your-github-token".....:mo | 
| 8ea0 |  64 65 6c 73 20 27 28 67 70 74 2d 34 6f 29 29 0a    23 2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 77  | dels.'(gpt-4o)).#+end_src..You.w | 
| 8ec0 |  69 6c 6c 20 6e 65 65 64 20 74 6f 20 63 72 65 61    74 65 20 61 20 67 69 74 68 75 62 20 5b 5b 68 74  | ill.need.to.create.a.github.[[ht | 
| 8ee0 |  74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d    2f 73 65 74 74 69 6e 67 73 2f 70 65 72 73 6f 6e  | tps://github.com/settings/person | 
| 8f00 |  61 6c 2d 61 63 63 65 73 73 2d 74 6f 6b 65 6e 73    5d 5b 74 6f 6b 65 6e 5d 5d 2e 0a 0a 46 6f 72 20  | al-access-tokens][token]]...For. | 
| 8f20 |  61 6c 6c 20 74 68 65 20 61 76 61 69 6c 61 62 6c    65 20 6d 6f 64 65 6c 73 2c 20 63 68 65 63 6b 20  | all.the.available.models,.check. | 
| 8f40 |  74 68 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69    74 68 75 62 2e 63 6f 6d 2f 6d 61 72 6b 65 74 70  | the.[[https://github.com/marketp | 
| 8f60 |  6c 61 63 65 2f 6d 6f 64 65 6c 73 5d 5b 6d 61 72    6b 65 74 70 6c 61 63 65 5d 5d 2e 0a 0a 59 6f 75  | lace/models][marketplace]]...You | 
| 8f80 |  20 63 61 6e 20 70 69 63 6b 20 74 68 69 73 20 62    61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68 65 20  | .can.pick.this.backend.from.the. | 
| 8fa0 |  6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e 67 20    28 73 65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55  | menu.when.using.(see.[[#usage][U | 
| 8fc0 |  73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20    28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61  | sage]])...*****.(Optional).Set.a | 
| 8fe0 |  73 20 74 68 65 20 64 65 66 61 75 6c 74 20 67 70    74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65  | s.the.default.gptel.backend..The | 
| 9000 |  20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65    73 20 74 68 65 20 62 61 63 6b 65 6e 64 20 61 76  | .above.code.makes.the.backend.av | 
| 9020 |  61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63    74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20  | ailable.to.select...If.you.want. | 
| 9040 |  69 74 20 74 6f 20 62 65 20 74 68 65 20 64 65 66    61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72  | it.to.be.the.default.backend.for | 
| 9060 |  20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20    73 65 74 20 74 68 69 73 20 61 73 20 74 68 65 20  | .gptel,.you.can.set.this.as.the. | 
| 9080 |  76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d    62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74  | value.of.=gptel-backend=...Use.t | 
| 90a0 |  68 69 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74    68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69  | his.instead.of.the.above..#+begi | 
| 90c0 |  6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70    0a 20 20 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20 63  | n_src.emacs-lisp...;;.OPTIONAL.c | 
| 90e0 |  6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 20 20 28    73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c  | onfiguration...(setq.gptel-model | 
| 9100 |  20 20 27 67 70 74 2d 34 6f 0a 20 20 20 20 20 20    20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a  | ..'gpt-4o.........gptel-backend. | 
| 9120 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d    61 6b 65 2d 6f 70 65 6e 61 69 20 22 47 69 74 68  | ........(gptel-make-openai."Gith | 
| 9140 |  75 62 20 4d 6f 64 65 6c 73 22 20 3b 41 6e 79 20    6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 0a 20 20  | ub.Models".;Any.name.you.want... | 
| 9160 |  20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 22 6d    6f 64 65 6c 73 2e 69 6e 66 65 72 65 6e 63 65 2e  | ........:host."models.inference. | 
| 9180 |  61 69 2e 61 7a 75 72 65 2e 63 6f 6d 22 0a 20 20    20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e  | ai.azure.com"...........:endpoin | 
| 91a0 |  74 20 22 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74    69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e  | t."/chat/completions?api-version | 
| 91c0 |  3d 32 30 32 34 2d 30 35 2d 30 31 2d 70 72 65 76    69 65 77 22 0a 20 20 20 20 20 20 20 20 20 20 3a  | =2024-05-01-preview"...........: | 
| 91e0 |  73 74 72 65 61 6d 20 74 0a 20 20 20 20 20 20 20    20 20 20 3a 6b 65 79 20 22 79 6f 75 72 2d 67 69  | stream.t...........:key."your-gi | 
| 9200 |  74 68 75 62 2d 74 6f 6b 65 6e 22 0a 20 20 20 20    20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28  | thub-token"...........:models.'( | 
| 9220 |  67 70 74 2d 34 6f 29 29 0a 23 2b 65 6e 64 5f 73    72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65  | gpt-4o)).#+end_src..#+html:.</de | 
| 9240 |  74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c    64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79  | tails>.#+html:.<details><summary | 
| 9260 |  3e 0a 2a 2a 2a 2a 20 4e 6f 76 69 74 61 20 41 49    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61  | >.****.Novita.AI.#+html:.</summa | 
| 9280 |  72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20    62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62  | ry>..Register.a.backend.with.#+b | 
| 92a0 |  65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c    69 73 70 0a 3b 3b 20 4e 6f 76 69 74 61 20 41 49  | egin_src.emacs-lisp.;;.Novita.AI | 
| 92c0 |  20 6f 66 66 65 72 73 20 61 6e 20 4f 70 65 6e 41    49 20 63 6f 6d 70 61 74 69 62 6c 65 20 41 50 49  | .offers.an.OpenAI.compatible.API | 
| 92e0 |  0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65    6e 61 69 20 22 4e 6f 76 69 74 61 41 49 22 20 20  | .(gptel-make-openai."NovitaAI".. | 
| 9300 |  20 20 20 20 20 20 20 3b 41 6e 79 20 6e 61 6d 65    20 79 6f 75 20 77 61 6e 74 0a 20 20 3a 68 6f 73  | .......;Any.name.you.want...:hos | 
| 9320 |  74 20 22 61 70 69 2e 6e 6f 76 69 74 61 2e 61 69    22 0a 20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f  | t."api.novita.ai"...:endpoint."/ | 
| 9340 |  76 33 2f 6f 70 65 6e 61 69 22 0a 20 20 3a 6b 65    79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22  | v3/openai"...:key."your-api-key" | 
| 9360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 63 61 6e 20 62 65 20 61 20 66 75 6e  | ...................;can.be.a.fun | 
| 9380 |  63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72    6e 73 20 74 68 65 20 6b 65 79 0a 20 20 3a 73 74  | ction.that.returns.the.key...:st | 
| 93a0 |  72 65 61 6d 20 74 0a 20 20 3a 6d 6f 64 65 6c 73    20 27 28 3b 3b 20 68 61 73 20 6d 61 6e 79 20 6d  | ream.t...:models.'(;;.has.many.m | 
| 93c0 |  6f 72 65 2c 20 63 68 65 63 6b 20 68 74 74 70 73    3a 2f 2f 6e 6f 76 69 74 61 2e 61 69 2f 6c 6c 6d  | ore,.check.https://novita.ai/llm | 
| 93e0 |  2d 61 70 69 0a 20 20 20 20 20 20 20 20 20 20 20    20 67 72 79 70 68 65 2f 6d 79 74 68 6f 6d 61 78  | -api.............gryphe/mythomax | 
| 9400 |  2d 6c 32 2d 31 33 62 0a 20 20 20 20 20 20 20 20    20 20 20 20 6d 65 74 61 2d 6c 6c 61 6d 61 2f 6c  | -l2-13b.............meta-llama/l | 
| 9420 |  6c 61 6d 61 2d 33 2d 37 30 62 2d 69 6e 73 74 72    75 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20  | lama-3-70b-instruct............. | 
| 9440 |  6d 65 74 61 2d 6c 6c 61 6d 61 2f 6c 6c 61 6d 61    2d 33 2e 31 2d 37 30 62 2d 69 6e 73 74 72 75 63  | meta-llama/llama-3.1-70b-instruc | 
| 9460 |  74 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 59    6f 75 20 63 61 6e 20 70 69 63 6b 20 74 68 69 73  | t)).#+end_src..You.can.pick.this | 
| 9480 |  20 62 61 63 6b 65 6e 64 20 66 72 6f 6d 20 74 68    65 20 6d 65 6e 75 20 77 68 65 6e 20 75 73 69 6e  | .backend.from.the.menu.when.usin | 
| 94a0 |  67 20 67 70 74 65 6c 20 28 73 65 65 20 5b 5b 23    75 73 61 67 65 5d 5b 55 73 61 67 65 5d 5d 29 0a  | g.gptel.(see.[[#usage][Usage]]). | 
| 94c0 |  0a 2a 2a 2a 2a 2a 20 28 4f 70 74 69 6f 6e 61 6c    29 20 53 65 74 20 61 73 20 74 68 65 20 64 65 66  | .*****.(Optional).Set.as.the.def | 
| 94e0 |  61 75 6c 74 20 67 70 74 65 6c 20 62 61 63 6b 65    6e 64 0a 0a 54 68 65 20 61 62 6f 76 65 20 63 6f  | ault.gptel.backend..The.above.co | 
| 9500 |  64 65 20 6d 61 6b 65 73 20 74 68 65 20 62 61 63    6b 65 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 74  | de.makes.the.backend.available.t | 
| 9520 |  6f 20 73 65 6c 65 63 74 2e 20 20 49 66 20 79 6f    75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20  | o.select...If.you.want.it.to.be. | 
| 9540 |  74 68 65 20 64 65 66 61 75 6c 74 20 62 61 63 6b    65 6e 64 20 66 6f 72 20 67 70 74 65 6c 2c 20 79  | the.default.backend.for.gptel,.y | 
| 9560 |  6f 75 20 63 61 6e 20 73 65 74 20 74 68 69 73 20    61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  | ou.can.set.this.as.the.value.of. | 
| 9580 |  3d 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 3d 2e    20 20 55 73 65 20 74 68 69 73 20 69 6e 73 74 65  | =gptel-backend=...Use.this.inste | 
| 95a0 |  61 64 20 6f 66 20 74 68 65 20 61 62 6f 76 65 2e    0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61  | ad.of.the.above..#+begin_src.ema | 
| 95c0 |  63 73 2d 6c 69 73 70 0a 3b 3b 20 4f 50 54 49 4f    4e 41 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  | cs-lisp.;;.OPTIONAL.configuratio | 
| 95e0 |  6e 0a 28 73 65 74 71 0a 20 67 70 74 65 6c 2d 6d    6f 64 65 6c 20 20 20 27 67 72 79 70 68 65 2f 6d  | n.(setq..gptel-model...'gryphe/m | 
| 9600 |  79 74 68 6f 6d 61 78 2d 6c 32 2d 31 33 62 0a 20    67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 28  | ythomax-l2-13b..gptel-backend..( | 
| 9620 |  67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61    69 20 22 4e 6f 76 69 74 61 41 49 22 20 20 20 20  | gptel-make-openai."NovitaAI".... | 
| 9640 |  20 20 20 20 20 0a 20 20 20 3a 68 6f 73 74 20 22    61 70 69 2e 6e 6f 76 69 74 61 2e 61 69 22 0a 20  | .........:host."api.novita.ai".. | 
| 9660 |  20 20 3a 65 6e 64 70 6f 69 6e 74 20 22 2f 76 33    2f 6f 70 65 6e 61 69 22 0a 20 20 20 3a 6b 65 79  | ..:endpoint."/v3/openai"....:key | 
| 9680 |  20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79 22 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ."your-api-key"................. | 
| 96a0 |  20 20 0a 20 20 20 3a 73 74 72 65 61 6d 20 74 0a    20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 3b 3b 20  | ......:stream.t....:models.'(;;. | 
| 96c0 |  68 61 73 20 6d 61 6e 79 20 6d 6f 72 65 2c 20 63    68 65 63 6b 20 68 74 74 70 73 3a 2f 2f 6e 6f 76  | has.many.more,.check.https://nov | 
| 96e0 |  69 74 61 2e 61 69 2f 6c 6c 6d 2d 61 70 69 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 6d 69 73 74  | ita.ai/llm-api..............mist | 
| 9700 |  72 61 6c 61 69 2f 4d 69 78 74 72 61 6c 2d 38 78    37 42 2d 49 6e 73 74 72 75 63 74 2d 76 30 2e 31  | ralai/Mixtral-8x7B-Instruct-v0.1 | 
| 9720 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65    74 61 2d 6c 6c 61 6d 61 2f 6c 6c 61 6d 61 2d 33  | ..............meta-llama/llama-3 | 
| 9740 |  2d 37 30 62 2d 69 6e 73 74 72 75 63 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 6d 65 74 61 2d  | -70b-instruct..............meta- | 
| 9760 |  6c 6c 61 6d 61 2f 6c 6c 61 6d 61 2d 33 2e 31 2d    37 30 62 2d 69 6e 73 74 72 75 63 74 29 29 29 0a  | llama/llama-3.1-70b-instruct))). | 
| 9780 |  23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d    6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23  | #+end_src..#+html:.</details>..# | 
| 97a0 |  2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e    3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 78  | +html:.<details><summary>.****.x | 
| 97c0 |  41 49 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d    6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20  | AI.#+html:.</summary>..Register. | 
| 97e0 |  61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23    2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73  | a.backend.with.#+begin_src.emacs | 
| 9800 |  2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b    65 2d 78 61 69 20 22 78 41 49 22 20 20 20 20 20  | -lisp.(gptel-make-xai."xAI"..... | 
| 9820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20    41 6e 79 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e  | ..............;.Any.name.you.wan | 
| 9840 |  74 0a 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20    3a 6b 65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b  | t...:stream.t...:key."your-api-k | 
| 9860 |  65 79 22 29 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 20 63 61 6e 20 62 65 20 61  | ey")..................;.can.be.a | 
| 9880 |  20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72    65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 0a 23  | .function.that.returns.the.key.# | 
| 98a0 |  2b 65 6e 64 5f 73 72 63 0a 0a 59 6f 75 20 63 61    6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b  | +end_src..You.can.pick.this.back | 
| 98c0 |  65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e    75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74  | end.from.the.menu.when.using.gpt | 
| 98e0 |  65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65    5d 5b 55 73 61 67 65 5d 5d 29 0a 0a 2a 2a 2a 2a  | el.(see.[[#usage][Usage]])..**** | 
| 9900 |  2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65 74    20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  | *.(Optional).Set.as.the.default. | 
| 9920 |  67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a 54    68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d 61  | gptel.backend..The.above.code.ma | 
| 9940 |  6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64 20    61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65 6c  | kes.the.backend.available.to.sel | 
| 9960 |  65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61 6e    74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20 64  | ect...If.you.want.it.to.be.the.d | 
| 9980 |  65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20 66    6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63 61  | efault.backend.for.gptel,.you.ca | 
| 99a0 |  6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74 68    65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74 65  | n.set.this.as.the.value.of.=gpte | 
| 99c0 |  6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73 65    20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f 66  | l-backend=...Use.this.instead.of | 
| 99e0 |  20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62 65    67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69  | .the.above..#+begin_src.emacs-li | 
| 9a00 |  73 70 0a 28 73 65 74 71 20 67 70 74 65 6c 2d 6d    6f 64 65 6c 20 27 67 72 6f 6b 2d 33 2d 6c 61 74  | sp.(setq.gptel-model.'grok-3-lat | 
| 9a20 |  65 73 74 0a 20 20 20 20 20 20 67 70 74 65 6c 2d    62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 67  | est.......gptel-backend.......(g | 
| 9a40 |  70 74 65 6c 2d 6d 61 6b 65 2d 78 61 69 20 22 78    41 49 22 20 20 20 20 20 20 20 20 20 20 20 20 20  | ptel-make-xai."xAI"............. | 
| 9a60 |  20 20 3b 20 41 6e 79 20 6e 61 6d 65 20 79 6f 75    20 77 61 6e 74 0a 20 20 20 20 20 20 20 20 3a 6b  | ..;.Any.name.you.want.........:k | 
| 9a80 |  65 79 20 22 79 6f 75 72 2d 61 70 69 2d 6b 65 79    22 20 3b 20 63 61 6e 20 62 65 20 61 20 66 75 6e  | ey."your-api-key".;.can.be.a.fun | 
| 9aa0 |  63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72    6e 73 20 74 68 65 20 6b 65 79 0a 20 20 20 20 20  | ction.that.returns.the.key...... | 
| 9ac0 |  20 20 20 3a 73 74 72 65 61 6d 20 74 29 29 0a 23    2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c  | ...:stream.t)).#+end_src..#+html | 
| 9ae0 |  3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 23 2b    68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c  | :.</details>..#+html:.<details>< | 
| 9b00 |  73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 47 69    74 68 75 62 20 43 6f 70 69 6c 6f 74 43 68 61 74  | summary>.****.Github.CopilotChat | 
| 9b20 |  0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61    72 79 3e 0a 0a 52 65 67 69 73 74 65 72 20 61 20  | .#+html:.</summary>..Register.a. | 
| 9b40 |  62 61 63 6b 65 6e 64 20 77 69 74 68 0a 23 2b 62    65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c  | backend.with.#+begin_src.emacs-l | 
| 9b60 |  69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d    67 68 2d 63 6f 70 69 6c 6f 74 20 22 43 6f 70 69  | isp.(gptel-make-gh-copilot."Copi | 
| 9b80 |  6c 6f 74 22 29 0a 23 2b 65 6e 64 5f 73 72 63 0a    0a 59 6f 75 20 77 69 6c 6c 20 62 65 20 69 6e 66  | lot").#+end_src..You.will.be.inf | 
| 9ba0 |  6f 72 6d 65 64 20 74 6f 20 6c 6f 67 69 6e 20 69    6e 74 6f 20 3d 47 69 74 68 75 62 3d 20 61 73 20  | ormed.to.login.into.=Github=.as. | 
| 9bc0 |  72 65 71 75 69 72 65 64 2e 0a 59 6f 75 20 63 61    6e 20 70 69 63 6b 20 74 68 69 73 20 62 61 63 6b  | required..You.can.pick.this.back | 
| 9be0 |  65 6e 64 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e    75 20 77 68 65 6e 20 75 73 69 6e 67 20 67 70 74  | end.from.the.menu.when.using.gpt | 
| 9c00 |  65 6c 20 28 73 65 65 20 5b 5b 23 75 73 61 67 65    5d 5b 55 73 61 67 65 5d 5d 29 2e 0a 0a 2a 2a 2a  | el.(see.[[#usage][Usage]])...*** | 
| 9c20 |  2a 2a 20 28 4f 70 74 69 6f 6e 61 6c 29 20 53 65    74 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74  | **.(Optional).Set.as.the.default | 
| 9c40 |  20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 0a 0a    54 68 65 20 61 62 6f 76 65 20 63 6f 64 65 20 6d  | .gptel.backend..The.above.code.m | 
| 9c60 |  61 6b 65 73 20 74 68 65 20 62 61 63 6b 65 6e 64    20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 73 65  | akes.the.backend.available.to.se | 
| 9c80 |  6c 65 63 74 2e 20 20 49 66 20 79 6f 75 20 77 61    6e 74 20 69 74 20 74 6f 20 62 65 20 74 68 65 20  | lect...If.you.want.it.to.be.the. | 
| 9ca0 |  64 65 66 61 75 6c 74 20 62 61 63 6b 65 6e 64 20    66 6f 72 20 67 70 74 65 6c 2c 20 79 6f 75 20 63  | default.backend.for.gptel,.you.c | 
| 9cc0 |  61 6e 20 73 65 74 20 74 68 69 73 20 61 73 20 74    68 65 20 76 61 6c 75 65 20 6f 66 20 3d 67 70 74  | an.set.this.as.the.value.of.=gpt | 
| 9ce0 |  65 6c 2d 62 61 63 6b 65 6e 64 3d 2e 20 20 55 73    65 20 74 68 69 73 20 69 6e 73 74 65 61 64 20 6f  | el-backend=...Use.this.instead.o | 
| 9d00 |  66 20 74 68 65 20 61 62 6f 76 65 2e 0a 23 2b 62    65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c  | f.the.above..#+begin_src.emacs-l | 
| 9d20 |  69 73 70 0a 3b 3b 20 4f 50 54 49 4f 4e 41 4c 20    63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 28 73  | isp.;;.OPTIONAL.configuration.(s | 
| 9d40 |  65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20    27 63 6c 61 75 64 65 2d 33 2e 37 2d 73 6f 6e 6e  | etq.gptel-model.'claude-3.7-sonn | 
| 9d60 |  65 74 0a 20 20 20 20 20 20 67 70 74 65 6c 2d 62    61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 6d 61  | et.......gptel-backend.(gptel-ma | 
| 9d80 |  6b 65 2d 67 68 2d 63 6f 70 69 6c 6f 74 20 22 43    6f 70 69 6c 6f 74 22 29 29 0a 23 2b 65 6e 64 5f  | ke-gh-copilot."Copilot")).#+end_ | 
| 9da0 |  73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64    65 74 61 69 6c 73 3e 0a 0a 23 2b 68 74 6d 6c 3a  | src..#+html:.</details>..#+html: | 
| 9dc0 |  20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61    72 79 3e 0a 2a 2a 2a 2a 20 41 57 53 20 42 65 64  | .<details><summary>.****.AWS.Bed | 
| 9de0 |  72 6f 63 6b 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73    75 6d 6d 61 72 79 3e 0a 0a 52 65 67 69 73 74 65  | rock.#+html:.</summary>..Registe | 
| 9e00 |  72 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68    0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61  | r.a.backend.with.#+begin_src.ema | 
| 9e20 |  63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d    61 6b 65 2d 62 65 64 72 6f 63 6b 20 22 41 57 53  | cs-lisp.(gptel-make-bedrock."AWS | 
| 9e40 |  22 0a 20 20 3a 72 65 67 69 6f 6e 20 22 61 70 2d    6e 6f 72 74 68 65 61 73 74 2d 31 22 0a 20 20 3b  | "...:region."ap-northeast-1"...; | 
| 9e60 |  3b 20 73 75 62 73 65 74 20 6f 66 20 67 70 74 65    6c 2d 2d 62 65 64 72 6f 63 6b 2d 6d 6f 64 65 6c  | ;.subset.of.gptel--bedrock-model | 
| 9e80 |  73 0a 20 20 3a 6d 6f 64 65 6c 73 20 27 28 63 6c    61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d  | s...:models.'(claude-3-5-sonnet- | 
| 9ea0 |  32 30 32 34 31 30 32 32 29 0a 20 20 3b 3b 20 6f    70 74 69 6f 6e 61 6c 20 66 6f 72 20 70 72 6f 76  | 20241022)...;;.optional.for.prov | 
| 9ec0 |  69 73 69 6f 6e 65 64 20 61 63 63 65 73 73 0a 20    20 3a 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20 27  | isioned.access...:model-region.' | 
| 9ee0 |  61 70 61 63 29 0a 23 2b 65 6e 64 5f 73 72 63 0a    0a 54 68 65 20 42 65 64 72 6f 63 6b 20 62 61 63  | apac).#+end_src..The.Bedrock.bac | 
| 9f00 |  6b 65 6e 64 20 67 65 74 73 20 79 6f 75 72 20 41    57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 66  | kend.gets.your.AWS.credentials.f | 
| 9f20 |  72 6f 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d    65 6e 74 20 76 61 72 69 61 62 6c 65 73 2e 20 49  | rom.the.environment.variables..I | 
| 9f40 |  74 20 65 78 70 65 63 74 73 20 74 6f 20 66 69 6e    64 20 65 69 74 68 65 72 0a 7e 41 57 53 5f 41 43  | t.expects.to.find.either.~AWS_AC | 
| 9f60 |  43 45 53 53 5f 4b 45 59 5f 49 44 7e 2c 20 7e 41    57 53 5f 53 45 43 52 45 54 5f 41 43 43 45 53 53  | CESS_KEY_ID~,.~AWS_SECRET_ACCESS | 
| 9f80 |  5f 4b 45 59 7e 2c 20 7e 41 57 53 5f 53 45 53 53    49 4f 4e 5f 54 4f 4b 45 4e 7e 20 28 6f 70 74 69  | _KEY~,.~AWS_SESSION_TOKEN~.(opti | 
| 9fa0 |  6f 6e 61 6c 29 2c 20 6f 72 20 69 66 20 70 72 65    73 65 6e 74 2c 20 63 61 6e 20 75 73 65 20 7e 41  | onal),.or.if.present,.can.use.~A | 
| 9fc0 |  57 53 5f 50 52 4f 46 49 4c 45 7e 20 74 6f 20 67    65 74 20 74 68 65 73 65 20 64 69 72 65 63 74 6c  | WS_PROFILE~.to.get.these.directl | 
| 9fe0 |  79 20 66 72 6f 6d 20 74 68 65 20 7e 61 77 73 7e    20 63 6c 69 2e 0a 0a 4e 4f 54 45 3a 20 54 68 65  | y.from.the.~aws~.cli...NOTE:.The | 
| a000 |  20 42 65 64 72 6f 63 6b 20 62 61 63 6b 65 6e 64    20 6e 65 65 64 73 20 63 75 72 6c 20 3e 3d 20 38  | .Bedrock.backend.needs.curl.>=.8 | 
| a020 |  2e 35 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20    74 68 65 20 73 69 67 76 34 20 73 69 67 6e 69 6e  | .5.in.order.for.the.sigv4.signin | 
| a040 |  67 20 74 6f 20 77 6f 72 6b 20 70 72 6f 70 65 72    6c 79 2c 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68  | g.to.work.properly,.https://gith | 
| a060 |  75 62 2e 63 6f 6d 2f 63 75 72 6c 2f 63 75 72 6c    2f 69 73 73 75 65 73 2f 31 31 37 39 34 0a 0a 41  | ub.com/curl/curl/issues/11794..A | 
| a080 |  6e 20 65 72 72 6f 72 20 77 69 6c 6c 20 62 65 20    73 69 67 6e 61 6c 6c 65 64 20 69 66 20 7e 67 70  | n.error.will.be.signalled.if.~gp | 
| a0a0 |  74 65 6c 2d 63 75 72 6c 7e 20 69 73 20 7e 4e 49    4c 7e 2e 0a 0a 59 6f 75 20 63 61 6e 20 70 69 63  | tel-curl~.is.~NIL~...You.can.pic | 
| a0c0 |  6b 20 74 68 69 73 20 62 61 63 6b 65 6e 64 20 66    72 6f 6d 20 74 68 65 20 6d 65 6e 75 20 77 68 65  | k.this.backend.from.the.menu.whe | 
| a0e0 |  6e 20 75 73 69 6e 67 20 67 70 74 65 6c 20 28 73    65 65 20 5b 5b 23 75 73 61 67 65 5d 5b 55 73 61  | n.using.gptel.(see.[[#usage][Usa | 
| a100 |  67 65 5d 5d 29 2e 0a 0a 2a 2a 2a 2a 2a 20 28 4f    70 74 69 6f 6e 61 6c 29 20 53 65 74 20 61 73 20  | ge]])...*****.(Optional).Set.as. | 
| a120 |  74 68 65 20 64 65 66 61 75 6c 74 20 67 70 74 65    6c 20 62 61 63 6b 65 6e 64 0a 0a 54 68 65 20 61  | the.default.gptel.backend..The.a | 
| a140 |  62 6f 76 65 20 63 6f 64 65 20 6d 61 6b 65 73 20    74 68 65 20 62 61 63 6b 65 6e 64 20 61 76 61 69  | bove.code.makes.the.backend.avai | 
| a160 |  6c 61 62 6c 65 20 74 6f 20 73 65 6c 65 63 74 2e    20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 69 74  | lable.to.select...If.you.want.it | 
| a180 |  20 74 6f 20 62 65 20 74 68 65 20 64 65 66 61 75    6c 74 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67  | .to.be.the.default.backend.for.g | 
| a1a0 |  70 74 65 6c 2c 20 79 6f 75 20 63 61 6e 20 73 65    74 20 74 68 69 73 20 61 73 20 74 68 65 20 76 61  | ptel,.you.can.set.this.as.the.va | 
| a1c0 |  6c 75 65 20 6f 66 20 3d 67 70 74 65 6c 2d 62 61    63 6b 65 6e 64 3d 2e 20 20 55 73 65 20 74 68 69  | lue.of.=gptel-backend=...Use.thi | 
| a1e0 |  73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65    20 61 62 6f 76 65 2e 0a 23 2b 62 65 67 69 6e 5f  | s.instead.of.the.above..#+begin_ | 
| a200 |  73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 3b    3b 20 4f 50 54 49 4f 4e 41 4c 20 63 6f 6e 66 69  | src.emacs-lisp.;;.OPTIONAL.confi | 
| a220 |  67 75 72 61 74 69 6f 6e 0a 28 73 65 74 71 20 67    70 74 65 6c 2d 6d 6f 64 65 6c 20 20 20 27 63 6c  | guration.(setq.gptel-model...'cl | 
| a240 |  61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d    32 30 32 34 31 30 32 32 0a 20 20 20 20 20 20 67  | aude-3-5-sonnet-20241022.......g | 
| a260 |  70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 20    20 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 62  | ptel-backend.......(gptel-make-b | 
| a280 |  65 64 72 6f 63 6b 20 22 41 57 53 22 0a 20 20 09    3a 72 65 67 69 6f 6e 20 22 61 70 2d 6e 6f 72 74  | edrock."AWS"....:region."ap-nort | 
| a2a0 |  68 65 61 73 74 2d 31 22 0a 20 20 20 20 20 20 20    20 20 20 3b 3b 20 73 75 62 73 65 74 20 6f 66 20  | heast-1"...........;;.subset.of. | 
| a2c0 |  67 70 74 65 6c 2d 2d 62 65 64 72 6f 63 6b 2d 6d    6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20  | gptel--bedrock-models........... | 
| a2e0 |  3a 6d 6f 64 65 6c 73 20 27 28 63 6c 61 75 64 65    2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32 34  | :models.'(claude-3-5-sonnet-2024 | 
| a300 |  31 30 32 32 29 0a 20 20 20 20 20 20 20 20 20 20    3b 3b 20 6f 70 74 69 6f 6e 61 6c 0a 20 20 20 20  | 1022)...........;;.optional..... | 
| a320 |  20 20 20 20 20 20 3a 6d 6f 64 65 6c 2d 72 65 67    69 6f 6e 20 27 61 70 61 63 29 29 0a 23 2b 65 6e  | ......:model-region.'apac)).#+en | 
| a340 |  64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c    2f 64 65 74 61 69 6c 73 3e 0a 0a 2a 2a 20 55 73  | d_src..#+html:.</details>..**.Us | 
| a360 |  61 67 65 0a 0a 67 70 74 65 6c 20 70 72 6f 76 69    64 65 73 20 61 20 66 65 77 20 70 6f 77 65 72 66  | age..gptel.provides.a.few.powerf | 
| a380 |  75 6c 2c 20 67 65 6e 65 72 61 6c 20 70 75 72 70    6f 73 65 20 61 6e 64 20 66 6c 65 78 69 62 6c 65  | ul,.general.purpose.and.flexible | 
| a3a0 |  20 63 6f 6d 6d 61 6e 64 73 2e 20 20 59 6f 75 20    63 61 6e 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20  | .commands...You.can.dynamically. | 
| a3c0 |  74 77 65 61 6b 20 74 68 65 69 72 20 62 65 68 61    76 69 6f 72 20 74 6f 20 74 68 65 20 6e 65 65 64  | tweak.their.behavior.to.the.need | 
| a3e0 |  73 20 6f 66 20 79 6f 75 72 20 74 61 73 6b 20 77    69 74 68 20 2f 64 69 72 65 63 74 69 76 65 73 2f  | s.of.your.task.with./directives/ | 
| a400 |  2c 20 72 65 64 69 72 65 63 74 69 6f 6e 20 6f 70    74 69 6f 6e 73 20 61 6e 64 20 6d 6f 72 65 2e 20  | ,.redirection.options.and.more.. | 
| a420 |  20 54 68 65 72 65 20 69 73 20 61 20 5b 5b 68 74    74 70 73 3a 2f 2f 77 77 77 2e 79 6f 75 74 75 62  | .There.is.a.[[https://www.youtub | 
| a440 |  65 2e 63 6f 6d 2f 77 61 74 63 68 3f 76 3d 62 73    52 6e 68 5f 62 72 67 67 4d 5d 5b 76 69 64 65 6f  | e.com/watch?v=bsRnh_brggM][video | 
| a460 |  20 64 65 6d 6f 5d 5d 20 73 68 6f 77 69 6e 67 20    76 61 72 69 6f 75 73 20 75 73 65 73 20 6f 66 20  | .demo]].showing.various.uses.of. | 
| a480 |  67 70 74 65 6c 20 2d 2d 20 62 75 74 20 3d 67 70    74 65 6c 2d 73 65 6e 64 3d 20 6d 69 67 68 74 20  | gptel.--.but.=gptel-send=.might. | 
| a4a0 |  62 65 20 61 6c 6c 20 79 6f 75 20 6e 65 65 64 2e    0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | be.all.you.need...|------------- | 
| a4c0 |  2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ------+------------------------- | 
| a4e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| a500 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| a520 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 54    6f 20 73 65 6e 64 20 71 75 65 72 69 65 73 2a 20  | ----------|.|.*To.send.queries*. | 
| a540 |  7c 20 44 65 73 63 72 69 70 74 69 6f 6e 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | |.Description................... | 
| a560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| a580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| a5a0 |  20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d  | ....|.|-------------------+----- | 
| a5c0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| a5e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| a600 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a  | ------------------------------|. | 
| a620 |  7c 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 20    20 20 20 20 7c 20 53 65 6e 64 20 61 6c 6c 20 74  | |.=gptel-send=......|.Send.all.t | 
| a640 |  65 78 74 20 75 70 20 74 6f 20 3d 28 70 6f 69 6e    74 29 3d 2c 20 6f 72 20 74 68 65 20 73 65 6c 65  | ext.up.to.=(point)=,.or.the.sele | 
| a660 |  63 74 69 6f 6e 20 69 66 20 72 65 67 69 6f 6e 20    69 73 20 61 63 74 69 76 65 2e 20 20 57 6f 72 6b  | ction.if.region.is.active...Work | 
| a680 |  73 20 61 6e 79 77 68 65 72 65 20 69 6e 20 45 6d    61 63 73 2e 20 20 20 20 7c 0a 7c 20 3d 67 70 74  | s.anywhere.in.Emacs.....|.|.=gpt | 
| a6a0 |  65 6c 3d 20 20 20 20 20 20 20 20 20 20 20 7c 20    43 72 65 61 74 65 20 61 20 6e 65 77 20 64 65 64  | el=...........|.Create.a.new.ded | 
| a6c0 |  69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66    65 72 2e 20 20 4e 6f 74 20 72 65 71 75 69 72 65  | icated.chat.buffer...Not.require | 
| a6e0 |  64 20 74 6f 20 75 73 65 20 67 70 74 65 6c 2e 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | d.to.use.gptel.................. | 
| a700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 72 65 77  | ..................|.|.=gptel-rew | 
| a720 |  72 69 74 65 3d 20 20 20 7c 20 52 65 77 72 69 74    65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72 20 63  | rite=...|.Rewrite,.refactor.or.c | 
| a740 |  68 61 6e 67 65 20 74 68 65 20 73 65 6c 65 63 74    65 64 20 72 65 67 69 6f 6e 2e 20 20 43 61 6e 20  | hange.the.selected.region...Can. | 
| a760 |  64 69 66 66 2f 65 64 69 66 66 20 63 68 61 6e 67    65 73 20 62 65 66 6f 72 65 20 6d 65 72 67 69 6e  | diff/ediff.changes.before.mergin | 
| a780 |  67 2f 61 70 70 6c 79 69 6e 67 2e 20 7c 0a 7c 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | g/applying..|.|----------------- | 
| a7a0 |  2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | --+----------------------------- | 
| a7c0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| a7e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| a800 |  2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b  | ------|..|---------------------+ | 
| a820 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| a840 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c  | -------------------------------| | 
| a860 |  0a 7c 20 2a 54 6f 20 74 77 65 61 6b 20 62 65 68    61 76 69 6f 72 2a 20 7c 20 20 20 20 20 20 20 20  | .|.*To.tweak.behavior*.|........ | 
| a880 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| a8a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d  | .......................|.|------ | 
| a8c0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ---------------+---------------- | 
| a8e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| a900 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c    0a 7c 20 3d 43 2d 75 3d 20 3d 67 70 74 65 6c 2d  | ---------------|.|.=C-u=.=gptel- | 
| a920 |  73 65 6e 64 3d 20 20 7c 20 54 72 61 6e 73 69 65    6e 74 20 6d 65 6e 75 20 66 6f 72 20 70 72 65 66  | send=..|.Transient.menu.for.pref | 
| a940 |  65 72 65 6e 63 65 73 2c 20 69 6e 70 75 74 2f 6f    75 74 70 75 74 20 72 65 64 69 72 65 63 74 69 6f  | erences,.input/output.redirectio | 
| a960 |  6e 20 65 74 63 2e 20 7c 0a 7c 20 3d 67 70 74 65    6c 2d 6d 65 6e 75 3d 20 20 20 20 20 20 20 20 7c  | n.etc..|.|.=gptel-menu=........| | 
| a980 |  20 2f 28 53 61 6d 65 29 2f 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ./(Same)/....................... | 
| a9a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c  | ...............................| | 
| a9c0 |  0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d  | .|---------------------+-------- | 
| a9e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| aa00 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d  | -----------------------|..|----- | 
| aa20 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------+------------------ | 
| aa40 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| aa60 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| aa80 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 54 6f 20 61 64  | ----------------------|.|.*To.ad | 
| aaa0 |  64 20 63 6f 6e 74 65 78 74 2a 20 7c 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | d.context*.|.................... | 
| aac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| aae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| ab00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ....................|.|--------- | 
| ab20 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ---------+---------------------- | 
| ab40 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| ab60 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| ab80 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 61 64 64  | ------------------|.|.=gptel-add | 
| aba0 |  3d 20 20 20 20 20 20 7c 20 41 64 64 2f 72 65 6d    6f 76 65 20 61 20 72 65 67 69 6f 6e 20 6f 72 20  | =......|.Add/remove.a.region.or. | 
| abc0 |  62 75 66 66 65 72 20 74 6f 20 67 70 74 65 6c 27    73 20 63 6f 6e 74 65 78 74 2e 20 20 49 6e 20 44  | buffer.to.gptel's.context...In.D | 
| abe0 |  69 72 65 64 2c 20 61 64 64 2f 72 65 6d 6f 76 65    20 6d 61 72 6b 65 64 20 66 69 6c 65 73 2e 20 20  | ired,.add/remove.marked.files... | 
| ac00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    7c 0a 7c 20 3d 67 70 74 65 6c 2d 61 64 64 2d 66  | ................|.|.=gptel-add-f | 
| ac20 |  69 6c 65 3d 20 7c 20 41 64 64 20 61 20 66 69 6c    65 20 28 74 65 78 74 20 6f 72 20 73 75 70 70 6f  | ile=.|.Add.a.file.(text.or.suppo | 
| ac40 |  72 74 65 64 20 6d 65 64 69 61 20 74 79 70 65 29    20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74  | rted.media.type).to.gptel's.cont | 
| ac60 |  65 78 74 2e 20 20 41 6c 73 6f 20 61 76 61 69 6c    61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 74 72  | ext...Also.available.from.the.tr | 
| ac80 |  61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e 20 7c 0a    7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ansient.menu..|.|--------------- | 
| aca0 |  2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ---+---------------------------- | 
| acc0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| ace0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| ad00 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ------------|..|---------------- | 
| ad20 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ------------+------------------- | 
| ad40 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| ad60 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| ad80 |  2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 4f 72 67 20 6d    6f 64 65 20 62 6f 6e 75 73 65 73 2a 20 20 20 20  | ------|.|.*Org.mode.bonuses*.... | 
| ada0 |  20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....|.......................... | 
| adc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| ade0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c  | ...............................| | 
| ae00 |  0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d  | .|----------------------------+- | 
| ae20 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| ae40 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| ae60 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74  | ------------------------|.|.=gpt | 
| ae80 |  65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63    3d 20 20 20 20 20 20 7c 20 4c 69 6d 69 74 20 63  | el-org-set-topic=......|.Limit.c | 
| aea0 |  6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 6f 6e 74    65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 68 65  | onversation.context.to.an.Org.he | 
| aec0 |  61 64 69 6e 67 2e 20 20 28 46 6f 72 20 62 72 61    6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74  | ading...(For.branching.conversat | 
| aee0 |  69 6f 6e 73 20 73 65 65 20 62 65 6c 6f 77 2e 29    20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 6f 72 67 2d  | ions.see.below.).|.|.=gptel-org- | 
| af00 |  73 65 74 2d 70 72 6f 70 65 72 74 69 65 73 3d 20    7c 20 57 72 69 74 65 20 67 70 74 65 6c 20 63 6f  | set-properties=.|.Write.gptel.co | 
| af20 |  6e 66 69 67 75 72 61 74 69 6f 6e 20 61 73 20 4f    72 67 20 70 72 6f 70 65 72 74 69 65 73 2c 20 66  | nfiguration.as.Org.properties,.f | 
| af40 |  6f 72 20 70 65 72 2d 68 65 61 64 69 6e 67 20 63    68 61 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  | or.per-heading.chat.configuratio | 
| af60 |  6e 2e 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | n.........|.|------------------- | 
| af80 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ---------+---------------------- | 
| afa0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| afc0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| afe0 |  2d 2d 2d 7c 0a 0a 2a 2a 2a 20 49 6e 20 61 6e 79    20 62 75 66 66 65 72 3a 0a 0a 31 2e 20 43 61 6c  | ---|..***.In.any.buffer:..1..Cal | 
| b000 |  6c 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e    64 3d 20 74 6f 20 73 65 6e 64 20 74 68 65 20 74  | l.=M-x.gptel-send=.to.send.the.t | 
| b020 |  65 78 74 20 75 70 20 74 6f 20 74 68 65 20 63 75    72 73 6f 72 2e 20 54 68 65 20 72 65 73 70 6f 6e  | ext.up.to.the.cursor..The.respon | 
| b040 |  73 65 20 77 69 6c 6c 20 62 65 20 69 6e 73 65 72    74 65 64 20 62 65 6c 6f 77 2e 20 20 43 6f 6e 74  | se.will.be.inserted.below...Cont | 
| b060 |  69 6e 75 65 20 74 68 65 20 63 6f 6e 76 65 72 73    61 74 69 6f 6e 20 62 79 20 74 79 70 69 6e 67 20  | inue.the.conversation.by.typing. | 
| b080 |  62 65 6c 6f 77 20 74 68 65 20 72 65 73 70 6f 6e    73 65 2e 0a 0a 32 2e 20 49 66 20 61 20 72 65 67  | below.the.response...2..If.a.reg | 
| b0a0 |  69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65 64 2c    20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f  | ion.is.selected,.the.conversatio | 
| b0c0 |  6e 20 77 69 6c 6c 20 62 65 20 6c 69 6d 69 74 65    64 20 74 6f 20 69 74 73 20 63 6f 6e 74 65 6e 74  | n.will.be.limited.to.its.content | 
| b0e0 |  73 2e 0a 0a 33 2e 20 43 61 6c 6c 20 3d 4d 2d 78    20 67 70 74 65 6c 2d 73 65 6e 64 3d 20 77 69 74  | s...3..Call.=M-x.gptel-send=.wit | 
| b100 |  68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d    65 6e 74 20 28 7e 43 2d 75 7e 29 0a 20 20 20 2d  | h.a.prefix.argument.(~C-u~)....- | 
| b120 |  20 74 6f 20 73 65 74 20 63 68 61 74 20 70 61 72    61 6d 65 74 65 72 73 20 28 6d 6f 64 65 6c 2c 20  | .to.set.chat.parameters.(model,. | 
| b140 |  62 61 63 6b 65 6e 64 2c 20 73 79 73 74 65 6d 20    6d 65 73 73 61 67 65 20 65 74 63 29 20 66 6f 72  | backend,.system.message.etc).for | 
| b160 |  20 74 68 69 73 20 62 75 66 66 65 72 2c 0a 20 20    20 2d 20 69 6e 63 6c 75 64 65 20 71 75 69 63 6b  | .this.buffer,....-.include.quick | 
| b180 |  20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 6f    72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65  | .instructions.for.the.next.reque | 
| b1a0 |  73 74 20 6f 6e 6c 79 2c 0a 20 20 20 2d 20 74 6f    20 61 64 64 20 61 64 64 69 74 69 6f 6e 61 6c 20  | st.only,....-.to.add.additional. | 
| b1c0 |  63 6f 6e 74 65 78 74 20 2d 2d 20 72 65 67 69 6f    6e 73 2c 20 62 75 66 66 65 72 73 20 6f 72 20 66  | context.--.regions,.buffers.or.f | 
| b1e0 |  69 6c 65 73 20 2d 2d 20 74 6f 20 67 70 74 65 6c    2c 0a 20 20 20 2d 20 74 6f 20 72 65 61 64 20 74  | iles.--.to.gptel,....-.to.read.t | 
| b200 |  68 65 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 6f    72 20 72 65 64 69 72 65 63 74 20 74 68 65 20 72  | he.prompt.from.or.redirect.the.r | 
| b220 |  65 73 70 6f 6e 73 65 20 65 6c 73 65 77 68 65 72    65 2c 0a 20 20 20 2d 20 6f 72 20 74 6f 20 72 65  | esponse.elsewhere,....-.or.to.re | 
| b240 |  70 6c 61 63 65 20 74 68 65 20 70 72 6f 6d 70 74    20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e  | place.the.prompt.with.the.respon | 
| b260 |  73 65 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d    67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67  | se...#+html:.<img.src="https://g | 
| b280 |  69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69    6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f  | ithub.com/karthink/gptel/assets/ | 
| b2a0 |  38 36 30 37 35 33 32 2f 33 35 36 32 61 36 65 32    2d 37 61 35 63 2d 34 66 37 65 2d 38 65 35 37 2d  | 8607532/3562a6e2-7a5c-4f7e-8e57- | 
| b2c0 |  62 66 33 63 31 31 35 38 39 63 37 33 22 20 61 6c    69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74  | bf3c11589c73".align="center".alt | 
| b2e0 |  3d 22 49 6d 61 67 65 20 73 68 6f 77 69 6e 67 20    67 70 74 65 6c 27 73 20 6d 65 6e 75 20 77 69 74  | ="Image.showing.gptel's.menu.wit | 
| b300 |  68 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 61 76    61 69 6c 61 62 6c 65 20 71 75 65 72 79 20 6f 70  | h.some.of.the.available.query.op | 
| b320 |  74 69 6f 6e 73 2e 22 3e 0a 0a 59 6f 75 20 63 61    6e 20 61 6c 73 6f 20 64 65 66 69 6e 65 20 61 20  | tions.">..You.can.also.define.a. | 
| b340 |  22 70 72 65 73 65 74 22 20 62 75 6e 64 6c 65 20    6f 66 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20  | "preset".bundle.of.options.that. | 
| b360 |  61 72 65 20 61 70 70 6c 69 65 64 20 74 6f 67 65    74 68 65 72 2c 20 73 65 65 20 5b 5b 23 6f 70 74  | are.applied.together,.see.[[#opt | 
| b380 |  69 6f 6e 2d 70 72 65 73 65 74 73 5d 5b 4f 70 74    69 6f 6e 20 70 72 65 73 65 74 73 5d 5d 20 62 65  | ion-presets][Option.presets]].be | 
| b3a0 |  6c 6f 77 2e 0a 0a 2a 2a 2a 20 49 6e 20 61 20 64    65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75  | low...***.In.a.dedicated.chat.bu | 
| b3c0 |  66 66 65 72 3a 0a 0a 2a 4e 6f 74 65 2a 3a 20 67    70 74 65 6c 20 77 6f 72 6b 73 20 61 6e 79 77 68  | ffer:..*Note*:.gptel.works.anywh | 
| b3e0 |  65 72 65 20 69 6e 20 45 6d 61 63 73 2e 20 20 54    68 65 20 64 65 64 69 63 61 74 65 64 20 63 68 61  | ere.in.Emacs...The.dedicated.cha | 
| b400 |  74 20 62 75 66 66 65 72 20 6f 6e 6c 79 20 61 64    64 73 20 73 6f 6d 65 20 63 6f 6e 76 65 6e 69 65  | t.buffer.only.adds.some.convenie | 
| b420 |  6e 63 65 73 2e 0a 0a 31 2e 20 52 75 6e 20 3d 4d    2d 78 20 67 70 74 65 6c 3d 20 74 6f 20 73 74 61  | nces...1..Run.=M-x.gptel=.to.sta | 
| b440 |  72 74 20 6f 72 20 73 77 69 74 63 68 20 74 6f 20    74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2e  | rt.or.switch.to.the.chat.buffer. | 
| b460 |  20 49 74 20 77 69 6c 6c 20 61 73 6b 20 79 6f 75    20 66 6f 72 20 74 68 65 20 6b 65 79 20 69 66 20  | .It.will.ask.you.for.the.key.if. | 
| b480 |  79 6f 75 20 73 6b 69 70 70 65 64 20 74 68 65 20    70 72 65 76 69 6f 75 73 20 73 74 65 70 2e 20 52  | you.skipped.the.previous.step..R | 
| b4a0 |  75 6e 20 69 74 20 77 69 74 68 20 61 20 70 72 65    66 69 78 2d 61 72 67 20 28 3d 43 2d 75 20 4d 2d  | un.it.with.a.prefix-arg.(=C-u.M- | 
| b4c0 |  78 20 67 70 74 65 6c 3d 29 20 74 6f 20 73 74 61    72 74 20 61 20 6e 65 77 20 73 65 73 73 69 6f 6e  | x.gptel=).to.start.a.new.session | 
| b4e0 |  2e 0a 0a 32 2e 20 49 6e 20 74 68 65 20 67 70 74    65 6c 20 62 75 66 66 65 72 2c 20 73 65 6e 64 20  | ...2..In.the.gptel.buffer,.send. | 
| b500 |  79 6f 75 72 20 70 72 6f 6d 70 74 20 77 69 74 68    20 3d 4d 2d 78 20 67 70 74 65 6c 2d 73 65 6e 64  | your.prompt.with.=M-x.gptel-send | 
| b520 |  3d 2c 20 62 6f 75 6e 64 20 74 6f 20 3d 43 2d 63    20 52 45 54 3d 2e 0a 0a 33 2e 20 53 65 74 20 63  | =,.bound.to.=C-c.RET=...3..Set.c | 
| b540 |  68 61 74 20 70 61 72 61 6d 65 74 65 72 73 20 28    4c 4c 4d 20 70 72 6f 76 69 64 65 72 2c 20 6d 6f  | hat.parameters.(LLM.provider,.mo | 
| b560 |  64 65 6c 2c 20 64 69 72 65 63 74 69 76 65 73 20    65 74 63 29 20 66 6f 72 20 74 68 65 20 73 65 73  | del,.directives.etc).for.the.ses | 
| b580 |  73 69 6f 6e 20 62 79 20 63 61 6c 6c 69 6e 67 20    3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20 77 69 74  | sion.by.calling.=gptel-send=.wit | 
| b5a0 |  68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d    65 6e 74 20 28 3d 43 2d 75 20 43 2d 63 20 52 45  | h.a.prefix.argument.(=C-u.C-c.RE | 
| b5c0 |  54 3d 29 3a 0a 20 20 20 0a 23 2b 68 74 6d 6c 3a    20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73  | T=):.....#+html:.<img.src="https | 
| b5e0 |  3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61    72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73  | ://github.com/karthink/gptel/ass | 
| b600 |  65 74 73 2f 38 36 30 37 35 33 32 2f 65 62 34 38    36 37 65 35 2d 33 30 61 63 2d 34 35 35 66 2d 39  | ets/8607532/eb4867e5-30ac-455f-9 | 
| b620 |  39 39 66 2d 65 31 37 31 32 33 61 66 62 38 31 30    22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  | 99f-e17123afb810".align="center" | 
| b640 |  20 61 6c 74 3d 22 49 6d 61 67 65 20 73 68 6f 77    69 6e 67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75  | .alt="Image.showing.gptel's.menu | 
| b660 |  20 77 69 74 68 20 73 6f 6d 65 20 6f 66 20 74 68    65 20 61 76 61 69 6c 61 62 6c 65 20 71 75 65 72  | .with.some.of.the.available.quer | 
| b680 |  79 20 6f 70 74 69 6f 6e 73 2e 22 3e 0a 0a 54 68    61 74 27 73 20 69 74 2e 20 59 6f 75 20 63 61 6e  | y.options.">..That's.it..You.can | 
| b6a0 |  20 67 6f 20 62 61 63 6b 20 61 6e 64 20 65 64 69    74 20 70 72 65 76 69 6f 75 73 20 70 72 6f 6d 70  | .go.back.and.edit.previous.promp | 
| b6c0 |  74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73    20 69 66 20 79 6f 75 20 77 61 6e 74 2e 0a 0a 54  | ts.and.responses.if.you.want...T | 
| b6e0 |  68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 20    69 73 20 3d 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64  | he.default.mode.is.=markdown-mod | 
| b700 |  65 3d 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2c    20 65 6c 73 65 20 3d 74 65 78 74 2d 6d 6f 64 65  | e=.if.available,.else.=text-mode | 
| b720 |  3d 2e 20 20 59 6f 75 20 63 61 6e 20 73 65 74 20    3d 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d  | =...You.can.set.=gptel-default-m | 
| b740 |  6f 64 65 3d 20 74 6f 20 3d 6f 72 67 2d 6d 6f 64    65 3d 20 69 66 20 64 65 73 69 72 65 64 2e 0a 0a  | ode=.to.=org-mode=.if.desired... | 
| b760 |  59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 64 65 66    69 6e 65 20 61 20 22 70 72 65 73 65 74 22 20 62  | You.can.also.define.a."preset".b | 
| b780 |  75 6e 64 6c 65 20 6f 66 20 6f 70 74 69 6f 6e 73    20 74 68 61 74 20 61 72 65 20 61 70 70 6c 69 65  | undle.of.options.that.are.applie | 
| b7a0 |  64 20 74 6f 67 65 74 68 65 72 2c 20 73 65 65 20    5b 5b 23 6f 70 74 69 6f 6e 2d 70 72 65 73 65 74  | d.together,.see.[[#option-preset | 
| b7c0 |  73 5d 5b 4f 70 74 69 6f 6e 20 70 72 65 73 65 74    73 5d 5d 20 62 65 6c 6f 77 2e 0a 0a 23 2b 68 74  | s][Option.presets]].below...#+ht | 
| b7e0 |  6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75    6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 6e 63 6c  | ml:.<details><summary>.****.Incl | 
| b800 |  75 64 69 6e 67 20 6d 65 64 69 61 20 28 69 6d 61    67 65 73 2c 20 64 6f 63 75 6d 65 6e 74 73 20 6f  | uding.media.(images,.documents.o | 
| b820 |  72 20 70 6c 61 69 6e 2d 74 65 78 74 20 66 69 6c    65 73 29 20 77 69 74 68 20 72 65 71 75 65 73 74  | r.plain-text.files).with.request | 
| b840 |  73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d    61 72 79 3e 0a 0a 67 70 74 65 6c 20 73 75 70 70  | s.#+html:.</summary>..gptel.supp | 
| b860 |  6f 72 74 73 20 73 65 6e 64 69 6e 67 20 6d 65 64    69 61 20 69 6e 20 4d 61 72 6b 64 6f 77 6e 20 61  | orts.sending.media.in.Markdown.a | 
| b880 |  6e 64 20 4f 72 67 20 63 68 61 74 20 62 75 66 66    65 72 73 2c 20 62 75 74 20 74 68 69 73 20 66 65  | nd.Org.chat.buffers,.but.this.fe | 
| b8a0 |  61 74 75 72 65 20 69 73 20 64 69 73 61 62 6c 65    64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 2d  | ature.is.disabled.by.default...- | 
| b8c0 |  20 59 6f 75 20 63 61 6e 20 65 6e 61 62 6c 65 20    69 74 20 67 6c 6f 62 61 6c 6c 79 2c 20 66 6f 72  | .You.can.enable.it.globally,.for | 
| b8e0 |  20 61 6c 6c 20 6d 6f 64 65 6c 73 20 74 68 61 74    20 73 75 70 70 6f 72 74 20 69 74 2c 20 62 79 20  | .all.models.that.support.it,.by. | 
| b900 |  73 65 74 74 69 6e 67 20 3d 67 70 74 65 6c 2d 74    72 61 63 6b 2d 6d 65 64 69 61 3d 2e 20 20 0a 2d  | setting.=gptel-track-media=....- | 
| b920 |  20 4f 72 20 79 6f 75 20 63 61 6e 20 73 65 74 20    69 74 20 6c 6f 63 61 6c 6c 79 2c 20 6a 75 73 74  | .Or.you.can.set.it.locally,.just | 
| b940 |  20 66 6f 72 20 74 68 65 20 63 68 61 74 20 62 75    66 66 65 72 2c 20 76 69 61 20 74 68 65 20 68 65  | .for.the.chat.buffer,.via.the.he | 
| b960 |  61 64 65 72 20 6c 69 6e 65 3a 0a 0a 23 2b 68 74    6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d 22 68 74  | ader.line:..#+html:.<img.src="ht | 
| b980 |  74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d    2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e 74  | tps://github.com/user-attachment | 
| b9a0 |  73 2f 61 73 73 65 74 73 2f 39 31 66 36 61 61 61    62 2d 32 65 61 34 2d 34 38 30 36 2d 39 63 63 39  | s/assets/91f6aaab-2ea4-4806-9cc9 | 
| b9c0 |  2d 33 39 62 34 62 34 36 61 38 65 36 63 22 20 61    6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c  | -39b4b46a8e6c".align="center".al | 
| b9e0 |  74 3d 22 49 6d 61 67 65 20 73 68 6f 77 69 6e 67    20 61 20 67 70 74 65 6c 20 63 68 61 74 20 62 75  | t="Image.showing.a.gptel.chat.bu | 
| ba00 |  66 66 65 72 27 73 20 68 65 61 64 65 72 20 6c 69    6e 65 20 77 69 74 68 20 74 68 65 20 62 75 74 74  | ffer's.header.line.with.the.butt | 
| ba20 |  6f 6e 20 74 6f 20 74 6f 67 67 6c 65 20 6d 65 64    69 61 20 73 75 70 70 6f 72 74 22 3e 0a 0a 2d 2d  | on.to.toggle.media.support">..-- | 
| ba40 |  2d 2d 2d 0a 0a 54 68 65 72 65 20 61 72 65 20 74    77 6f 20 77 61 79 73 20 74 6f 20 69 6e 63 6c 75  | ---..There.are.two.ways.to.inclu | 
| ba60 |  64 65 20 6d 65 64 69 61 20 6f 72 20 70 6c 61 69    6e 2d 74 65 78 74 20 66 69 6c 65 73 20 77 69 74  | de.media.or.plain-text.files.wit | 
| ba80 |  68 20 72 65 71 75 65 73 74 73 3a 0a 0a 31 2e 20    41 64 64 69 6e 67 20 6d 65 64 69 61 20 66 69 6c  | h.requests:..1..Adding.media.fil | 
| baa0 |  65 73 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78    74 20 77 69 74 68 20 3d 67 70 74 65 6c 2d 61 64  | es.to.the.context.with.=gptel-ad | 
| bac0 |  64 2d 66 69 6c 65 3d 2c 20 64 65 73 63 72 69 62    65 64 20 66 75 72 74 68 65 72 20 62 65 6c 6f 77  | d-file=,.described.further.below | 
| bae0 |  2e 0a 32 2e 20 49 6e 63 6c 75 64 69 6e 67 20 6c    69 6e 6b 73 20 74 6f 20 6d 65 64 69 61 20 69 6e  | ..2..Including.links.to.media.in | 
| bb00 |  20 63 68 61 74 20 62 75 66 66 65 72 73 2c 20 64    65 73 63 72 69 62 65 64 20 68 65 72 65 3a 0a 0a  | .chat.buffers,.described.here:.. | 
| bb20 |  54 6f 20 69 6e 63 6c 75 64 65 20 70 6c 61 69 6e    2d 74 65 78 74 20 66 69 6c 65 73 2c 20 69 6d 61  | To.include.plain-text.files,.ima | 
| bb40 |  67 65 73 20 6f 72 20 6f 74 68 65 72 20 73 75 70    70 6f 72 74 65 64 20 64 6f 63 75 6d 65 6e 74 20  | ges.or.other.supported.document. | 
| bb60 |  74 79 70 65 73 20 77 69 74 68 20 72 65 71 75 65    73 74 73 20 69 6e 20 63 68 61 74 20 62 75 66 66  | types.with.requests.in.chat.buff | 
| bb80 |  65 72 73 2c 20 79 6f 75 20 63 61 6e 20 69 6e 63    6c 75 64 65 20 6c 69 6e 6b 73 20 74 6f 20 74 68  | ers,.you.can.include.links.to.th | 
| bba0 |  65 6d 20 69 6e 20 74 68 65 20 63 68 61 74 20 62    75 66 66 65 72 2e 20 20 53 75 63 68 20 61 20 6c  | em.in.the.chat.buffer...Such.a.l | 
| bbc0 |  69 6e 6b 20 6d 75 73 74 20 62 65 20 22 73 74 61    6e 64 61 6c 6f 6e 65 22 2c 20 69 2e 65 2e 20 6f  | ink.must.be."standalone",.i.e..o | 
| bbe0 |  6e 20 61 20 6c 69 6e 65 20 62 79 20 69 74 73 65    6c 66 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79  | n.a.line.by.itself.surrounded.by | 
| bc00 |  20 77 68 69 74 65 73 70 61 63 65 2e 0a 0a 49 6e    20 4f 72 67 20 6d 6f 64 65 2c 20 66 6f 72 20 65  | .whitespace...In.Org.mode,.for.e | 
| bc20 |  78 61 6d 70 6c 65 2c 20 74 68 65 20 66 6f 6c 6c    6f 77 69 6e 67 20 61 72 65 20 61 6c 6c 20 2a 76  | xample,.the.following.are.all.*v | 
| bc40 |  61 6c 69 64 2a 20 77 61 79 73 20 6f 66 20 69 6e    63 6c 75 64 69 6e 67 20 61 6e 20 69 6d 61 67 65  | alid*.ways.of.including.an.image | 
| bc60 |  20 77 69 74 68 20 74 68 65 20 72 65 71 75 65 73    74 3a 0a 0a 2d 20 22 53 74 61 6e 64 61 6c 6f 6e  | .with.the.request:..-."Standalon | 
| bc80 |  65 22 20 66 69 6c 65 20 6c 69 6e 6b 73 3a 0a 23    2b 62 65 67 69 6e 5f 73 72 63 20 0a 49 6e 20 74  | e".file.links:.#+begin_src..In.t | 
| bca0 |  68 69 73 20 79 61 6d 6c 20 66 69 6c 65 2c 20 49    20 68 61 76 65 20 73 6f 6d 65 20 6b 65 79 2d 72  | his.yaml.file,.I.have.some.key-r | 
| bcc0 |  65 6d 61 70 70 69 6e 67 20 63 6f 6e 66 69 67 75    72 61 74 69 6f 6e 3a 0a 0a 5b 5b 66 69 6c 65 3a  | emapping.configuration:..[[file: | 
| bce0 |  2f 70 61 74 68 2f 74 6f 2f 72 65 6d 61 70 2e 79    61 6d 6c 5d 5d 0a 0a 43 6f 75 6c 64 20 79 6f 75  | /path/to/remap.yaml]]..Could.you | 
| bd00 |  20 65 78 70 6c 61 69 6e 20 77 68 61 74 20 69 74    20 64 6f 65 73 2c 20 61 6e 64 20 77 68 69 63 68  | .explain.what.it.does,.and.which | 
| bd20 |  20 70 72 6f 67 72 61 6d 20 6d 69 67 68 74 20 62    65 20 75 73 69 6e 67 20 69 74 3f 0a 23 2b 65 6e  | .program.might.be.using.it?.#+en | 
| bd40 |  64 5f 73 72 63 0a 0a 23 2b 62 65 67 69 6e 5f 73    72 63 0a 44 65 73 63 72 69 62 65 20 74 68 69 73  | d_src..#+begin_src.Describe.this | 
| bd60 |  20 70 69 63 74 75 72 65 0a 0a 5b 5b 66 69 6c 65    3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e  | .picture..[[file:/path/to/screen | 
| bd80 |  73 68 6f 74 2e 70 6e 67 5d 5d 0a 0a 46 6f 63 75    73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 6f  | shot.png]]..Focus.specifically.o | 
| bda0 |  6e 20 74 68 65 20 74 65 78 74 20 63 6f 6e 74 65    6e 74 2e 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 2d  | n.the.text.content..#+end_src..- | 
| bdc0 |  20 22 53 74 61 6e 64 61 6c 6f 6e 65 22 20 66 69    6c 65 20 6c 69 6e 6b 20 77 69 74 68 20 64 65 73  | ."Standalone".file.link.with.des | 
| bde0 |  63 72 69 70 74 69 6f 6e 3a 0a 23 2b 62 65 67 69    6e 5f 73 72 63 20 0a 44 65 73 63 72 69 62 65 20  | cription:.#+begin_src..Describe. | 
| be00 |  74 68 69 73 20 70 69 63 74 75 72 65 0a 0a 5b 5b    66 69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63  | this.picture..[[file:/path/to/sc | 
| be20 |  72 65 65 6e 73 68 6f 74 2e 70 6e 67 5d 5b 73 6f    6d 65 20 70 69 63 74 75 72 65 5d 5d 0a 0a 46 6f  | reenshot.png][some.picture]]..Fo | 
| be40 |  63 75 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79    20 6f 6e 20 74 68 65 20 74 65 78 74 20 63 6f 6e  | cus.specifically.on.the.text.con | 
| be60 |  74 65 6e 74 2e 0a 23 2b 65 6e 64 5f 73 72 63 0a    0a 2d 20 22 53 74 61 6e 64 61 6c 6f 6e 65 22 2c  | tent..#+end_src..-."Standalone", | 
| be80 |  20 61 6e 67 6c 65 20 66 69 6c 65 20 6c 69 6e 6b    3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44  | .angle.file.link:.#+begin_src..D | 
| bea0 |  65 73 63 72 69 62 65 20 74 68 69 73 20 70 69 63    74 75 72 65 0a 0a 3c 66 69 6c 65 3a 2f 70 61 74  | escribe.this.picture..<file:/pat | 
| bec0 |  68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74 2e    70 6e 67 3e 0a 0a 46 6f 63 75 73 20 73 70 65 63  | h/to/screenshot.png>..Focus.spec | 
| bee0 |  69 66 69 63 61 6c 6c 79 20 6f 6e 20 74 68 65 20    74 65 78 74 20 63 6f 6e 74 65 6e 74 2e 0a 23 2b  | ifically.on.the.text.content..#+ | 
| bf00 |  65 6e 64 5f 73 72 63 0a 0a 54 68 65 20 66 6f 6c    6c 6f 77 69 6e 67 20 6c 69 6e 6b 73 20 61 72 65  | end_src..The.following.links.are | 
| bf20 |  20 2a 6e 6f 74 20 76 61 6c 69 64 2a 2c 20 61 6e    64 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 68  | .*not.valid*,.and.the.text.of.th | 
| bf40 |  65 20 6c 69 6e 6b 20 77 69 6c 6c 20 62 65 20 73    65 6e 74 20 69 6e 73 74 65 61 64 20 6f 66 20 74  | e.link.will.be.sent.instead.of.t | 
| bf60 |  68 65 20 66 69 6c 65 20 63 6f 6e 74 65 6e 74 73    3a 0a 0a 2d 20 49 6e 6c 69 6e 65 20 6c 69 6e 6b  | he.file.contents:..-.Inline.link | 
| bf80 |  3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 0a 44    65 73 63 72 69 62 65 20 74 68 69 73 20 5b 5b 66  | :.#+begin_src..Describe.this.[[f | 
| bfa0 |  69 6c 65 3a 2f 70 61 74 68 2f 74 6f 2f 73 63 72    65 65 6e 73 68 6f 74 2e 70 6e 67 5d 5b 70 69 63  | ile:/path/to/screenshot.png][pic | 
| bfc0 |  74 75 72 65 5d 5d 2e 0a 0a 46 6f 63 75 73 20 73    70 65 63 69 66 69 63 61 6c 6c 79 20 6f 6e 20 74  | ture]]...Focus.specifically.on.t | 
| bfe0 |  68 65 20 74 65 78 74 20 63 6f 6e 74 65 6e 74 2e    0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 2d 20 4c 69  | he.text.content..#+end_src..-.Li | 
| c000 |  6e 6b 20 6e 6f 74 20 22 73 74 61 6e 64 61 6c 6f    6e 65 22 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63  | nk.not."standalone":.#+begin_src | 
| c020 |  0a 44 65 73 63 72 69 62 65 20 74 68 69 73 20 70    69 63 74 75 72 65 3a 20 0a 5b 5b 66 69 6c 65 3a  | .Describe.this.picture:..[[file: | 
| c040 |  2f 70 61 74 68 2f 74 6f 2f 73 63 72 65 65 6e 73    68 6f 74 2e 70 6e 67 5d 5d 0a 46 6f 63 75 73 20  | /path/to/screenshot.png]].Focus. | 
| c060 |  73 70 65 63 69 66 69 63 61 6c 6c 79 20 6f 6e 20    74 68 65 20 74 65 78 74 20 63 6f 6e 74 65 6e 74  | specifically.on.the.text.content | 
| c080 |  2e 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 2d 20 4e    6f 74 20 61 20 76 61 6c 69 64 20 4f 72 67 20 6c  | ..#+end_src..-.Not.a.valid.Org.l | 
| c0a0 |  69 6e 6b 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63    20 0a 44 65 73 63 72 69 62 65 20 74 68 65 20 70  | ink:.#+begin_src..Describe.the.p | 
| c0c0 |  69 63 74 75 72 65 0a 0a 66 69 6c 65 3a 2f 70 61    74 68 2f 74 6f 2f 73 63 72 65 65 6e 73 68 6f 74  | icture..file:/path/to/screenshot | 
| c0e0 |  2e 70 6e 67 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a    53 69 6d 69 6c 61 72 20 63 72 69 74 65 72 69 61  | .png.#+end_src..Similar.criteria | 
| c100 |  20 61 70 70 6c 79 20 74 6f 20 4d 61 72 6b 64 6f    77 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e  | .apply.to.Markdown.chat.buffers. | 
| c120 |  0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61    69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65  | ..#+html:.</details>.#+html:.<de | 
| c140 |  74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a    2a 2a 2a 2a 20 53 61 76 65 20 61 6e 64 20 72 65  | tails><summary>.****.Save.and.re | 
| c160 |  73 74 6f 72 65 20 79 6f 75 72 20 63 68 61 74 20    73 65 73 73 69 6f 6e 73 0a 23 2b 68 74 6d 6c 3a  | store.your.chat.sessions.#+html: | 
| c180 |  20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 53 61 76    69 6e 67 20 74 68 65 20 66 69 6c 65 20 77 69 6c  | .</summary>..Saving.the.file.wil | 
| c1a0 |  6c 20 73 61 76 65 20 74 68 65 20 73 74 61 74 65    20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72 73 61  | l.save.the.state.of.the.conversa | 
| c1c0 |  74 69 6f 6e 20 61 73 20 77 65 6c 6c 2e 20 20 54    6f 20 72 65 73 75 6d 65 20 74 68 65 20 63 68 61  | tion.as.well...To.resume.the.cha | 
| c1e0 |  74 2c 20 6f 70 65 6e 20 74 68 65 20 66 69 6c 65    20 61 6e 64 20 74 75 72 6e 20 6f 6e 20 3d 67 70  | t,.open.the.file.and.turn.on.=gp | 
| c200 |  74 65 6c 2d 6d 6f 64 65 3d 20 62 65 66 6f 72 65    20 65 64 69 74 69 6e 67 20 74 68 65 20 62 75 66  | tel-mode=.before.editing.the.buf | 
| c220 |  66 65 72 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f    64 65 74 61 69 6c 73 3e 0a 2a 2a 2a 20 53 65 74  | fer...#+html:.</details>.***.Set | 
| c240 |  74 69 6e 67 20 6f 70 74 69 6f 6e 73 20 28 62 61    63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 2c 20 72 65  | ting.options.(backend,.model,.re | 
| c260 |  71 75 65 73 74 20 70 61 72 61 6d 65 74 65 72 73    2c 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73  | quest.parameters,.system.prompts | 
| c280 |  20 61 6e 64 20 6d 6f 72 65 29 0a 0a 4d 6f 73 74    20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 20 63  | .and.more)..Most.gptel.options.c | 
| c2a0 |  61 6e 20 62 65 20 73 65 74 20 66 72 6f 6d 20 67    70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74  | an.be.set.from.gptel's.transient | 
| c2c0 |  20 6d 65 6e 75 2c 20 61 76 61 69 6c 61 62 6c 65    20 62 79 20 63 61 6c 6c 69 6e 67 20 3d 67 70 74  | .menu,.available.by.calling.=gpt | 
| c2e0 |  65 6c 2d 73 65 6e 64 3d 20 77 69 74 68 20 61 20    70 72 65 66 69 78 2d 61 72 67 75 6d 65 6e 74 2c  | el-send=.with.a.prefix-argument, | 
| c300 |  20 6f 72 20 76 69 61 20 3d 67 70 74 65 6c 2d 6d    65 6e 75 3d 2e 20 20 54 6f 20 63 68 61 6e 67 65  | .or.via.=gptel-menu=...To.change | 
| c320 |  20 74 68 65 69 72 20 64 65 66 61 75 6c 74 20 76    61 6c 75 65 73 20 69 6e 20 79 6f 75 72 20 63 6f  | .their.default.values.in.your.co | 
| c340 |  6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 73 65 65    20 5b 5b 23 61 64 64 69 74 69 6f 6e 61 6c 2d 63  | nfiguration,.see.[[#additional-c | 
| c360 |  6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5b 41 64    64 69 74 69 6f 6e 61 6c 20 43 6f 6e 66 69 67 75  | onfiguration][Additional.Configu | 
| c380 |  72 61 74 69 6f 6e 5d 5d 2e 20 20 43 68 61 74 20    62 75 66 66 65 72 2d 73 70 65 63 69 66 69 63 20  | ration]]...Chat.buffer-specific. | 
| c3a0 |  6f 70 74 69 6f 6e 73 20 61 72 65 20 61 6c 73 6f    20 61 76 61 69 6c 61 62 6c 65 20 76 69 61 20 74  | options.are.also.available.via.t | 
| c3c0 |  68 65 20 68 65 61 64 65 72 2d 6c 69 6e 65 20 69    6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a  | he.header-line.in.chat.buffers.. | 
| c3e0 |  0a 23 20 54 4f 44 4f 20 52 65 6d 6f 76 65 20 74    68 69 73 20 77 68 65 6e 20 77 72 69 74 69 6e 67  | .#.TODO.Remove.this.when.writing | 
| c400 |  20 74 68 65 20 6d 61 6e 75 61 6c 2e 0a 53 65 6c    65 63 74 69 6e 67 20 61 20 6d 6f 64 65 6c 20 61  | .the.manual..Selecting.a.model.a | 
| c420 |  6e 64 20 62 61 63 6b 65 6e 64 20 63 61 6e 20 62    65 20 64 6f 6e 65 20 69 6e 74 65 72 61 63 74 69  | nd.backend.can.be.done.interacti | 
| c440 |  76 65 6c 79 20 76 69 61 20 74 68 65 20 3d 2d 6d    3d 20 63 6f 6d 6d 61 6e 64 20 6f 66 20 3d 67 70  | vely.via.the.=-m=.command.of.=gp | 
| c460 |  74 65 6c 2d 6d 65 6e 75 3d 2e 20 20 41 76 61 69    6c 61 62 6c 65 20 72 65 67 69 73 74 65 72 65 64  | tel-menu=...Available.registered | 
| c480 |  20 6d 6f 64 65 6c 73 20 61 72 65 20 70 72 65 66    69 78 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65  | .models.are.prefixed.by.the.name | 
| c4a0 |  20 6f 66 20 74 68 65 69 72 20 62 61 63 6b 65 6e    64 20 77 69 74 68 20 61 20 73 74 72 69 6e 67 20  | .of.their.backend.with.a.string. | 
| c4c0 |  6c 69 6b 65 20 3d 43 68 61 74 47 50 54 3a 67 70    74 2d 34 6f 2d 6d 69 6e 69 3d 2c 20 77 68 65 72  | like.=ChatGPT:gpt-4o-mini=,.wher | 
| c4e0 |  65 20 3d 43 68 61 74 47 50 54 3d 20 69 73 20 74    68 65 20 62 61 63 6b 65 6e 64 20 6e 61 6d 65 20  | e.=ChatGPT=.is.the.backend.name. | 
| c500 |  79 6f 75 20 75 73 65 64 20 74 6f 20 72 65 67 69    73 74 65 72 20 69 74 20 61 6e 64 20 3d 67 70 74  | you.used.to.register.it.and.=gpt | 
| c520 |  2d 34 6f 2d 6d 69 6e 69 3d 20 69 73 20 74 68 65    20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64  | -4o-mini=.is.the.name.of.the.mod | 
| c540 |  65 6c 2e 0a 0a 2a 2a 2a 20 49 6e 63 6c 75 64 65    20 6d 6f 72 65 20 63 6f 6e 74 65 78 74 20 77 69  | el...***.Include.more.context.wi | 
| c560 |  74 68 20 72 65 71 75 65 73 74 73 0a 0a 42 79 20    64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 77  | th.requests..By.default,.gptel.w | 
| c580 |  69 6c 6c 20 71 75 65 72 79 20 74 68 65 20 4c 4c    4d 20 77 69 74 68 20 74 68 65 20 61 63 74 69 76  | ill.query.the.LLM.with.the.activ | 
| c5a0 |  65 20 72 65 67 69 6f 6e 20 6f 72 20 74 68 65 20    62 75 66 66 65 72 20 63 6f 6e 74 65 6e 74 73 20  | e.region.or.the.buffer.contents. | 
| c5c0 |  75 70 20 74 6f 20 74 68 65 20 63 75 72 73 6f 72    2e 20 20 4f 66 74 65 6e 20 69 74 20 63 61 6e 20  | up.to.the.cursor...Often.it.can. | 
| c5e0 |  62 65 20 68 65 6c 70 66 75 6c 20 74 6f 20 70 72    6f 76 69 64 65 20 74 68 65 20 4c 4c 4d 20 77 69  | be.helpful.to.provide.the.LLM.wi | 
| c600 |  74 68 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f    6e 74 65 78 74 20 66 72 6f 6d 20 6f 75 74 73 69  | th.additional.context.from.outsi | 
| c620 |  64 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 62    75 66 66 65 72 2e 20 46 6f 72 20 65 78 61 6d 70  | de.the.current.buffer..For.examp | 
| c640 |  6c 65 2c 20 77 68 65 6e 20 79 6f 75 27 72 65 20    69 6e 20 61 20 63 68 61 74 20 62 75 66 66 65 72  | le,.when.you're.in.a.chat.buffer | 
| c660 |  20 62 75 74 20 77 61 6e 74 20 74 6f 20 61 73 6b    20 71 75 65 73 74 69 6f 6e 73 20 61 62 6f 75 74  | .but.want.to.ask.questions.about | 
| c680 |  20 61 20 28 70 6f 73 73 69 62 6c 79 20 63 68 61    6e 67 69 6e 67 29 20 63 6f 64 65 20 62 75 66 66  | .a.(possibly.changing).code.buff | 
| c6a0 |  65 72 20 61 6e 64 20 61 75 78 69 6c 69 61 72 79    20 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 2e 0a  | er.and.auxiliary.project.files.. | 
| c6c0 |  0a 59 6f 75 20 63 61 6e 20 69 6e 63 6c 75 64 65    20 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 78 74  | .You.can.include.additional.text | 
| c6e0 |  20 72 65 67 69 6f 6e 73 2c 20 62 75 66 66 65 72    73 20 6f 72 20 66 69 6c 65 73 20 77 69 74 68 20  | .regions,.buffers.or.files.with. | 
| c700 |  67 70 74 65 6c 27 73 20 71 75 65 72 69 65 73 20    69 6e 20 74 77 6f 20 77 61 79 73 2e 20 20 54 68  | gptel's.queries.in.two.ways...Th | 
| c720 |  65 20 66 69 72 73 74 20 69 73 20 76 69 61 20 6c    69 6e 6b 73 20 69 6e 20 63 68 61 74 20 62 75 66  | e.first.is.via.links.in.chat.buf | 
| c740 |  66 65 72 73 2c 20 61 73 20 64 65 73 63 72 69 62    65 64 20 61 62 6f 76 65 20 28 73 65 65 20 22 49  | fers,.as.described.above.(see."I | 
| c760 |  6e 63 6c 75 64 69 6e 67 20 6d 65 64 69 61 20 77    69 74 68 20 72 65 71 75 65 73 74 73 22 29 2e 0a  | ncluding.media.with.requests").. | 
| c780 |  0a 54 68 65 20 73 65 63 6f 6e 64 20 69 73 20 67    6c 6f 62 61 6c 6c 79 20 76 69 61 20 64 65 64 69  | .The.second.is.globally.via.dedi | 
| c7a0 |  63 61 74 65 64 20 63 6f 6e 74 65 78 74 20 63 6f    6d 6d 61 6e 64 73 3a 20 79 6f 75 20 63 61 6e 20  | cated.context.commands:.you.can. | 
| c7c0 |  61 64 64 20 61 20 73 65 6c 65 63 74 65 64 20 72    65 67 69 6f 6e 2c 20 62 75 66 66 65 72 20 6f 72  | add.a.selected.region,.buffer.or | 
| c7e0 |  20 66 69 6c 65 20 74 6f 20 67 70 74 65 6c 27 73    20 63 6f 6e 74 65 78 74 20 66 72 6f 6d 20 74 68  | .file.to.gptel's.context.from.th | 
| c800 |  65 20 6d 65 6e 75 2c 20 6f 72 20 63 61 6c 6c 20    3d 67 70 74 65 6c 2d 61 64 64 3d 2e 20 20 54 6f  | e.menu,.or.call.=gptel-add=...To | 
| c820 |  20 61 64 64 20 61 20 66 69 6c 65 20 75 73 65 20    3d 67 70 74 65 6c 2d 61 64 64 3d 20 69 6e 20 44  | .add.a.file.use.=gptel-add=.in.D | 
| c840 |  69 72 65 64 2c 20 6f 72 20 75 73 65 20 74 68 65    20 64 65 64 69 63 61 74 65 64 20 3d 67 70 74 65  | ired,.or.use.the.dedicated.=gpte | 
| c860 |  6c 2d 61 64 64 2d 66 69 6c 65 3d 20 63 6f 6d 6d    61 6e 64 2e 20 20 44 69 72 65 63 74 6f 72 69 65  | l-add-file=.command...Directorie | 
| c880 |  73 20 77 69 6c 6c 20 68 61 76 65 20 74 68 65 69    72 20 66 69 6c 65 73 20 61 64 64 65 64 20 72 65  | s.will.have.their.files.added.re | 
| c8a0 |  63 75 72 73 69 76 65 6c 79 20 61 66 74 65 72 20    70 72 6f 6d 70 74 69 6e 67 20 66 6f 72 20 63 6f  | cursively.after.prompting.for.co | 
| c8c0 |  6e 66 69 72 6d 61 74 69 6f 6e 2e 0a 0a 54 68 69    73 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e  | nfirmation...This.additional.con | 
| c8e0 |  74 65 78 74 20 69 73 20 22 6c 69 76 65 22 20 61    6e 64 20 6e 6f 74 20 61 20 73 6e 61 70 73 68 6f  | text.is."live".and.not.a.snapsho | 
| c900 |  74 2e 20 20 4f 6e 63 65 20 61 64 64 65 64 2c 20    74 68 65 20 72 65 67 69 6f 6e 73 2c 20 62 75 66  | t...Once.added,.the.regions,.buf | 
| c920 |  66 65 72 73 20 6f 72 20 66 69 6c 65 73 20 61 72    65 20 73 63 61 6e 6e 65 64 20 61 6e 64 20 69 6e  | fers.or.files.are.scanned.and.in | 
| c940 |  63 6c 75 64 65 64 20 61 74 20 74 68 65 20 74 69    6d 65 20 6f 66 20 65 61 63 68 20 71 75 65 72 79  | cluded.at.the.time.of.each.query | 
| c960 |  2e 20 20 57 68 65 6e 20 75 73 69 6e 67 20 6d 75    6c 74 69 2d 6d 6f 64 61 6c 20 6d 6f 64 65 6c 73  | ...When.using.multi-modal.models | 
| c980 |  2c 20 61 64 64 65 64 20 66 69 6c 65 73 20 63 61    6e 20 62 65 20 6f 66 20 61 6e 79 20 73 75 70 70  | ,.added.files.can.be.of.any.supp | 
| c9a0 |  6f 72 74 65 64 20 74 79 70 65 20 2d 2d 20 74 79    70 69 63 61 6c 6c 79 20 69 6d 61 67 65 73 2e 0a  | orted.type.--.typically.images.. | 
| c9c0 |  0a 59 6f 75 20 63 61 6e 20 65 78 61 6d 69 6e 65    20 74 68 65 20 61 63 74 69 76 65 20 63 6f 6e 74  | .You.can.examine.the.active.cont | 
| c9e0 |  65 78 74 20 66 72 6f 6d 20 74 68 65 20 6d 65 6e    75 3a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20  | ext.from.the.menu:.#+html:.<img. | 
| ca00 |  73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74    68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b  | src="https://github.com/karthink | 
| ca20 |  2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36    30 37 35 33 32 2f 36 33 63 64 37 66 63 38 2d 36  | /gptel/assets/8607532/63cd7fc8-6 | 
| ca40 |  62 33 65 2d 34 32 61 65 2d 62 36 63 61 2d 30 36    66 66 39 33 35 62 61 65 39 63 22 20 61 6c 69 67  | b3e-42ae-b6ca-06ff935bae9c".alig | 
| ca60 |  6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22    49 6d 61 67 65 20 73 68 6f 77 69 6e 67 20 67 70  | n="center".alt="Image.showing.gp | 
| ca80 |  74 65 6c 27 73 20 6d 65 6e 75 20 77 69 74 68 20    74 68 65 20 22 69 6e 73 70 65 63 74 20 63 6f 6e  | tel's.menu.with.the."inspect.con | 
| caa0 |  74 65 78 74 22 20 63 6f 6d 6d 61 6e 64 2e 22 3e    0a 0a 41 6e 64 20 74 68 65 6e 20 62 72 6f 77 73  | text".command.">..And.then.brows | 
| cac0 |  65 20 74 68 72 6f 75 67 68 20 6f 72 20 72 65 6d    6f 76 65 20 63 6f 6e 74 65 78 74 20 66 72 6f 6d  | e.through.or.remove.context.from | 
| cae0 |  20 74 68 65 20 63 6f 6e 74 65 78 74 20 62 75 66    66 65 72 3a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d  | .the.context.buffer:.#+html:.<im | 
| cb00 |  67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67    69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69  | g.src="https://github.com/karthi | 
| cb20 |  6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73 2f    38 36 30 37 35 33 32 2f 37 39 61 35 66 66 65 38  | nk/gptel/assets/8607532/79a5ffe8 | 
| cb40 |  2d 33 64 36 33 2d 34 62 66 37 2d 39 62 66 36 2d    30 34 35 37 61 62 36 31 62 66 32 61 22 20 61 6c  | -3d63-4bf7-9bf6-0457ab61bf2a".al | 
| cb60 |  69 67 6e 3d 22 63 65 6e 74 65 72 22 20 61 6c 74    3d 22 49 6d 61 67 65 20 73 68 6f 77 69 6e 67 20  | ign="center".alt="Image.showing. | 
| cb80 |  67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78 74 20    62 75 66 66 65 72 2e 22 3e 0a 0a 2a 2a 2a 20 48  | gptel's.context.buffer.">..***.H | 
| cba0 |  61 6e 64 6c 65 20 22 72 65 61 73 6f 6e 69 6e 67    22 20 63 6f 6e 74 65 6e 74 0a 0a 53 6f 6d 65 20  | andle."reasoning".content..Some. | 
| cbc0 |  4c 4c 4d 73 20 69 6e 63 6c 75 64 65 20 69 6e 20    74 68 65 69 72 20 72 65 73 70 6f 6e 73 65 20 61  | LLMs.include.in.their.response.a | 
| cbe0 |  20 22 74 68 69 6e 6b 69 6e 67 22 20 6f 72 20 22    72 65 61 73 6f 6e 69 6e 67 22 20 62 6c 6f 63 6b  | ."thinking".or."reasoning".block | 
| cc00 |  2e 20 20 54 68 69 73 20 74 65 78 74 20 69 6d 70    72 6f 76 65 73 20 74 68 65 20 71 75 61 6c 69 74  | ...This.text.improves.the.qualit | 
| cc20 |  79 20 6f 66 20 74 68 65 20 4c 4c 4d e2 80 99 73    20 66 69 6e 61 6c 20 6f 75 74 70 75 74 2c 20 62  | y.of.the.LLM...s.final.output,.b | 
| cc40 |  75 74 20 6d 61 79 20 6e 6f 74 20 62 65 20 69 6e    74 65 72 65 73 74 69 6e 67 20 74 6f 20 79 6f 75  | ut.may.not.be.interesting.to.you | 
| cc60 |  20 62 79 20 69 74 73 65 6c 66 2e 20 20 59 6f 75    20 63 61 6e 20 64 65 63 69 64 65 20 68 6f 77 20  | .by.itself...You.can.decide.how. | 
| cc80 |  79 6f 75 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74    68 69 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20  | you.would.like.this."reasoning". | 
| cca0 |  63 6f 6e 74 65 6e 74 20 74 6f 20 62 65 20 68 61    6e 64 6c 65 64 20 62 79 20 67 70 74 65 6c 20 62  | content.to.be.handled.by.gptel.b | 
| ccc0 |  79 20 73 65 74 74 69 6e 67 20 74 68 65 20 75 73    65 72 20 6f 70 74 69 6f 6e 20 3d 67 70 74 65 6c  | y.setting.the.user.option.=gptel | 
| cce0 |  2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69    6e 67 3d 2e 20 20 59 6f 75 20 63 61 6e 20 69 6e  | -include-reasoning=...You.can.in | 
| cd00 |  63 6c 75 64 65 20 69 74 20 69 6e 20 74 68 65 20    4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 28 74 68  | clude.it.in.the.LLM.response.(th | 
| cd20 |  65 20 64 65 66 61 75 6c 74 29 2c 20 6f 6d 69 74    20 69 74 20 65 6e 74 69 72 65 6c 79 2c 20 69 6e  | e.default),.omit.it.entirely,.in | 
| cd40 |  63 6c 75 64 65 20 69 74 20 69 6e 20 74 68 65 20    62 75 66 66 65 72 20 62 75 74 20 69 67 6e 6f 72  | clude.it.in.the.buffer.but.ignor | 
| cd60 |  65 20 69 74 20 6f 6e 20 73 75 62 73 65 71 75 65    6e 74 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20  | e.it.on.subsequent.conversation. | 
| cd80 |  74 75 72 6e 73 2c 20 6f 72 20 72 65 64 69 72 65    63 74 20 69 74 20 74 6f 20 61 6e 6f 74 68 65 72  | turns,.or.redirect.it.to.another | 
| cda0 |  20 62 75 66 66 65 72 2e 20 20 41 73 20 77 69 74    68 20 6d 6f 73 74 20 6f 70 74 69 6f 6e 73 2c 20  | .buffer...As.with.most.options,. | 
| cdc0 |  79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20    74 68 69 73 20 62 65 68 76 61 69 6f 72 20 66 72  | you.can.specify.this.behvaior.fr | 
| cde0 |  6f 6d 20 67 70 74 65 6c 27 73 20 74 72 61 6e 73    69 65 6e 74 20 6d 65 6e 75 20 67 6c 6f 62 61 6c  | om.gptel's.transient.menu.global | 
| ce00 |  6c 79 2c 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c    6c 79 20 6f 72 20 66 6f 72 20 74 68 65 20 6e 65  | ly,.buffer-locally.or.for.the.ne | 
| ce20 |  78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79 2e    0a 0a 57 68 65 6e 20 69 6e 63 6c 75 64 65 64 20  | xt.request.only...When.included. | 
| ce40 |  77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73    65 2c 20 72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e  | with.the.response,.reasoning.con | 
| ce60 |  74 65 6e 74 20 77 69 6c 6c 20 62 65 20 64 65 6c    69 6d 69 74 65 64 20 62 79 20 4f 72 67 20 62 6c  | tent.will.be.delimited.by.Org.bl | 
| ce80 |  6f 63 6b 73 20 6f 72 20 6d 61 72 6b 64 6f 77 6e    20 62 61 63 6b 74 69 63 6b 73 2e 0a 0a 2a 2a 2a  | ocks.or.markdown.backticks...*** | 
| cea0 |  20 54 6f 6f 6c 20 75 73 65 0a 0a 67 70 74 65 6c    20 63 61 6e 20 70 72 6f 76 69 64 65 20 74 68 65  | .Tool.use..gptel.can.provide.the | 
| cec0 |  20 4c 4c 4d 20 77 69 74 68 20 63 6c 69 65 6e 74    2d 73 69 64 65 20 65 6c 69 73 70 20 22 74 6f 6f  | .LLM.with.client-side.elisp."too | 
| cee0 |  6c 73 22 2c 20 6f 72 20 66 75 6e 63 74 69 6f 6e    20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 2c  | ls",.or.function.specifications, | 
| cf00 |  20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20    72 65 71 75 65 73 74 2e 20 20 49 66 20 74 68 65  | .along.with.the.request...If.the | 
| cf20 |  20 4c 4c 4d 20 64 65 63 69 64 65 73 20 74 6f 20    72 75 6e 20 74 68 65 20 74 6f 6f 6c 2c 20 69 74  | .LLM.decides.to.run.the.tool,.it | 
| cf40 |  20 73 75 70 70 6c 69 65 73 20 74 68 65 20 74 6f    6f 6c 20 63 61 6c 6c 20 61 72 67 75 6d 65 6e 74  | .supplies.the.tool.call.argument | 
| cf60 |  73 2c 20 77 68 69 63 68 20 67 70 74 65 6c 20 75    73 65 73 20 74 6f 20 72 75 6e 20 74 68 65 20 74  | s,.which.gptel.uses.to.run.the.t | 
| cf80 |  6f 6f 6c 20 69 6e 20 79 6f 75 72 20 45 6d 61 63    73 20 73 65 73 73 69 6f 6e 2e 20 20 54 68 65 20  | ool.in.your.Emacs.session...The. | 
| cfa0 |  72 65 73 75 6c 74 20 69 73 20 6f 70 74 69 6f 6e    61 6c 6c 79 20 72 65 74 75 72 6e 65 64 20 74 6f  | result.is.optionally.returned.to | 
| cfc0 |  20 74 68 65 20 4c 4c 4d 20 74 6f 20 63 6f 6d 70    6c 65 74 65 20 74 68 65 20 74 61 73 6b 2e 0a 0a  | .the.LLM.to.complete.the.task... | 
| cfe0 |  54 68 69 73 20 65 78 63 68 61 6e 67 65 20 63 61    6e 20 62 65 20 75 73 65 64 20 74 6f 20 65 71 75  | This.exchange.can.be.used.to.equ | 
| d000 |  69 70 20 74 68 65 20 4c 4c 4d 20 77 69 74 68 20    63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 72 20  | ip.the.LLM.with.capabilities.or. | 
| d020 |  6b 6e 6f 77 6c 65 64 67 65 20 62 65 79 6f 6e 64    20 77 68 61 74 20 69 73 20 61 76 61 69 6c 61 62  | knowledge.beyond.what.is.availab | 
| d040 |  6c 65 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f    78 20 2d 2d 20 66 6f 72 20 69 6e 73 74 61 6e 63  | le.out.of.the.box.--.for.instanc | 
| d060 |  65 2c 20 79 6f 75 20 63 61 6e 20 67 65 74 20 74    68 65 20 4c 4c 4d 20 74 6f 20 63 6f 6e 74 72 6f  | e,.you.can.get.the.LLM.to.contro | 
| d080 |  6c 20 79 6f 75 72 20 45 6d 61 63 73 20 66 72 61    6d 65 2c 20 63 72 65 61 74 65 20 6f 72 20 6d 6f  | l.your.Emacs.frame,.create.or.mo | 
| d0a0 |  64 69 66 79 20 66 69 6c 65 73 20 61 6e 64 20 64    69 72 65 63 74 6f 72 69 65 73 2c 20 6f 72 20 6c  | dify.files.and.directories,.or.l | 
| d0c0 |  6f 6f 6b 20 75 70 20 69 6e 66 6f 72 6d 61 74 69    6f 6e 20 72 65 6c 65 76 61 6e 74 20 74 6f 20 79  | ook.up.information.relevant.to.y | 
| d0e0 |  6f 75 72 20 72 65 71 75 65 73 74 20 76 69 61 20    77 65 62 20 73 65 61 72 63 68 20 6f 72 20 69 6e  | our.request.via.web.search.or.in | 
| d100 |  20 61 20 6c 6f 63 61 6c 20 64 61 74 61 62 61 73    65 2e 20 20 48 65 72 65 20 69 73 20 61 20 76 65  | .a.local.database...Here.is.a.ve | 
| d120 |  72 79 20 73 69 6d 70 6c 65 20 65 78 61 6d 70 6c    65 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61  | ry.simple.example:..#+html:.<p.a | 
| d140 |  6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68    74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f  | lign="center">.https://github.co | 
| d160 |  6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e    74 73 2f 61 73 73 65 74 73 2f 64 31 66 38 65 32  | m/user-attachments/assets/d1f8e2 | 
| d180 |  61 63 2d 36 32 62 62 2d 34 39 62 63 2d 38 35 30    64 2d 30 61 36 37 61 61 30 63 64 34 63 33 0a 23  | ac-62bb-49bc-850d-0a67aa0cd4c3.# | 
| d1a0 |  2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 54 6f 20    75 73 65 20 74 6f 6f 6c 73 20 69 6e 20 67 70 74  | +html:.</p>..To.use.tools.in.gpt | 
| d1c0 |  65 6c 2c 20 79 6f 75 20 6e 65 65 64 0a 2d 20 61    20 6d 6f 64 65 6c 20 74 68 61 74 20 73 75 70 70  | el,.you.need.-.a.model.that.supp | 
| d1e0 |  6f 72 74 73 20 74 68 69 73 20 75 73 61 67 65 2e    20 20 41 6c 6c 20 74 68 65 20 66 6c 61 67 73 68  | orts.this.usage...All.the.flagsh | 
| d200 |  69 70 20 6d 6f 64 65 6c 73 20 73 75 70 70 6f 72    74 20 74 6f 6f 6c 20 75 73 65 2c 20 61 73 20 64  | ip.models.support.tool.use,.as.d | 
| d220 |  6f 20 6d 61 6e 79 20 6f 66 20 74 68 65 20 73 6d    61 6c 6c 65 72 20 6f 70 65 6e 20 6d 6f 64 65 6c  | o.many.of.the.smaller.open.model | 
| d240 |  73 2e 0a 2d 20 54 6f 6f 6c 20 73 70 65 63 69 66    69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 67 70  | s..-.Tool.specifications.that.gp | 
| d260 |  74 65 6c 20 75 6e 64 65 72 73 74 61 6e 64 73 2e    20 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74  | tel.understands...gptel.does.not | 
| d280 |  20 63 75 72 72 65 6e 74 6c 79 20 69 6e 63 6c 75    64 65 20 61 6e 79 20 74 6f 6f 6c 73 20 6f 75 74  | .currently.include.any.tools.out | 
| d2a0 |  20 6f 66 20 74 68 65 20 62 6f 78 2e 0a 0a 23 2b    68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c  | .of.the.box...#+html:.<details>< | 
| d2c0 |  73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 44 65    66 69 6e 69 6e 67 20 67 70 74 65 6c 20 74 6f 6f  | summary>.****.Defining.gptel.too | 
| d2e0 |  6c 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d    6d 61 72 79 3e 0a 0a 44 65 66 69 6e 69 6e 67 20  | ls.#+html:.</summary>..Defining. | 
| d300 |  61 20 67 70 74 65 6c 20 74 6f 6f 6c 20 72 65 71    75 69 72 65 73 20 61 6e 20 65 6c 69 73 70 20 66  | a.gptel.tool.requires.an.elisp.f | 
| d320 |  75 6e 63 74 69 6f 6e 20 61 6e 64 20 61 73 73 6f    63 69 61 74 65 64 20 6d 65 74 61 64 61 74 61 2e  | unction.and.associated.metadata. | 
| d340 |  20 20 48 65 72 65 20 61 72 65 20 74 77 6f 20 73    69 6d 70 6c 65 20 74 6f 6f 6c 20 64 65 66 69 6e  | ..Here.are.two.simple.tool.defin | 
| d360 |  69 74 69 6f 6e 73 3a 0a 0a 2a 54 6f 20 72 65 61    64 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f  | itions:..*To.read.the.contents.o | 
| d380 |  66 20 61 6e 20 45 6d 61 63 73 20 62 75 66 66 65    72 2a 3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63  | f.an.Emacs.buffer*:..#+begin_src | 
| d3a0 |  20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74    65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 0a 20 3a 6e  | .emacs-lisp.(gptel-make-tool..:n | 
| d3c0 |  61 6d 65 20 22 72 65 61 64 5f 62 75 66 66 65 72    22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ame."read_buffer"............... | 
| d3e0 |  20 20 20 20 20 3b 20 6a 61 76 61 73 63 72 69 70    74 2d 73 74 79 6c 65 20 73 6e 61 6b 65 5f 63 61  | .....;.javascript-style.snake_ca | 
| d400 |  73 65 20 6e 61 6d 65 0a 20 3a 66 75 6e 63 74 69    6f 6e 20 28 6c 61 6d 62 64 61 20 28 62 75 66 66  | se.name..:function.(lambda.(buff | 
| d420 |  65 72 29 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 20 74 68 65 20 66 75 6e 63 74  | er)..................;.the.funct | 
| d440 |  69 6f 6e 20 74 68 61 74 20 77 69 6c 6c 20 72 75    6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ion.that.will.run..............( | 
| d460 |  75 6e 6c 65 73 73 20 28 62 75 66 66 65 72 2d 6c    69 76 65 2d 70 20 28 67 65 74 2d 62 75 66 66 65  | unless.(buffer-live-p.(get-buffe | 
| d480 |  72 20 62 75 66 66 65 72 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72  | r.buffer))................(error | 
| d4a0 |  20 22 65 72 72 6f 72 3a 20 62 75 66 66 65 72 20    25 73 20 69 73 20 6e 6f 74 20 6c 69 76 65 2e 22  | ."error:.buffer.%s.is.not.live." | 
| d4c0 |  20 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72  | .buffer))..............(with-cur | 
| d4e0 |  72 65 6e 74 2d 62 75 66 66 65 72 20 20 62 75 66    66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  | rent-buffer..buffer............. | 
| d500 |  20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74    72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69  | ...(buffer-substring-no-properti | 
| d520 |  65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28    70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 3a  | es.(point-min).(point-max))))..: | 
| d540 |  64 65 73 63 72 69 70 74 69 6f 6e 20 22 72 65 74    75 72 6e 20 74 68 65 20 63 6f 6e 74 65 6e 74 73  | description."return.the.contents | 
| d560 |  20 6f 66 20 61 6e 20 65 6d 61 63 73 20 62 75 66    66 65 72 22 0a 20 3a 61 72 67 73 20 28 6c 69 73  | .of.an.emacs.buffer"..:args.(lis | 
| d580 |  74 20 27 28 3a 6e 61 6d 65 20 22 62 75 66 66 65    72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.'(:name."buffer".............. | 
| d5a0 |  20 20 3a 74 79 70 65 20 73 74 72 69 6e 67 20 20    20 20 20 20 20 20 20 20 20 20 3b 20 3a 74 79 70  | ..:type.string............;.:typ | 
| d5c0 |  65 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20    61 20 73 79 6d 62 6f 6c 0a 20 20 20 20 20 20 20  | e.value.must.be.a.symbol........ | 
| d5e0 |  20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70    74 69 6f 6e 20 22 74 68 65 20 6e 61 6d 65 20 6f  | ........:description."the.name.o | 
| d600 |  66 20 74 68 65 20 62 75 66 66 65 72 20 77 68 6f    73 65 20 63 6f 6e 74 65 6e 74 73 20 61 72 65 20  | f.the.buffer.whose.contents.are. | 
| d620 |  74 6f 20 62 65 20 72 65 74 72 69 65 76 65 64 22    29 29 0a 20 3a 63 61 74 65 67 6f 72 79 20 22 65  | to.be.retrieved"))..:category."e | 
| d640 |  6d 61 63 73 22 29 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3b 20 41 6e 20  | macs").....................;.An. | 
| d660 |  61 72 62 69 74 72 61 72 79 20 6c 61 62 65 6c 20    66 6f 72 20 67 72 6f 75 70 69 6e 67 0a 23 2b 65  | arbitrary.label.for.grouping.#+e | 
| d680 |  6e 64 5f 73 72 63 0a 0a 42 65 73 69 64 65 73 20    74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 74 73  | nd_src..Besides.the.function.its | 
| d6a0 |  65 6c 66 2c 20 77 68 69 63 68 20 63 61 6e 20 62    65 20 6e 61 6d 65 64 20 6f 72 20 61 6e 6f 6e 79  | elf,.which.can.be.named.or.anony | 
| d6c0 |  6d 6f 75 73 20 28 61 73 20 61 62 6f 76 65 29 2c    20 74 68 65 20 74 6f 6f 6c 20 73 70 65 63 69 66  | mous.(as.above),.the.tool.specif | 
| d6e0 |  69 63 61 74 69 6f 6e 20 72 65 71 75 69 72 65 73    20 61 20 3d 3a 6e 61 6d 65 3d 2c 20 3d 3a 64 65  | ication.requires.a.=:name=,.=:de | 
| d700 |  73 63 72 69 70 74 69 6f 6e 3d 20 61 6e 64 20 61    20 6c 69 73 74 20 6f 66 20 61 72 67 75 6d 65 6e  | scription=.and.a.list.of.argumen | 
| d720 |  74 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73    20 69 6e 20 3d 3a 61 72 67 73 3d 2e 20 20 45 61  | t.specifications.in.=:args=...Ea | 
| d740 |  63 68 20 61 72 67 75 6d 65 6e 74 20 73 70 65 63    69 66 69 63 61 74 69 6f 6e 20 69 73 20 61 20 70  | ch.argument.specification.is.a.p | 
| d760 |  6c 69 73 74 20 77 69 74 68 20 61 74 6c 65 61 73    74 20 74 68 65 20 6b 65 79 73 20 3d 3a 6e 61 6d  | list.with.atleast.the.keys.=:nam | 
| d780 |  65 3d 2c 20 3d 3a 74 79 70 65 3d 20 61 6e 64 20    3d 3a 64 65 73 63 72 69 70 74 69 6f 6e 3d 2e 0a  | e=,.=:type=.and.=:description=.. | 
| d7a0 |  0a 2a 54 6f 20 63 72 65 61 74 65 20 61 20 74 65    78 74 20 66 69 6c 65 2a 3a 0a 0a 23 2b 62 65 67  | .*To.create.a.text.file*:..#+beg | 
| d7c0 |  69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73    70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f  | in_src.emacs-lisp.(gptel-make-to | 
| d7e0 |  6f 6c 0a 20 3a 6e 61 6d 65 20 22 63 72 65 61 74    65 5f 66 69 6c 65 22 20 20 20 20 20 20 20 20 20  | ol..:name."create_file"......... | 
| d800 |  20 20 20 20 20 20 20 20 20 20 20 3b 20 6a 61 76    61 73 63 72 69 70 74 2d 73 74 79 6c 65 20 20 73  | ...........;.javascript-style..s | 
| d820 |  6e 61 6b 65 5f 63 61 73 65 20 6e 61 6d 65 0a 20    3a 66 75 6e 63 74 69 6f 6e 20 28 6c 61 6d 62 64  | nake_case.name..:function.(lambd | 
| d840 |  61 20 28 70 61 74 68 20 66 69 6c 65 6e 61 6d 65    20 63 6f 6e 74 65 6e 74 29 20 20 20 3b 20 74 68  | a.(path.filename.content)...;.th | 
| d860 |  65 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20    72 75 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20  | e.function.that.runs............ | 
| d880 |  20 20 28 6c 65 74 20 28 28 66 75 6c 6c 2d 70 61    74 68 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d  | ..(let.((full-path.(expand-file- | 
| d8a0 |  6e 61 6d 65 20 66 69 6c 65 6e 61 6d 65 20 70 61    74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | name.filename.path)))........... | 
| d8c0 |  20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d    62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20  | .....(with-temp-buffer.......... | 
| d8e0 |  20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20    63 6f 6e 74 65 6e 74 29 0a 20 20 20 20 20 20 20  | ........(insert.content)........ | 
| d900 |  20 20 20 20 20 20 20 20 20 20 28 77 72 69 74 65    2d 66 69 6c 65 20 66 75 6c 6c 2d 70 61 74 68 29  | ..........(write-file.full-path) | 
| d920 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 66 6f 72 6d 61 74 20 22 43 72 65 61 74 65  | )................(format."Create | 
| d940 |  64 20 66 69 6c 65 20 25 73 20 69 6e 20 25 73 22    20 66 69 6c 65 6e 61 6d 65 20 70 61 74 68 29 29  | d.file.%s.in.%s".filename.path)) | 
| d960 |  29 0a 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20    22 43 72 65 61 74 65 20 61 20 6e 65 77 20 66 69  | )..:description."Create.a.new.fi | 
| d980 |  6c 65 20 77 69 74 68 20 74 68 65 20 73 70 65 63    69 66 69 65 64 20 63 6f 6e 74 65 6e 74 22 0a 20  | le.with.the.specified.content".. | 
| d9a0 |  3a 61 72 67 73 20 28 6c 69 73 74 20 27 28 3a 6e    61 6d 65 20 22 70 61 74 68 22 20 20 20 20 20 20  | :args.(list.'(:name."path"...... | 
| d9c0 |  20 20 20 20 20 20 20 3b 20 61 20 6c 69 73 74 20    6f 66 20 61 72 67 75 6d 65 6e 74 20 73 70 65 63  | .......;.a.list.of.argument.spec | 
| d9e0 |  69 66 69 63 61 74 69 6f 6e 73 0a 09 20 20 20 20    20 20 20 3a 74 79 70 65 20 73 74 72 69 6e 67 0a  | ifications.........:type.string. | 
| da00 |  09 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70    74 69 6f 6e 20 22 54 68 65 20 64 69 72 65 63 74  | ........:description."The.direct | 
| da20 |  6f 72 79 20 77 68 65 72 65 20 74 6f 20 63 72 65    61 74 65 20 74 68 65 20 66 69 6c 65 22 29 0a 20  | ory.where.to.create.the.file").. | 
| da40 |  20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 6e    61 6d 65 20 22 66 69 6c 65 6e 61 6d 65 22 0a 09  | ............'(:name."filename".. | 
| da60 |  20 20 20 20 20 20 20 3a 74 79 70 65 20 73 74 72    69 6e 67 0a 09 20 20 20 20 20 20 20 3a 64 65 73  | .......:type.string.........:des | 
| da80 |  63 72 69 70 74 69 6f 6e 20 22 54 68 65 20 6e 61    6d 65 20 6f 66 20 74 68 65 20 66 69 6c 65 20 74  | cription."The.name.of.the.file.t | 
| daa0 |  6f 20 63 72 65 61 74 65 22 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 27 28 3a 6e 61 6d 65 20  | o.create")..............'(:name. | 
| dac0 |  22 63 6f 6e 74 65 6e 74 22 0a 09 20 20 20 20 20    20 20 3a 74 79 70 65 20 73 74 72 69 6e 67 0a 09  | "content".........:type.string.. | 
| dae0 |  20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74    69 6f 6e 20 22 54 68 65 20 63 6f 6e 74 65 6e 74  | .......:description."The.content | 
| db00 |  20 74 6f 20 77 72 69 74 65 20 74 6f 20 74 68 65    20 66 69 6c 65 22 29 29 0a 20 3a 63 61 74 65 67  | .to.write.to.the.file"))..:categ | 
| db20 |  6f 72 79 20 22 66 69 6c 65 73 79 73 74 65 6d 22    29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ory."filesystem")............... | 
| db40 |  20 3b 20 41 6e 20 61 72 62 69 74 72 61 72 79 20    6c 61 62 65 6c 20 66 6f 72 20 67 72 6f 75 70 69  | .;.An.arbitrary.label.for.groupi | 
| db60 |  6e 67 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 57 69    74 68 20 73 6f 6d 65 20 70 72 6f 6d 70 74 69 6e  | ng.#+end_src..With.some.promptin | 
| db80 |  67 2c 20 79 6f 75 20 63 61 6e 20 67 65 74 20 61    6e 20 4c 4c 4d 20 74 6f 20 77 72 69 74 65 20 74  | g,.you.can.get.an.LLM.to.write.t | 
| dba0 |  68 65 73 65 20 74 6f 6f 6c 73 20 66 6f 72 20 79    6f 75 2e 0a 0a 54 6f 6f 6c 73 20 63 61 6e 20 61  | hese.tools.for.you...Tools.can.a | 
| dbc0 |  6c 73 6f 20 62 65 20 61 73 79 6e 63 68 72 6f 6e    6f 75 73 2c 20 75 73 65 20 6f 70 74 69 6f 6e 61  | lso.be.asynchronous,.use.optiona | 
| dbe0 |  6c 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20    61 72 67 75 6d 65 6e 74 73 20 77 69 74 68 20 6d  | l.arguments.and.arguments.with.m | 
| dc00 |  6f 72 65 20 73 74 72 75 63 74 75 72 65 20 28 65    6e 75 6d 73 2c 20 61 72 72 61 79 73 2c 20 6f 62  | ore.structure.(enums,.arrays,.ob | 
| dc20 |  6a 65 63 74 73 20 65 74 63 29 2e 20 20 53 65 65    20 3d 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f  | jects.etc)...See.=gptel-make-too | 
| dc40 |  6c 3d 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69  | l=.for.details...#+html:.</detai | 
| dc60 |  6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74    61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a  | ls>.#+html:.<details><summary>.* | 
| dc80 |  2a 2a 2a 20 53 65 6c 65 63 74 69 6e 67 20 74 6f    6f 6c 73 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75  | ***.Selecting.tools.#+html:.</su | 
| dca0 |  6d 6d 61 72 79 3e 0a 4f 6e 63 65 20 64 65 66 69    6e 65 64 2c 20 74 6f 6f 6c 73 20 63 61 6e 20 62  | mmary>.Once.defined,.tools.can.b | 
| dcc0 |  65 20 73 65 6c 65 63 74 65 64 20 28 67 6c 6f 62    61 6c 6c 79 2c 20 62 75 66 66 65 72 2d 6c 6f 63  | e.selected.(globally,.buffer-loc | 
| dce0 |  61 6c 6c 79 20 6f 72 20 66 6f 72 20 74 68 65 20    6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c  | ally.or.for.the.next.request.onl | 
| dd00 |  79 29 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20    74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 3a 0a  | y).from.gptel's.transient.menu:. | 
| dd20 |  0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72    63 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75  | .#+html:.<img.src="https://githu | 
| dd40 |  62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63    68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 66 64  | b.com/user-attachments/assets/fd | 
| dd60 |  38 37 38 35 39 36 2d 62 33 31 33 2d 34 33 38 35    2d 62 36 37 35 2d 33 64 36 35 34 36 39 30 39 64  | 878596-b313-4385-b675-3d6546909d | 
| dd80 |  38 62 22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65    72 22 20 61 6c 74 3d 22 49 6d 61 67 65 20 73 68  | 8b".align="center".alt="Image.sh | 
| dda0 |  6f 77 69 6e 67 20 67 70 74 65 6c 27 73 20 74 6f    6f 6c 20 73 65 6c 65 63 74 69 6f 6e 20 6d 65 6e  | owing.gptel's.tool.selection.men | 
| ddc0 |  75 2e 22 3e 0a 0a 46 72 6f 6d 20 68 65 72 65 20    79 6f 75 20 63 61 6e 20 61 6c 73 6f 20 72 65 71  | u.">..From.here.you.can.also.req | 
| dde0 |  75 69 72 65 20 63 6f 6e 66 69 72 6d 61 74 69 6f    6e 20 66 6f 72 20 61 6c 6c 20 74 6f 6f 6c 20 63  | uire.confirmation.for.all.tool.c | 
| de00 |  61 6c 6c 73 2c 20 61 6e 64 20 64 65 63 69 64 65    20 69 66 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65  | alls,.and.decide.if.tool.call.re | 
| de20 |  73 75 6c 74 73 20 73 68 6f 75 6c 64 20 62 65 20    69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20  | sults.should.be.included.in.the. | 
| de40 |  4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2e 20 20 53    65 65 20 5b 5b 23 61 64 64 69 74 69 6f 6e 61 6c  | LLM.response...See.[[#additional | 
| de60 |  2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 5b    41 64 64 69 74 69 6f 6e 61 6c 20 43 6f 6e 66 69  | -configuration][Additional.Confi | 
| de80 |  67 75 72 61 74 69 6f 6e 5d 5d 20 66 6f 72 20 64    6f 69 6e 67 20 74 68 65 73 65 20 74 68 69 6e 67  | guration]].for.doing.these.thing | 
| dea0 |  73 20 76 69 61 20 65 6c 69 73 70 2e 0a 0a 23 2b    68 74 6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e  | s.via.elisp...#+html:.</details> | 
| dec0 |  0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c    73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a  | .#+html:.<details><summary>.**** | 
| dee0 |  20 4d 6f 64 65 6c 20 43 6f 6e 74 65 78 74 20 50    72 6f 74 6f 63 6f 6c 20 28 4d 43 50 29 20 69 6e  | .Model.Context.Protocol.(MCP).in | 
| df00 |  74 65 67 72 61 74 69 6f 6e 0a 23 2b 68 74 6d 6c    3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 54 68  | tegration.#+html:.</summary>..Th | 
| df20 |  65 20 5b 5b 68 74 74 70 73 3a 2f 2f 6d 6f 64 65    6c 63 6f 6e 74 65 78 74 70 72 6f 74 6f 63 6f 6c  | e.[[https://modelcontextprotocol | 
| df40 |  2e 69 6f 2f 69 6e 74 72 6f 64 75 63 74 69 6f 6e    5d 5b 4d 6f 64 65 6c 20 43 6f 6e 74 65 78 74 20  | .io/introduction][Model.Context. | 
| df60 |  50 72 6f 74 6f 63 6f 6c 5d 5d 20 28 4d 43 50 29    20 69 73 20 61 20 70 72 6f 74 6f 63 6f 6c 20 66  | Protocol]].(MCP).is.a.protocol.f | 
| df80 |  6f 72 20 70 72 6f 76 69 64 69 6e 67 20 72 65 73    6f 75 72 63 65 73 20 61 6e 64 20 74 6f 6f 6c 73  | or.providing.resources.and.tools | 
| dfa0 |  20 74 6f 20 4c 4c 4d 73 2c 20 61 6e 64 20 5b 5b    68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63  | .to.LLMs,.and.[[https://github.c | 
| dfc0 |  6f 6d 2f 61 70 70 63 79 70 68 65 72 2f 61 77 65    73 6f 6d 65 2d 6d 63 70 2d 73 65 72 76 65 72 73  | om/appcypher/awesome-mcp-servers | 
| dfe0 |  5d 5b 6d 61 6e 79 20 4d 43 50 20 73 65 72 76 65    72 73 20 65 78 69 73 74 5d 5d 20 74 68 61 74 20  | ][many.MCP.servers.exist]].that. | 
| e000 |  70 72 6f 76 69 64 65 20 4c 4c 4d 20 74 6f 6f 6c    73 20 66 6f 72 20 66 69 6c 65 20 61 63 63 65 73  | provide.LLM.tools.for.file.acces | 
| e020 |  73 2c 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e    65 63 74 69 6f 6e 73 2c 20 41 50 49 20 69 6e 74  | s,.database.connections,.API.int | 
| e040 |  65 67 72 61 74 69 6f 6e 73 20 65 74 63 2e 20 20    54 68 65 20 5b 5b 6d 63 70 2e 65 6c 5d 5d 20 70  | egrations.etc...The.[[mcp.el]].p | 
| e060 |  61 63 6b 61 67 65 20 66 6f 72 20 45 6d 61 63 73    20 63 61 6e 20 61 63 74 20 61 73 20 61 6e 20 4d  | ackage.for.Emacs.can.act.as.an.M | 
| e080 |  43 50 20 63 6c 69 65 6e 74 20 61 6e 64 20 6d 61    6e 61 67 65 20 74 68 65 73 65 20 74 6f 6f 6c 20  | CP.client.and.manage.these.tool. | 
| e0a0 |  63 61 6c 6c 73 20 66 6f 72 20 67 70 74 65 6c 2e    0a 0a 54 6f 20 75 73 65 20 4d 43 50 20 73 65 72  | calls.for.gptel...To.use.MCP.ser | 
| e0c0 |  76 65 72 73 20 77 69 74 68 20 67 70 74 65 6c 2c    20 79 6f 75 20 74 68 75 73 20 6e 65 65 64 20 74  | vers.with.gptel,.you.thus.need.t | 
| e0e0 |  68 72 65 65 20 70 69 65 63 65 73 3a 0a 0a 31 2e    20 54 68 65 20 5b 5b 68 74 74 70 73 3a 2f 2f 67  | hree.pieces:..1..The.[[https://g | 
| e100 |  69 74 68 75 62 2e 63 6f 6d 2f 6c 69 7a 71 77 65    72 73 63 6f 74 74 2f 6d 63 70 2e 65 6c 5d 5b 6d  | ithub.com/lizqwerscott/mcp.el][m | 
| e120 |  63 70 2e 65 6c 5d 5d 20 70 61 63 6b 61 67 65 20    66 6f 72 20 45 6d 61 63 73 2c 20 5b 5b 68 74 74  | cp.el]].package.for.Emacs,.[[htt | 
| e140 |  70 73 3a 2f 2f 6d 65 6c 70 61 2e 6f 72 67 2f 23    2f 6d 63 70 5d 5b 61 76 61 69 6c 61 62 6c 65 20  | ps://melpa.org/#/mcp][available. | 
| e160 |  6f 6e 20 4d 45 4c 50 41 5d 5d 2e 0a 32 2e 20 4d    43 50 20 73 65 72 76 65 72 73 20 63 6f 6e 66 69  | on.MELPA]]..2..MCP.servers.confi | 
| e180 |  67 75 72 65 64 20 66 6f 72 20 61 6e 64 20 72 75    6e 6e 69 6e 67 20 76 69 61 20 6d 63 70 2e 65 6c  | gured.for.and.running.via.mcp.el | 
| e1a0 |  2e 0a 33 2e 20 67 70 74 65 6c 20 61 6e 64 20 61    63 63 65 73 73 20 74 6f 20 61 6e 20 4c 4c 4d 0a  | ..3..gptel.and.access.to.an.LLM. | 
| e1c0 |  0a 67 70 74 65 6c 20 69 6e 63 6c 75 64 65 73 20    3d 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69  | .gptel.includes.=gptel-integrati | 
| e1e0 |  6f 6e 73 3d 2c 20 61 20 73 6d 61 6c 6c 20 6c 69    62 72 61 72 79 20 74 6f 20 6d 61 6b 65 20 74 68  | ons=,.a.small.library.to.make.th | 
| e200 |  69 73 20 6d 6f 72 65 20 63 6f 6e 76 65 6e 69 65    6e 74 2e 20 20 54 68 69 73 20 6c 69 62 72 61 72  | is.more.convenient...This.librar | 
| e220 |  79 20 69 73 20 6e 6f 74 20 61 75 74 6f 6d 61 74    69 63 61 6c 6c 79 20 6c 6f 61 64 65 64 20 62 79  | y.is.not.automatically.loaded.by | 
| e240 |  20 67 70 74 65 6c 2c 20 73 6f 20 69 66 20 79 6f    75 20 77 6f 75 6c 64 20 6c 69 6b 65 20 74 6f 20  | .gptel,.so.if.you.would.like.to. | 
| e260 |  75 73 65 20 69 74 20 79 6f 75 20 68 61 76 65 20    74 6f 20 72 65 71 75 69 72 65 20 69 74 3a 0a 0a  | use.it.you.have.to.require.it:.. | 
| e280 |  23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63    73 2d 6c 69 73 70 0a 28 72 65 71 75 69 72 65 20  | #+begin_src.emacs-lisp.(require. | 
| e2a0 |  27 67 70 74 65 6c 2d 69 6e 74 65 67 72 61 74 69    6f 6e 73 29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a  | 'gptel-integrations).#+end_src.. | 
| e2c0 |  4f 6e 63 65 20 6c 6f 61 64 65 64 2c 20 79 6f 75    20 63 61 6e 20 72 75 6e 20 74 68 65 20 3d 67 70  | Once.loaded,.you.can.run.the.=gp | 
| e2e0 |  74 65 6c 2d 6d 63 70 2d 63 6f 6e 6e 65 63 74 3d    20 61 6e 64 20 3d 67 70 74 65 6c 2d 6d 63 70 2d  | tel-mcp-connect=.and.=gptel-mcp- | 
| e300 |  64 69 73 63 6f 6e 6e 65 63 74 3d 20 63 6f 6d 6d    61 6e 64 73 20 74 6f 20 72 65 67 69 73 74 65 72  | disconnect=.commands.to.register | 
| e320 |  20 61 6e 64 20 75 6e 72 65 67 69 73 74 65 72 20    4d 43 50 2d 70 72 6f 76 69 64 65 64 20 74 6f 6f  | .and.unregister.MCP-provided.too | 
| e340 |  6c 73 20 69 6e 20 67 70 74 65 6c 2e 20 20 54 68    65 73 65 20 77 69 6c 6c 20 61 6c 73 6f 20 73 68  | ls.in.gptel...These.will.also.sh | 
| e360 |  6f 77 20 75 70 20 69 6e 20 74 68 65 20 74 6f 6f    6c 73 20 6d 65 6e 75 20 69 6e 20 67 70 74 65 6c  | ow.up.in.the.tools.menu.in.gptel | 
| e380 |  2c 20 61 63 63 65 73 73 65 64 20 76 69 61 20 3d    4d 2d 78 20 67 70 74 65 6c 2d 6d 65 6e 75 3d 20  | ,.accessed.via.=M-x.gptel-menu=. | 
| e3a0 |  6f 72 20 3d 4d 2d 78 20 67 70 74 65 6c 2d 74 6f    6f 6c 73 3d 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c  | or.=M-x.gptel-tools=:..#+html:.< | 
| e3c0 |  69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f    2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72  | img.src="https://github.com/user | 
| e3e0 |  2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73    65 74 73 2f 32 63 62 62 66 38 61 30 2d 34 39 63  | -attachments/assets/2cbbf8a0-49c | 
| e400 |  37 2d 34 39 61 35 2d 62 61 32 34 2d 35 31 34 61    64 37 65 30 38 37 39 39 22 20 61 6c 69 67 6e 3d  | 7-49a5-ba24-514ad7e08799".align= | 
| e420 |  22 63 65 6e 74 65 72 22 20 61 6c 74 3d 22 49 6d    61 67 65 20 73 68 6f 77 69 6e 67 20 4d 43 50 20  | "center".alt="Image.showing.MCP. | 
| e440 |  74 6f 6f 6c 20 72 65 67 69 73 74 72 61 74 69 6f    6e 20 63 6f 6d 6d 61 6e 64 73 20 69 6e 20 67 70  | tool.registration.commands.in.gp | 
| e460 |  74 65 6c 27 73 20 74 6f 6f 6c 20 73 65 6c 65 63    74 69 6f 6e 20 6d 65 6e 75 2e 22 3e 0a 0a 4d 43  | tel's.tool.selection.menu.">..MC | 
| e480 |  50 2d 70 72 6f 76 69 64 65 64 20 74 6f 6f 6c 73    20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20  | P-provided.tools.can.be.used.as. | 
| e4a0 |  6e 6f 72 6d 61 6c 20 77 69 74 68 20 67 70 74 65    6c 2e 20 20 48 65 72 65 20 69 73 20 61 20 73 63  | normal.with.gptel...Here.is.a.sc | 
| e4c0 |  72 65 65 6e 63 61 73 74 20 6f 66 20 74 68 65 20    70 72 6f 63 65 73 73 2e 20 20 28 49 6e 20 74 68  | reencast.of.the.process...(In.th | 
| e4e0 |  69 73 20 65 78 61 6d 70 6c 65 20 74 68 65 20 22    67 69 74 68 75 62 22 20 4d 43 50 20 73 65 72 76  | is.example.the."github".MCP.serv | 
| e500 |  65 72 20 69 73 20 69 6e 73 74 61 6c 6c 65 64 20    73 65 70 61 72 61 74 65 6c 79 20 75 73 69 6e 67  | er.is.installed.separately.using | 
| e520 |  20 6e 70 6d 2e 29 0a 0a 23 2b 68 74 6d 6c 3a 20    3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  | .npm.)..#+html:.<p.align="center | 
| e540 |  22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75    62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63  | ">.https://github.com/user-attac | 
| e560 |  68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f 66 33    65 61 37 61 63 30 2d 61 33 32 32 2d 34 61 35 39  | hments/assets/f3ea7ac0-a322-4a59 | 
| e580 |  2d 62 35 62 32 2d 62 33 66 35 39 32 35 35 34 66    38 61 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a  | -b5b2-b3f592554f8a.#+html:.</p>. | 
| e5a0 |  0a 48 65 72 65 27 73 20 61 6e 20 65 78 61 6d 70    6c 65 20 6f 66 20 75 73 69 6e 67 20 74 68 65 73  | .Here's.an.example.of.using.thes | 
| e5c0 |  65 20 74 6f 6f 6c 73 3a 0a 0a 23 2b 68 74 6d 6c    3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74  | e.tools:..#+html:.<p.align="cent | 
| e5e0 |  65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74    68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74  | er">.https://github.com/user-att | 
| e600 |  61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f    62 34 38 61 36 61 32 34 2d 61 31 33 30 2d 34 64  | achments/assets/b48a6a24-a130-4d | 
| e620 |  61 37 2d 61 32 65 65 2d 36 65 61 35 36 38 65 31    30 63 38 35 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70  | a7-a2ee-6ea568e10c85.#+html:.</p | 
| e640 |  3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74    61 69 6c 73 3e 0a 0a 0a 2a 2a 2a 20 52 65 77 72  | >..#+html:.</details>...***.Rewr | 
| e660 |  69 74 65 2c 20 72 65 66 61 63 74 6f 72 20 6f 72    20 66 69 6c 6c 20 69 6e 20 61 20 72 65 67 69 6f  | ite,.refactor.or.fill.in.a.regio | 
| e680 |  6e 0a 0a 49 6e 20 61 6e 79 20 62 75 66 66 65 72    3a 20 77 69 74 68 20 61 20 72 65 67 69 6f 6e 20  | n..In.any.buffer:.with.a.region. | 
| e6a0 |  73 65 6c 65 63 74 65 64 2c 20 79 6f 75 20 63 61    6e 20 6d 6f 64 69 66 79 20 74 65 78 74 2c 20 72  | selected,.you.can.modify.text,.r | 
| e6c0 |  65 77 72 69 74 65 20 70 72 6f 73 65 20 6f 72 20    72 65 66 61 63 74 6f 72 20 63 6f 64 65 20 77 69  | ewrite.prose.or.refactor.code.wi | 
| e6e0 |  74 68 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74    65 3d 2e 20 20 45 78 61 6d 70 6c 65 20 77 69 74  | th.=gptel-rewrite=...Example.wit | 
| e700 |  68 20 70 72 6f 73 65 3a 0a 0a 23 2b 68 74 6d 6c    3a 20 3c 70 20 61 6c 69 67 6e 3d 22 63 65 6e 74  | h.prose:..#+html:.<p.align="cent | 
| e720 |  65 72 22 3e 0a 68 74 74 70 73 3a 2f 2f 67 69 74    68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61 74 74  | er">.https://github.com/user-att | 
| e740 |  61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74 73 2f    65 33 62 34 33 36 62 33 2d 39 62 64 65 2d 34 63  | achments/assets/e3b436b3-9bde-4c | 
| e760 |  31 66 2d 62 32 63 65 2d 33 66 37 64 66 31 39 38    34 39 33 33 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 70  | 1f-b2ce-3f7df1984933.#+html:.</p | 
| e780 |  3e 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73    20 70 72 65 76 69 65 77 65 64 20 6f 76 65 72 20  | >..The.result.is.previewed.over. | 
| e7a0 |  74 68 65 20 6f 72 69 67 69 6e 61 6c 20 74 65 78    74 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  | the.original.text...By.default,. | 
| e7c0 |  74 68 65 20 62 75 66 66 65 72 20 69 73 20 6e 6f    74 20 6d 6f 64 69 66 69 65 64 2e 0a 0a 50 72 65  | the.buffer.is.not.modified...Pre | 
| e7e0 |  73 73 69 6e 67 20 3d 52 45 54 3d 20 6f 72 20 63    6c 69 63 6b 69 6e 67 20 69 6e 20 74 68 65 20 72  | ssing.=RET=.or.clicking.in.the.r | 
| e800 |  65 77 72 69 74 74 65 6e 20 72 65 67 69 6f 6e 20    73 68 6f 75 6c 64 20 67 69 76 65 20 79 6f 75 20  | ewritten.region.should.give.you. | 
| e820 |  61 20 6c 69 73 74 20 6f 66 20 6f 70 74 69 6f 6e    73 3a 20 79 6f 75 20 63 61 6e 20 2a 69 74 65 72  | a.list.of.options:.you.can.*iter | 
| e840 |  61 74 65 2a 20 6f 6e 2c 20 2a 64 69 66 66 2a 2c    20 2a 65 64 69 66 66 2a 2c 20 2a 6d 65 72 67 65  | ate*.on,.*diff*,.*ediff*,.*merge | 
| e860 |  2a 20 6f 72 20 2a 61 63 63 65 70 74 2a 20 74 68    65 20 72 65 70 6c 61 63 65 6d 65 6e 74 2e 20 20  | *.or.*accept*.the.replacement... | 
| e880 |  45 78 61 6d 70 6c 65 20 77 69 74 68 20 63 6f 64    65 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 70 20 61  | Example.with.code:..#+html:.<p.a | 
| e8a0 |  6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 68    74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f  | lign="center">.https://github.co | 
| e8c0 |  6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d 65 6e    74 73 2f 61 73 73 65 74 73 2f 34 30 36 37 66 64  | m/user-attachments/assets/4067fd | 
| e8e0 |  62 38 2d 38 35 64 33 2d 34 32 36 34 2d 39 62 36    34 2d 64 37 32 37 33 35 33 66 36 38 66 39 0a 23  | b8-85d3-4264-9b64-d727353f68f9.# | 
| e900 |  2b 68 74 6d 6c 3a 20 3c 2f 70 3e 0a 0a 2a 41 63    74 69 6e 67 20 6f 6e 20 74 68 65 20 4c 4c 4d 20  | +html:.</p>..*Acting.on.the.LLM. | 
| e920 |  72 65 73 70 6f 6e 73 65 2a 3a 0a 0a 49 66 20 79    6f 75 20 77 6f 75 6c 64 20 6c 69 6b 65 20 6f 6e  | response*:..If.you.would.like.on | 
| e940 |  65 20 6f 66 20 74 68 65 73 65 20 74 68 69 6e 67    73 20 74 6f 20 68 61 70 70 65 6e 20 61 75 74 6f  | e.of.these.things.to.happen.auto | 
| e960 |  6d 61 74 69 63 61 6c 6c 79 2c 20 79 6f 75 20 63    61 6e 20 63 75 73 74 6f 6d 69 7a 65 20 3d 67 70  | matically,.you.can.customize.=gp | 
| e980 |  74 65 6c 2d 72 65 77 72 69 74 65 2d 64 65 66 61    75 6c 74 2d 61 63 74 69 6f 6e 3d 2e 0a 0a 54 68  | tel-rewrite-default-action=...Th | 
| e9a0 |  65 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20    61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 66  | ese.options.are.also.available.f | 
| e9c0 |  72 6f 6d 20 3d 67 70 74 65 6c 2d 72 65 77 72 69    74 65 3d 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69  | rom.=gptel-rewrite=:..#+html:.<i | 
| e9e0 |  6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f    67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d  | mg.src="https://github.com/user- | 
| ea00 |  61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65    74 73 2f 35 38 39 37 38 35 62 39 2d 61 61 33 66  | attachments/assets/589785b9-aa3f | 
| ea20 |  2d 34 31 34 61 2d 39 38 64 64 2d 64 32 36 62 37    35 30 39 64 65 30 38 22 20 61 6c 69 67 6e 3d 22  | -414a-98dd-d26b7509de08".align=" | 
| ea40 |  63 65 6e 74 65 72 22 20 2f 3e 0a 0a 41 6e 64 20    79 6f 75 20 63 61 6e 20 63 61 6c 6c 20 74 68 65  | center"./>..And.you.can.call.the | 
| ea60 |  6d 20 64 69 72 65 63 74 6c 79 20 77 68 65 6e 20    74 68 65 20 63 75 72 73 6f 72 20 69 73 20 69 6e  | m.directly.when.the.cursor.is.in | 
| ea80 |  20 74 68 65 20 72 65 77 72 69 74 74 65 6e 20 72    65 67 69 6f 6e 3a 0a 0a 23 2b 68 74 6d 6c 3a 20  | .the.rewritten.region:..#+html:. | 
| eaa0 |  3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a    2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65  | <img.src="https://github.com/use | 
| eac0 |  72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73    73 65 74 73 2f 66 35 62 33 63 61 34 37 2d 65 31  | r-attachments/assets/f5b3ca47-e1 | 
| eae0 |  34 36 2d 34 35 66 65 2d 38 35 38 34 2d 66 31 31    30 33 35 66 61 34 64 62 63 22 20 61 6c 69 67 6e  | 46-45fe-8584-f11035fa4dbc".align | 
| eb00 |  3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 2a 2a    2a 20 45 78 74 72 61 20 4f 72 67 20 6d 6f 64 65  | ="center"./>..***.Extra.Org.mode | 
| eb20 |  20 63 6f 6e 76 65 6e 69 65 6e 63 65 73 0a 0a 67    70 74 65 6c 20 6f 66 66 65 72 73 20 61 20 66 65  | .conveniences..gptel.offers.a.fe | 
| eb40 |  77 20 65 78 74 72 61 20 63 6f 6e 76 65 6e 69 65    6e 63 65 73 20 69 6e 20 4f 72 67 20 6d 6f 64 65  | w.extra.conveniences.in.Org.mode | 
| eb60 |  2e 0a 0a 2a 2a 2a 2a 2a 20 4c 69 6d 69 74 20 63    6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 6f 6e 74  | ...*****.Limit.conversation.cont | 
| eb80 |  65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 68 65    61 64 69 6e 67 0a 0a 59 6f 75 20 63 61 6e 20 6c  | ext.to.an.Org.heading..You.can.l | 
| eba0 |  69 6d 69 74 20 74 68 65 20 63 6f 6e 76 65 72 73    61 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 74 6f  | imit.the.conversation.context.to | 
| ebc0 |  20 61 6e 20 4f 72 67 20 68 65 61 64 69 6e 67 20    77 69 74 68 20 74 68 65 20 63 6f 6d 6d 61 6e 64  | .an.Org.heading.with.the.command | 
| ebe0 |  20 3d 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d    74 6f 70 69 63 3d 2e 0a 0a 28 54 68 69 73 20 73  | .=gptel-org-set-topic=...(This.s | 
| ec00 |  65 74 73 20 61 6e 20 4f 72 67 20 70 72 6f 70 65    72 74 79 20 28 3d 47 50 54 45 4c 5f 54 4f 50 49  | ets.an.Org.property.(=GPTEL_TOPI | 
| ec20 |  43 3d 29 20 75 6e 64 65 72 20 74 68 65 20 68 65    61 64 69 6e 67 2e 20 20 59 6f 75 20 63 61 6e 20  | C=).under.the.heading...You.can. | 
| ec40 |  61 6c 73 6f 20 61 64 64 20 74 68 69 73 20 70 72    6f 70 65 72 74 79 20 6d 61 6e 75 61 6c 6c 79 20  | also.add.this.property.manually. | 
| ec60 |  69 6e 73 74 65 61 64 2e 29 0a 20 20 0a 2a 2a 2a    2a 2a 20 55 73 65 20 62 72 61 6e 63 68 69 6e 67  | instead.)....*****.Use.branching | 
| ec80 |  20 63 6f 6e 74 65 78 74 20 69 6e 20 4f 72 67 20    6d 6f 64 65 20 28 74 72 65 65 20 6f 66 20 63 6f  | .context.in.Org.mode.(tree.of.co | 
| eca0 |  6e 76 65 72 73 61 74 69 6f 6e 73 29 0a 0a 59 6f    75 20 63 61 6e 20 68 61 76 65 20 62 72 61 6e 63  | nversations)..You.can.have.branc | 
| ecc0 |  68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f    6e 73 20 69 6e 20 4f 72 67 20 6d 6f 64 65 2c 20  | hing.conversations.in.Org.mode,. | 
| ece0 |  77 68 65 72 65 20 65 61 63 68 20 68 69 65 72 61    72 63 68 69 63 61 6c 20 6f 75 74 6c 69 6e 65 20  | where.each.hierarchical.outline. | 
| ed00 |  70 61 74 68 20 74 68 72 6f 75 67 68 20 74 68 65    20 64 6f 63 75 6d 65 6e 74 20 69 73 20 61 20 73  | path.through.the.document.is.a.s | 
| ed20 |  65 70 61 72 61 74 65 20 63 6f 6e 76 65 72 73 61    74 69 6f 6e 20 62 72 61 6e 63 68 2e 20 20 54 68  | eparate.conversation.branch...Th | 
| ed40 |  69 73 20 69 73 20 61 6c 73 6f 20 75 73 65 66 75    6c 20 66 6f 72 20 6c 69 6d 69 74 69 6e 67 20 74  | is.is.also.useful.for.limiting.t | 
| ed60 |  68 65 20 63 6f 6e 74 65 78 74 20 73 69 7a 65 20    6f 66 20 65 61 63 68 20 71 75 65 72 79 2e 20 20  | he.context.size.of.each.query... | 
| ed80 |  53 65 65 20 74 68 65 20 76 61 72 69 61 62 6c 65    20 3d 67 70 74 65 6c 2d 6f 72 67 2d 62 72 61 6e  | See.the.variable.=gptel-org-bran | 
| eda0 |  63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 3d 2e 0a    0a 49 66 20 74 68 69 73 20 76 61 72 69 61 62 6c  | ching-context=...If.this.variabl | 
| edc0 |  65 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 79 6f    75 20 73 68 6f 75 6c 64 20 70 72 6f 62 61 62 6c  | e.is.non-nil,.you.should.probabl | 
| ede0 |  79 20 65 64 69 74 20 3d 67 70 74 65 6c 2d 70 72    6f 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73  | y.edit.=gptel-prompt-prefix-alis | 
| ee00 |  74 3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65    73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 61 6c  | t=.and.=gptel-response-prefix-al | 
| ee20 |  69 73 74 3d 20 73 6f 20 74 68 61 74 20 74 68 65    20 70 72 65 66 69 78 20 73 74 72 69 6e 67 73 20  | ist=.so.that.the.prefix.strings. | 
| ee40 |  66 6f 72 20 6f 72 67 2d 6d 6f 64 65 20 61 72 65    20 6e 6f 74 20 4f 72 67 20 68 65 61 64 69 6e 67  | for.org-mode.are.not.Org.heading | 
| ee60 |  73 2c 20 65 2e 67 2e 0a 0a 23 2b 62 65 67 69 6e    5f 73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a  | s,.e.g...#+begin_src.emacs-lisp. | 
| ee80 |  20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67    65 74 20 27 6f 72 67 2d 6d 6f 64 65 20 67 70 74  | ..(setf.(alist-get.'org-mode.gpt | 
| eea0 |  65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78    2d 61 6c 69 73 74 29 20 22 40 75 73 65 72 5c 6e  | el-prompt-prefix-alist)."@user\n | 
| eec0 |  22 29 0a 20 20 28 73 65 74 66 20 28 61 6c 69 73    74 2d 67 65 74 20 27 6f 72 67 2d 6d 6f 64 65 20  | ")...(setf.(alist-get.'org-mode. | 
| eee0 |  67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70    72 65 66 69 78 2d 61 6c 69 73 74 29 20 22 40 61  | gptel-response-prefix-alist)."@a | 
| ef00 |  73 73 69 73 74 61 6e 74 5c 6e 22 29 0a 23 2b 65    6e 64 5f 73 72 63 0a 0a 4f 74 68 65 72 77 69 73  | ssistant\n").#+end_src..Otherwis | 
| ef20 |  65 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 70    72 6f 6d 70 74 20 70 72 65 66 69 78 20 77 69 6c  | e,.the.default.prompt.prefix.wil | 
| ef40 |  6c 20 6d 61 6b 65 20 73 75 63 63 65 73 73 69 76    65 20 70 72 6f 6d 70 74 73 20 73 69 62 6c 69 6e  | l.make.successive.prompts.siblin | 
| ef60 |  67 20 68 65 61 64 69 6e 67 73 2c 20 61 6e 64 20    74 68 65 72 65 66 6f 72 65 20 6f 6e 20 64 69 66  | g.headings,.and.therefore.on.dif | 
| ef80 |  66 65 72 65 6e 74 20 63 6f 6e 76 65 72 73 61 74    69 6f 6e 20 62 72 61 6e 63 68 65 73 2c 20 77 68  | ferent.conversation.branches,.wh | 
| efa0 |  69 63 68 20 70 72 6f 62 61 62 6c 79 20 69 73 6e    27 74 20 77 68 61 74 20 79 6f 75 20 77 61 6e 74  | ich.probably.isn't.what.you.want | 
| efc0 |  2e 0a 0a 4e 6f 74 65 3a 20 75 73 69 6e 67 20 74    68 69 73 20 6f 70 74 69 6f 6e 20 72 65 71 75 69  | ...Note:.using.this.option.requi | 
| efe0 |  72 65 73 20 4f 72 67 20 39 2e 37 20 6f 72 20 68    69 67 68 65 72 20 74 6f 20 62 65 20 61 76 61 69  | res.Org.9.7.or.higher.to.be.avai | 
| f000 |  6c 61 62 6c 65 2e 20 20 54 68 65 20 5b 5b 68 74    74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d  | lable...The.[[https://github.com | 
| f020 |  2f 75 6c 74 72 6f 6e 6f 7a 6d 2f 61 69 2d 6f 72    67 2d 63 68 61 74 2e 65 6c 5d 5b 61 69 2d 6f 72  | /ultronozm/ai-org-chat.el][ai-or | 
| f040 |  67 2d 63 68 61 74 5d 5d 20 70 61 63 6b 61 67 65    20 75 73 65 73 20 67 70 74 65 6c 20 74 6f 20 70  | g-chat]].package.uses.gptel.to.p | 
| f060 |  72 6f 76 69 64 65 20 74 68 69 73 20 62 72 61 6e    63 68 69 6e 67 20 63 6f 6e 76 65 72 73 61 74 69  | rovide.this.branching.conversati | 
| f080 |  6f 6e 20 62 65 68 61 76 69 6f 72 20 66 6f 72 20    6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  | on.behavior.for.older.versions.o | 
| f0a0 |  66 20 4f 72 67 2e 0a 20 20 0a 2a 2a 2a 2a 2a 20    53 61 76 65 20 67 70 74 65 6c 20 70 61 72 61 6d  | f.Org.....*****.Save.gptel.param | 
| f0c0 |  65 74 65 72 73 20 74 6f 20 4f 72 67 20 68 65 61    64 69 6e 67 73 20 28 72 65 70 72 6f 64 75 63 69  | eters.to.Org.headings.(reproduci | 
| f0e0 |  62 6c 65 20 63 68 61 74 73 29 0a 0a 59 6f 75 20    63 61 6e 20 64 65 63 6c 61 72 65 20 74 68 65 20  | ble.chats)..You.can.declare.the. | 
| f100 |  67 70 74 65 6c 20 6d 6f 64 65 6c 2c 20 62 61 63    6b 65 6e 64 2c 20 74 65 6d 70 65 72 61 74 75 72  | gptel.model,.backend,.temperatur | 
| f120 |  65 2c 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67    65 20 61 6e 64 20 6f 74 68 65 72 20 70 61 72 61  | e,.system.message.and.other.para | 
| f140 |  6d 65 74 65 72 73 20 61 73 20 4f 72 67 20 70 72    6f 70 65 72 74 69 65 73 20 77 69 74 68 20 74 68  | meters.as.Org.properties.with.th | 
| f160 |  65 20 63 6f 6d 6d 61 6e 64 20 3d 67 70 74 65 6c    2d 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74  | e.command.=gptel-org-set-propert | 
| f180 |  69 65 73 3d 2e 20 20 67 70 74 65 6c 20 71 75 65    72 69 65 73 20 75 6e 64 65 72 20 74 68 65 20 63  | ies=...gptel.queries.under.the.c | 
| f1a0 |  6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 68 65 61    64 69 6e 67 20 77 69 6c 6c 20 61 6c 77 61 79 73  | orresponding.heading.will.always | 
| f1c0 |  20 75 73 65 20 74 68 65 73 65 20 73 65 74 74 69    6e 67 73 2c 20 61 6c 6c 6f 77 69 6e 67 20 79 6f  | .use.these.settings,.allowing.yo | 
| f1e0 |  75 20 74 6f 20 63 72 65 61 74 65 20 6d 6f 73 74    6c 79 20 72 65 70 72 6f 64 75 63 69 62 6c 65 20  | u.to.create.mostly.reproducible. | 
| f200 |  4c 4c 4d 20 63 68 61 74 20 6e 6f 74 65 62 6f 6f    6b 73 2c 20 61 6e 64 20 74 6f 20 68 61 76 65 20  | LLM.chat.notebooks,.and.to.have. | 
| f220 |  73 69 6d 75 6c 74 61 6e 65 6f 75 73 20 63 68 61    74 73 20 77 69 74 68 20 64 69 66 66 65 72 65 6e  | simultaneous.chats.with.differen | 
| f240 |  74 20 6d 6f 64 65 6c 73 2c 20 6d 6f 64 65 6c 20    73 65 74 74 69 6e 67 73 20 61 6e 64 20 64 69 72  | t.models,.model.settings.and.dir | 
| f260 |  65 63 74 69 76 65 73 20 75 6e 64 65 72 20 64 69    66 66 65 72 65 6e 74 20 4f 72 67 20 68 65 61 64  | ectives.under.different.Org.head | 
| f280 |  69 6e 67 73 2e 0a 0a 2a 2a 20 46 41 51 0a 2a 2a    2a 20 43 68 61 74 20 62 75 66 66 65 72 20 55 49  | ings...**.FAQ.***.Chat.buffer.UI | 
| f2a0 |  0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c    73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a  | .#+html:.<details><summary>.**** | 
| f2c0 |  20 49 20 77 61 6e 74 20 74 68 65 20 77 69 6e 64    6f 77 20 74 6f 20 73 63 72 6f 6c 6c 20 61 75 74  | .I.want.the.window.to.scroll.aut | 
| f2e0 |  6f 6d 61 74 69 63 61 6c 6c 79 20 61 73 20 74 68    65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e  | omatically.as.the.response.is.in | 
| f300 |  73 65 72 74 65 64 0a 23 2b 68 74 6d 6c 3a 20 3c    2f 73 75 6d 6d 61 72 79 3e 0a 0a 54 6f 20 62 65  | serted.#+html:.</summary>..To.be | 
| f320 |  20 6d 69 6e 69 6d 61 6c 6c 79 20 61 6e 6e 6f 79    69 6e 67 2c 20 67 70 74 65 6c 20 64 6f 65 73 20  | .minimally.annoying,.gptel.does. | 
| f340 |  6e 6f 74 20 6d 6f 76 65 20 74 68 65 20 63 75 72    73 6f 72 20 62 79 20 64 65 66 61 75 6c 74 2e 20  | not.move.the.cursor.by.default.. | 
| f360 |  20 41 64 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69    6e 67 20 74 6f 20 79 6f 75 72 20 63 6f 6e 66 69  | .Add.the.following.to.your.confi | 
| f380 |  67 75 72 61 74 69 6f 6e 20 74 6f 20 65 6e 61 62    6c 65 20 61 75 74 6f 2d 73 63 72 6f 6c 6c 69 6e  | guration.to.enable.auto-scrollin | 
| f3a0 |  67 2e 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20    65 6d 61 63 73 2d 6c 69 73 70 0a 28 61 64 64 2d  | g...#+begin_src.emacs-lisp.(add- | 
| f3c0 |  68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74    2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 20 27 67 70  | hook.'gptel-post-stream-hook.'gp | 
| f3e0 |  74 65 6c 2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 29    0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74  | tel-auto-scroll).#+end_src..#+ht | 
| f400 |  6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23    2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e  | ml:.</details>.#+html:.<details> | 
| f420 |  3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49    20 77 61 6e 74 20 74 68 65 20 63 75 72 73 6f 72  | <summary>.****.I.want.the.cursor | 
| f440 |  20 74 6f 20 6d 6f 76 65 20 74 6f 20 74 68 65 20    6e 65 78 74 20 70 72 6f 6d 70 74 20 61 66 74 65  | .to.move.to.the.next.prompt.afte | 
| f460 |  72 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69    73 20 69 6e 73 65 72 74 65 64 0a 23 2b 68 74 6d  | r.the.response.is.inserted.#+htm | 
| f480 |  6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 54    6f 20 62 65 20 6d 69 6e 69 6d 61 6c 6c 79 20 61  | l:.</summary>..To.be.minimally.a | 
| f4a0 |  6e 6e 6f 79 69 6e 67 2c 20 67 70 74 65 6c 20 64    6f 65 73 20 6e 6f 74 20 6d 6f 76 65 20 74 68 65  | nnoying,.gptel.does.not.move.the | 
| f4c0 |  20 63 75 72 73 6f 72 20 62 79 20 64 65 66 61 75    6c 74 2e 20 20 41 64 64 20 74 68 65 20 66 6f 6c  | .cursor.by.default...Add.the.fol | 
| f4e0 |  6c 6f 77 69 6e 67 20 74 6f 20 79 6f 75 72 20 63    6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 74 6f 20  | lowing.to.your.configuration.to. | 
| f500 |  6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 3a    0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d  | move.the.cursor:..#+begin_src.em | 
| f520 |  61 63 73 2d 6c 69 73 70 0a 28 61 64 64 2d 68 6f    6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72  | acs-lisp.(add-hook.'gptel-post-r | 
| f540 |  65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e    73 20 27 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d  | esponse-functions.'gptel-end-of- | 
| f560 |  72 65 73 70 6f 6e 73 65 29 0a 23 2b 65 6e 64 5f    73 72 63 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73  | response).#+end_src..You.can.als | 
| f580 |  6f 20 63 61 6c 6c 20 3d 67 70 74 65 6c 2d 65 6e    64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 3d 20 61  | o.call.=gptel-end-of-response=.a | 
| f5a0 |  73 20 61 20 63 6f 6d 6d 61 6e 64 20 61 74 20 61    6e 79 20 74 69 6d 65 2e 0a 0a 23 2b 68 74 6d 6c  | s.a.command.at.any.time...#+html | 
| f5c0 |  3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68    74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73  | :.</details>.#+html:.<details><s | 
| f5e0 |  75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20 77    61 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68  | ummary>.****.I.want.to.change.th | 
| f600 |  65 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f 66 20    74 68 65 20 70 72 6f 6d 70 74 20 61 6e 64 20 4c  | e.formatting.of.the.prompt.and.L | 
| f620 |  4c 4d 20 72 65 73 70 6f 6e 73 65 0a 23 2b 68 74    6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a  | LM.response.#+html:.</summary>.. | 
| f640 |  46 6f 72 20 64 65 64 69 63 61 74 65 64 20 63 68    61 74 20 62 75 66 66 65 72 73 3a 20 63 75 73 74  | For.dedicated.chat.buffers:.cust | 
| f660 |  6f 6d 69 7a 65 20 3d 67 70 74 65 6c 2d 70 72 6f    6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 74  | omize.=gptel-prompt-prefix-alist | 
| f680 |  3d 20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 73    70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 61 6c 69  | =.and.=gptel-response-prefix-ali | 
| f6a0 |  73 74 3d 2e 20 20 59 6f 75 20 63 61 6e 20 73 65    74 20 61 20 64 69 66 66 65 72 65 6e 74 20 70 61  | st=...You.can.set.a.different.pa | 
| f6c0 |  69 72 20 66 6f 72 20 65 61 63 68 20 6d 61 6a 6f    72 2d 6d 6f 64 65 2e 0a 0a 41 6e 79 77 68 65 72  | ir.for.each.major-mode...Anywher | 
| f6e0 |  65 20 69 6e 20 45 6d 61 63 73 3a 20 55 73 65 20    3d 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f  | e.in.Emacs:.Use.=gptel-pre-respo | 
| f700 |  6e 73 65 2d 68 6f 6f 6b 3d 20 61 6e 64 20 3d 67    70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e  | nse-hook=.and.=gptel-post-respon | 
| f720 |  73 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 2c 20 77    68 69 63 68 20 73 65 65 2e 0a 0a 23 2b 68 74 6d  | se-functions=,.which.see...#+htm | 
| f740 |  6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b    68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c  | l:.</details>.#+html:.<details>< | 
| f760 |  73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 48 6f    77 20 64 6f 65 73 20 67 70 74 65 6c 20 64 69 73  | summary>.****.How.does.gptel.dis | 
| f780 |  74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e    20 75 73 65 72 20 70 72 6f 6d 70 74 73 20 61 6e  | tinguish.between.user.prompts.an | 
| f7a0 |  64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 3f    0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61  | d.LLM.responses?.#+html:.</summa | 
| f7c0 |  72 79 3e 0a 0a 67 70 74 65 6c 20 75 73 65 73 20    5b 5b 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e  | ry>..gptel.uses.[[https://www.gn | 
| f7e0 |  75 2e 6f 72 67 2f 73 6f 66 74 77 61 72 65 2f 65    6d 61 63 73 2f 6d 61 6e 75 61 6c 2f 68 74 6d 6c  | u.org/software/emacs/manual/html | 
| f800 |  5f 6e 6f 64 65 2f 65 6c 69 73 70 2f 54 65 78 74    2d 50 72 6f 70 65 72 74 69 65 73 2e 68 74 6d 6c  | _node/elisp/Text-Properties.html | 
| f820 |  5d 5b 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65    73 5d 5d 20 74 6f 20 77 61 74 65 72 6d 61 72 6b  | ][text-properties]].to.watermark | 
| f840 |  20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 20    20 54 68 75 73 20 74 68 69 73 20 74 65 78 74 20  | .LLM.responses...Thus.this.text. | 
| f860 |  69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61    73 20 61 20 72 65 73 70 6f 6e 73 65 20 65 76 65  | is.interpreted.as.a.response.eve | 
| f880 |  6e 20 69 66 20 79 6f 75 20 63 6f 70 79 20 69 74    20 69 6e 74 6f 20 61 6e 6f 74 68 65 72 20 62 75  | n.if.you.copy.it.into.another.bu | 
| f8a0 |  66 66 65 72 2e 20 20 49 6e 20 72 65 67 75 6c 61    72 20 62 75 66 66 65 72 73 20 28 62 75 66 66 65  | ffer...In.regular.buffers.(buffe | 
| f8c0 |  72 73 20 77 69 74 68 6f 75 74 20 3d 67 70 74 65    6c 2d 6d 6f 64 65 3d 20 65 6e 61 62 6c 65 64 29  | rs.without.=gptel-mode=.enabled) | 
| f8e0 |  2c 20 79 6f 75 20 63 61 6e 20 74 75 72 6e 20 6f    66 66 20 74 68 69 73 20 74 72 61 63 6b 69 6e 67  | ,.you.can.turn.off.this.tracking | 
| f900 |  20 62 79 20 75 6e 73 65 74 74 69 6e 67 20 3d 67    70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f  | .by.unsetting.=gptel-track-respo | 
| f920 |  6e 73 65 3d 2e 0a 0a 57 68 65 6e 20 72 65 73 74    6f 72 69 6e 67 20 61 20 63 68 61 74 20 73 74 61  | nse=...When.restoring.a.chat.sta | 
| f940 |  74 65 20 66 72 6f 6d 20 61 20 66 69 6c 65 20 6f    6e 20 64 69 73 6b 2c 20 67 70 74 65 6c 20 77 69  | te.from.a.file.on.disk,.gptel.wi | 
| f960 |  6c 6c 20 61 70 70 6c 79 20 74 68 65 73 65 20 70    72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 20 73  | ll.apply.these.properties.from.s | 
| f980 |  61 76 65 64 20 6d 65 74 61 64 61 74 61 20 69 6e    20 74 68 65 20 66 69 6c 65 20 77 68 65 6e 20 79  | aved.metadata.in.the.file.when.y | 
| f9a0 |  6f 75 20 74 75 72 6e 20 6f 6e 20 3d 67 70 74 65    6c 2d 6d 6f 64 65 3d 2e 0a 0a 67 70 74 65 6c 20  | ou.turn.on.=gptel-mode=...gptel. | 
| f9c0 |  64 6f 65 73 20 2f 6e 6f 74 2f 20 75 73 65 20 61    6e 79 20 70 72 65 66 69 78 20 6f 72 20 73 65 6d  | does./not/.use.any.prefix.or.sem | 
| f9e0 |  61 6e 74 69 63 2f 73 79 6e 74 61 78 20 65 6c 65    6d 65 6e 74 20 69 6e 20 74 68 65 20 62 75 66 66  | antic/syntax.element.in.the.buff | 
| fa00 |  65 72 20 28 73 75 63 68 20 61 73 20 68 65 61 64    69 6e 67 73 29 20 74 6f 20 73 65 70 61 72 61 74  | er.(such.as.headings).to.separat | 
| fa20 |  65 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65    73 70 6f 6e 73 65 73 2e 20 20 54 68 65 20 72 65  | e.prompts.and.responses...The.re | 
| fa40 |  61 73 6f 6e 20 66 6f 72 20 74 68 69 73 20 69 73    20 74 68 61 74 20 67 70 74 65 6c 20 61 69 6d 73  | ason.for.this.is.that.gptel.aims | 
| fa60 |  20 74 6f 20 69 6e 74 65 67 72 61 74 65 20 61 73    20 73 65 61 6d 6c 65 73 73 6c 79 20 61 73 20 70  | .to.integrate.as.seamlessly.as.p | 
| fa80 |  6f 73 73 69 62 6c 65 20 69 6e 74 6f 20 79 6f 75    72 20 72 65 67 75 6c 61 72 20 45 6d 61 63 73 20  | ossible.into.your.regular.Emacs. | 
| faa0 |  75 73 61 67 65 3a 20 4c 4c 4d 20 69 6e 74 65 72    61 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 74 68  | usage:.LLM.interaction.is.not.th | 
| fac0 |  65 20 6f 62 6a 65 63 74 69 76 65 2c 20 69 74 27    73 20 6a 75 73 74 20 61 6e 6f 74 68 65 72 20 74  | e.objective,.it's.just.another.t | 
| fae0 |  6f 6f 6c 20 61 74 20 79 6f 75 72 20 64 69 73 70    6f 73 61 6c 2e 20 20 53 6f 20 72 65 71 75 69 72  | ool.at.your.disposal...So.requir | 
| fb00 |  69 6e 67 20 61 20 62 75 6e 63 68 20 6f 66 20 22    75 73 65 72 22 20 61 6e 64 20 22 61 73 73 69 73  | ing.a.bunch.of."user".and."assis | 
| fb20 |  74 61 6e 74 22 20 74 61 67 73 20 69 6e 20 74 68    65 20 62 75 66 66 65 72 20 69 73 20 6e 6f 69 73  | tant".tags.in.the.buffer.is.nois | 
| fb40 |  79 20 61 6e 64 20 72 65 73 74 72 69 63 74 69 76    65 2e 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74  | y.and.restrictive..If.you.want.t | 
| fb60 |  68 65 73 65 20 64 65 6d 61 72 63 61 74 69 6f 6e    73 2c 20 79 6f 75 20 63 61 6e 20 63 75 73 74 6f  | hese.demarcations,.you.can.custo | 
| fb80 |  6d 69 7a 65 20 3d 67 70 74 65 6c 2d 70 72 6f 6d    70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 3d  | mize.=gptel-prompt-prefix-alist= | 
| fba0 |  20 61 6e 64 20 3d 67 70 74 65 6c 2d 72 65 73 70    6f 6e 73 65 2d 70 72 65 66 69 78 2d 61 6c 69 73  | .and.=gptel-response-prefix-alis | 
| fbc0 |  74 3d 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74    68 65 73 65 20 70 72 65 66 69 78 65 73 20 61 72  | t=...Note.that.these.prefixes.ar | 
| fbe0 |  65 20 66 6f 72 20 79 6f 75 72 20 72 65 61 64 61    62 69 6c 69 74 79 20 6f 6e 6c 79 20 61 6e 64 20  | e.for.your.readability.only.and. | 
| fc00 |  70 75 72 65 6c 79 20 63 6f 73 6d 65 74 69 63 2e    0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74 61  | purely.cosmetic...#+html:.</deta | 
| fc20 |  69 6c 73 3e 0a 2a 2a 2a 20 54 72 61 6e 73 69 65    6e 74 20 6d 65 6e 75 20 62 65 68 61 76 69 6f 72  | ils>.***.Transient.menu.behavior | 
| fc40 |  0a 23 2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c    73 3e 3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a  | .#+html:.<details><summary>.**** | 
| fc60 |  20 49 20 77 61 6e 74 20 74 6f 20 73 65 74 20 67    70 74 65 6c 20 6f 70 74 69 6f 6e 73 2c 20 62 75  | .I.want.to.set.gptel.options,.bu | 
| fc80 |  74 20 6f 6e 6c 79 20 66 6f 72 20 74 68 69 73 20    62 75 66 66 65 72 0a 3a 50 52 4f 50 45 52 54 49  | t.only.for.this.buffer.:PROPERTI | 
| fca0 |  45 53 3a 0a 3a 49 44 3a 20 20 20 20 20 20 20 37    34 38 63 62 63 30 30 2d 30 63 39 32 2d 34 37 30  | ES:.:ID:.......748cbc00-0c92-470 | 
| fcc0 |  35 2d 38 38 33 39 2d 36 31 39 62 32 63 38 30 65    35 36 36 0a 3a 45 4e 44 3a 0a 23 2b 68 74 6d 6c  | 5-8839-619b2c80e566.:END:.#+html | 
| fce0 |  3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 49 6e    20 65 76 65 72 79 20 6d 65 6e 75 20 75 73 65 64  | :.</summary>..In.every.menu.used | 
| fd00 |  20 74 6f 20 73 65 74 20 6f 70 74 69 6f 6e 73 2c    20 67 70 74 65 6c 20 70 72 6f 76 69 64 65 73 20  | .to.set.options,.gptel.provides. | 
| fd20 |  61 20 22 73 63 6f 70 65 22 20 6f 70 74 69 6f 6e    2c 20 62 6f 75 6e 64 20 74 6f 20 74 68 65 20 7e  | a."scope".option,.bound.to.the.~ | 
| fd40 |  3d 7e 20 6b 65 79 3a 0a 0a 23 2b 68 74 6d 6c 3a    20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73  | =~.key:..#+html:.<img.src="https | 
| fd60 |  3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73    65 72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61  | ://github.com/user-attachments/a | 
| fd80 |  73 73 65 74 73 2f 66 39 39 30 34 31 33 34 2d 32    39 30 35 2d 34 62 31 64 2d 61 64 33 37 2d 62 36  | ssets/f9904134-2905-4b1d-ad37-b6 | 
| fda0 |  34 63 37 37 37 61 66 38 61 63 22 20 61 6c 69 67    6e 3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 0a 23  | 4c777af8ac".align="center"./>..# | 
| fdc0 |  2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63 3d    22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e  | +html:.<img.src="https://github. | 
| fde0 |  63 6f 6d 2f 75 73 65 72 2d 61 74 74 61 63 68 6d    65 6e 74 73 2f 61 73 73 65 74 73 2f 63 30 39 35  | com/user-attachments/assets/c095 | 
| fe00 |  30 30 33 35 2d 62 66 36 35 2d 34 33 61 65 2d 62    36 34 39 2d 38 65 33 62 36 35 31 63 65 33 66 31  | 0035-bf65-43ae-b649-8e3b651ce3f1 | 
| fe20 |  22 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22    20 2f 3e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69 6d  | ".align="center"./>..#+html:.<im | 
| fe40 |  67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 67    69 74 68 75 62 2e 63 6f 6d 2f 75 73 65 72 2d 61  | g.src="https://github.com/user-a | 
| fe60 |  74 74 61 63 68 6d 65 6e 74 73 2f 61 73 73 65 74    73 2f 66 61 33 62 31 32 34 36 2d 65 30 30 66 2d  | ttachments/assets/fa3b1246-e00f- | 
| fe80 |  34 63 35 65 2d 38 38 63 37 2d 34 36 35 35 37 62    33 35 30 37 65 66 22 20 61 6c 69 67 6e 3d 22 63  | 4c5e-88c7-46557b3507ef".align="c | 
| fea0 |  65 6e 74 65 72 22 20 2f 3e 0a 0a 59 6f 75 20 63    61 6e 20 66 6c 69 70 20 74 68 69 73 20 73 77 69  | enter"./>..You.can.flip.this.swi | 
| fec0 |  74 63 68 20 62 65 66 6f 72 65 20 73 65 74 74 69    6e 67 20 74 68 65 20 6f 70 74 69 6f 6e 20 74 6f  | tch.before.setting.the.option.to | 
| fee0 |  20 3d 62 75 66 66 65 72 3d 20 6f 72 20 3d 6f 6e    65 73 68 6f 74 3d 2e 20 20 59 6f 75 20 6f 6e 6c  | .=buffer=.or.=oneshot=...You.onl | 
| ff00 |  79 20 6e 65 65 64 20 74 6f 20 66 6c 69 70 20 74    68 69 73 20 73 77 69 74 63 68 20 6f 6e 63 65 2c  | y.need.to.flip.this.switch.once, | 
| ff20 |  20 69 74 27 73 20 61 20 70 65 72 73 69 73 74 65    6e 74 20 73 65 74 74 69 6e 67 2e 20 20 3d 62 75  | .it's.a.persistent.setting...=bu | 
| ff40 |  66 66 65 72 3d 20 73 65 74 73 20 74 68 65 20 6f    70 74 69 6f 6e 20 62 75 66 66 65 72 2d 6c 6f 63  | ffer=.sets.the.option.buffer-loc | 
| ff60 |  61 6c 6c 79 2c 20 3d 6f 6e 65 73 68 6f 74 3d 20    77 69 6c 6c 20 73 65 74 20 69 74 20 66 6f 72 20  | ally,.=oneshot=.will.set.it.for. | 
| ff80 |  74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 20 72    65 71 75 65 73 74 20 6f 6e 6c 79 2e 20 20 54 68  | the.next.gptel.request.only...Th | 
| ffa0 |  65 20 64 65 66 61 75 6c 74 20 73 63 6f 70 65 20    69 73 20 67 6c 6f 62 61 6c 2e 0a 0a 23 2b 68 74  | e.default.scope.is.global...#+ht | 
| ffc0 |  6d 6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23    2b 68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e  | ml:.</details>.#+html:.<details> | 
| ffe0 |  3c 73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49    20 77 61 6e 74 20 74 68 65 20 74 72 61 6e 73 69  | <summary>.****.I.want.the.transi | 
| 10000 |  65 6e 74 20 6d 65 6e 75 20 6f 70 74 69 6f 6e 73    20 74 6f 20 62 65 20 73 61 76 65 64 20 73 6f 20  | ent.menu.options.to.be.saved.so. | 
| 10020 |  49 20 6f 6e 6c 79 20 6e 65 65 64 20 74 6f 20 73    65 74 20 74 68 65 6d 20 6f 6e 63 65 0a 23 2b 68  | I.only.need.to.set.them.once.#+h | 
| 10040 |  74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a    0a 41 6e 79 20 6d 6f 64 65 6c 20 6f 70 74 69 6f  | tml:.</summary>..Any.model.optio | 
| 10060 |  6e 73 20 79 6f 75 20 73 65 74 20 61 72 65 20 73    61 76 65 64 20 61 63 63 6f 72 64 69 6e 67 20 74  | ns.you.set.are.saved.according.t | 
| 10080 |  6f 20 74 68 65 20 73 63 6f 70 65 20 28 73 65 65    20 70 72 65 76 69 6f 75 73 20 71 75 65 73 74 69  | o.the.scope.(see.previous.questi | 
| 100a0 |  6f 6e 29 2e 20 20 42 75 74 20 74 68 65 20 72 65    64 69 72 65 63 74 69 6f 6e 20 6f 70 74 69 6f 6e  | on)...But.the.redirection.option | 
| 100c0 |  73 20 69 6e 20 74 68 65 20 6d 65 6e 75 20 61 72    65 20 73 65 74 20 66 6f 72 20 74 68 65 20 6e 65  | s.in.the.menu.are.set.for.the.ne | 
| 100e0 |  78 74 20 71 75 65 72 79 20 6f 6e 6c 79 3a 0a 0a    23 2b 68 74 6d 6c 3a 20 3c 69 6d 67 20 73 72 63  | xt.query.only:..#+html:.<img.src | 
| 10100 |  3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62    2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70  | ="https://github.com/karthink/gp | 
| 10120 |  74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30 37 35    33 32 2f 32 65 63 63 36 62 65 39 2d 61 61 35 32  | tel/assets/8607532/2ecc6be9-aa52 | 
| 10140 |  2d 34 32 38 37 2d 61 37 33 39 2d 62 61 30 36 65    31 33 36 39 65 63 32 22 20 61 6c 74 3d 22 68 74  | -4287-a739-ba06e1369ec2".alt="ht | 
| 10160 |  74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d    2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65 6c 2f  | tps://github.com/karthink/gptel/ | 
| 10180 |  61 73 73 65 74 73 2f 38 36 30 37 35 33 32 2f 32    65 63 63 36 62 65 39 2d 61 61 35 32 2d 34 32 38  | assets/8607532/2ecc6be9-aa52-428 | 
| 101a0 |  37 2d 61 37 33 39 2d 62 61 30 36 65 31 33 36 39    65 63 32 22 3e 0a 0a 59 6f 75 20 63 61 6e 20 6d  | 7-a739-ba06e1369ec2">..You.can.m | 
| 101c0 |  61 6b 65 20 74 68 65 6d 20 70 65 72 73 69 73 74    65 6e 74 20 61 63 72 6f 73 73 20 74 68 69 73 20  | ake.them.persistent.across.this. | 
| 101e0 |  45 6d 61 63 73 20 73 65 73 73 69 6f 6e 20 62 79    20 70 72 65 73 73 69 6e 67 20 7e 43 2d 78 20 43  | Emacs.session.by.pressing.~C-x.C | 
| 10200 |  2d 73 7e 3a 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 69    6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f  | -s~:..#+html:.<img.src="https:// | 
| 10220 |  67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68    69 6e 6b 2f 67 70 74 65 6c 2f 61 73 73 65 74 73  | github.com/karthink/gptel/assets | 
| 10240 |  2f 38 36 30 37 35 33 32 2f 62 38 62 63 62 36 61    64 2d 63 39 37 34 2d 34 31 65 31 2d 39 33 33 36  | /8607532/b8bcb6ad-c974-41e1-9336 | 
| 10260 |  2d 66 64 62 61 30 30 39 38 61 32 66 65 22 20 61    6c 74 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68  | -fdba0098a2fe".alt="https://gith | 
| 10280 |  75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f    67 70 74 65 6c 2f 61 73 73 65 74 73 2f 38 36 30  | ub.com/karthink/gptel/assets/860 | 
| 102a0 |  37 35 33 32 2f 62 38 62 63 62 36 61 64 2d 63 39    37 34 2d 34 31 65 31 2d 39 33 33 36 2d 66 64 62  | 7532/b8bcb6ad-c974-41e1-9336-fdb | 
| 102c0 |  61 30 30 39 38 61 32 66 65 22 3e 0a 0a 28 59 6f    75 20 63 61 6e 20 61 6c 73 6f 20 63 79 63 6c 65  | a0098a2fe">..(You.can.also.cycle | 
| 102e0 |  20 74 68 72 6f 75 67 68 20 70 72 65 73 65 74 73    20 79 6f 75 27 76 65 20 73 61 76 65 64 20 77 69  | .through.presets.you've.saved.wi | 
| 10300 |  74 68 20 7e 43 2d 78 20 70 7e 20 61 6e 64 20 7e    43 2d 78 20 6e 7e 2e 29 0a 0a 4e 6f 77 20 74 68  | th.~C-x.p~.and.~C-x.n~.)..Now.th | 
| 10320 |  65 73 65 20 77 69 6c 6c 20 62 65 20 65 6e 61 62    6c 65 64 20 77 68 65 6e 65 76 65 72 20 79 6f 75  | ese.will.be.enabled.whenever.you | 
| 10340 |  20 73 65 6e 64 20 61 20 71 75 65 72 79 20 66 72    6f 6d 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74  | .send.a.query.from.the.transient | 
| 10360 |  20 6d 65 6e 75 2e 20 20 49 66 20 79 6f 75 20 77    61 6e 74 20 74 6f 20 75 73 65 20 74 68 65 73 65  | .menu...If.you.want.to.use.these | 
| 10380 |  20 73 61 76 65 64 20 6f 70 74 69 6f 6e 73 20 77    69 74 68 6f 75 74 20 69 6e 76 6f 6b 69 6e 67 20  | .saved.options.without.invoking. | 
| 103a0 |  74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 6d 65    6e 75 2c 20 79 6f 75 20 63 61 6e 20 75 73 65 20  | the.transient.menu,.you.can.use. | 
| 103c0 |  61 20 6b 65 79 62 6f 61 72 64 20 6d 61 63 72 6f    3a 0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65  | a.keyboard.macro:..#+begin_src.e | 
| 103e0 |  6d 61 63 73 2d 6c 69 73 70 0a 3b 3b 20 52 65 70    6c 61 63 65 20 77 69 74 68 20 79 6f 75 72 20 6b  | macs-lisp.;;.Replace.with.your.k | 
| 10400 |  65 79 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65    20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 3a  | ey.to.invoke.the.transient.menu: | 
| 10420 |  0a 28 6b 65 79 6d 61 70 2d 67 6c 6f 62 61 6c 2d    73 65 74 20 22 3c 66 36 3e 22 20 22 43 2d 75 20  | .(keymap-global-set."<f6>"."C-u. | 
| 10440 |  43 2d 63 20 3c 72 65 74 75 72 6e 3e 20 3c 72 65    74 75 72 6e 3e 22 29 0a 23 2b 65 6e 64 5f 73 72  | C-c.<return>.<return>").#+end_sr | 
| 10460 |  63 0a 0a 4f 72 20 73 65 65 20 74 68 69 73 20 5b    5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e  | c..Or.see.this.[[https://github. | 
| 10480 |  63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74    65 6c 2f 77 69 6b 69 2f 43 6f 6d 6d 6f 6e 6c 79  | com/karthink/gptel/wiki/Commonly | 
| 104a0 |  2d 72 65 71 75 65 73 74 65 64 2d 66 65 61 74 75    72 65 73 23 73 61 76 65 2d 74 72 61 6e 73 69 65  | -requested-features#save-transie | 
| 104c0 |  6e 74 2d 66 6c 61 67 73 5d 5b 77 69 6b 69 20 65    6e 74 72 79 5d 5d 2e 0a 0a 23 2b 68 74 6d 6c 3a  | nt-flags][wiki.entry]]...#+html: | 
| 104e0 |  20 3c 2f 64 65 74 61 69 6c 73 3e 0a 23 2b 68 74    6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c 73 75  | .</details>.#+html:.<details><su | 
| 10500 |  6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 55 73 69 6e    67 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20  | mmary>.****.Using.the.transient. | 
| 10520 |  6d 65 6e 75 20 6c 65 61 76 65 73 20 62 65 68 69    6e 64 20 65 78 74 72 61 20 77 69 6e 64 6f 77 73  | menu.leaves.behind.extra.windows | 
| 10540 |  0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61    72 79 3e 0a 0a 49 66 20 75 73 69 6e 67 20 67 70  | .#+html:.</summary>..If.using.gp | 
| 10560 |  74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20    6d 65 6e 75 73 20 63 61 75 73 65 73 20 6e 65 77  | tel's.transient.menus.causes.new | 
| 10580 |  2f 65 78 74 72 61 20 77 69 6e 64 6f 77 20 73 70    6c 69 74 73 20 74 6f 20 62 65 20 63 72 65 61 74  | /extra.window.splits.to.be.creat | 
| 105a0 |  65 64 2c 20 63 68 65 63 6b 20 79 6f 75 72 20 76    61 6c 75 65 20 6f 66 20 3d 74 72 61 6e 73 69 65  | ed,.check.your.value.of.=transie | 
| 105c0 |  6e 74 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65    72 2d 61 63 74 69 6f 6e 3d 2e 20 20 5b 5b 68 74  | nt-display-buffer-action=...[[ht | 
| 105e0 |  74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d    2f 6d 61 67 69 74 2f 74 72 61 6e 73 69 65 6e 74  | tps://github.com/magit/transient | 
| 10600 |  2f 64 69 73 63 75 73 73 69 6f 6e 73 2f 33 35 38    5d 5b 53 65 65 20 74 68 69 73 20 64 69 73 63 75  | /discussions/358][See.this.discu | 
| 10620 |  73 73 69 6f 6e 5d 5d 20 66 6f 72 20 6d 6f 72 65    20 63 6f 6e 74 65 78 74 2e 0a 0a 49 66 20 79 6f  | ssion]].for.more.context...If.yo | 
| 10640 |  75 20 61 72 65 20 75 73 69 6e 67 20 48 65 6c 6d    2c 20 73 65 65 20 5b 5b 68 74 74 70 73 3a 2f 2f  | u.are.using.Helm,.see.[[https:// | 
| 10660 |  67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 69 74    2f 74 72 61 6e 73 69 65 6e 74 2f 64 69 73 63 75  | github.com/magit/transient/discu | 
| 10680 |  73 73 69 6f 6e 73 2f 33 36 31 5d 5b 54 72 61 6e    73 69 65 6e 74 23 33 36 31 5d 5d 2e 0a 0a 49 6e  | ssions/361][Transient#361]]...In | 
| 106a0 |  20 67 65 6e 65 72 61 6c 2c 20 64 6f 20 6e 6f 74    20 63 75 73 74 6f 6d 69 7a 65 20 74 68 69 73 20  | .general,.do.not.customize.this. | 
| 106c0 |  54 72 61 6e 73 69 65 6e 74 20 6f 70 74 69 6f 6e    20 75 6e 6c 65 73 73 20 79 6f 75 20 6b 6e 6f 77  | Transient.option.unless.you.know | 
| 106e0 |  20 77 68 61 74 20 79 6f 75 27 72 65 20 64 6f 69    6e 67 21 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64  | .what.you're.doing!..#+html:.</d | 
| 10700 |  65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20    3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72  | etails>.#+html:.<details><summar | 
| 10720 |  79 3e 0a 2a 2a 2a 2a 20 43 61 6e 20 49 20 63 68    61 6e 67 65 20 74 68 65 20 74 72 61 6e 73 69 65  | y>.****.Can.I.change.the.transie | 
| 10740 |  6e 74 20 6d 65 6e 75 20 6b 65 79 20 62 69 6e 64    69 6e 67 73 3f 0a 23 2b 68 74 6d 6c 3a 20 3c 2f  | nt.menu.key.bindings?.#+html:.</ | 
| 10760 |  73 75 6d 6d 61 72 79 3e 0a 0a 59 65 73 2c 20 73    65 65 20 3d 74 72 61 6e 73 69 65 6e 74 2d 73 75  | summary>..Yes,.see.=transient-su | 
| 10780 |  66 66 69 78 2d 70 75 74 3d 2e 20 20 54 68 69 73    20 63 68 61 6e 67 65 73 20 74 68 65 20 6b 65 79  | ffix-put=...This.changes.the.key | 
| 107a0 |  20 74 6f 20 73 65 6c 65 63 74 20 61 20 62 61 63    6b 65 6e 64 2f 6d 6f 64 65 6c 20 66 72 6f 6d 20  | .to.select.a.backend/model.from. | 
| 107c0 |  22 2d 6d 22 20 74 6f 20 22 4d 22 20 69 6e 20 67    70 74 65 6c 27 73 20 6d 65 6e 75 3a 0a 23 2b 62  | "-m".to."M".in.gptel's.menu:.#+b | 
| 107e0 |  65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d 6c    69 73 70 0a 28 74 72 61 6e 73 69 65 6e 74 2d 73  | egin_src.emacs-lisp.(transient-s | 
| 10800 |  75 66 66 69 78 2d 70 75 74 20 27 67 70 74 65 6c    2d 6d 65 6e 75 20 28 6b 62 64 20 22 2d 6d 22 29  | uffix-put.'gptel-menu.(kbd."-m") | 
| 10820 |  20 3a 6b 65 79 20 22 4d 22 29 0a 23 2b 65 6e 64    5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f  | .:key."M").#+end_src..#+html:.</ | 
| 10840 |  64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a    20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61  | details>.#+html:.<details><summa | 
| 10860 |  72 79 3e 0a 2a 2a 2a 2a 20 28 44 6f 6f 6d 20 45    6d 61 63 73 29 20 53 65 6e 64 69 6e 67 20 61 20  | ry>.****.(Doom.Emacs).Sending.a. | 
| 10880 |  71 75 65 72 79 20 66 72 6f 6d 20 74 68 65 20 67    70 74 65 6c 20 6d 65 6e 75 20 66 61 69 6c 73 20  | query.from.the.gptel.menu.fails. | 
| 108a0 |  62 65 63 61 75 73 65 20 6f 66 20 61 20 6b 65 79    20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 4f  | because.of.a.key.conflict.with.O | 
| 108c0 |  72 67 20 6d 6f 64 65 0a 23 2b 68 74 6d 6c 3a 20    3c 2f 73 75 6d 6d 61 72 79 3e 0a 0a 44 6f 6f 6d  | rg.mode.#+html:.</summary>..Doom | 
| 108e0 |  20 62 69 6e 64 73 20 7e 52 45 54 7e 20 69 6e 20    4f 72 67 20 6d 6f 64 65 20 74 6f 20 3d 2b 6f 72  | .binds.~RET~.in.Org.mode.to.=+or | 
| 10900 |  67 2f 64 77 69 6d 2d 61 74 2d 70 6f 69 6e 74 3d    2c 20 77 68 69 63 68 20 61 70 70 65 61 72 73 20  | g/dwim-at-point=,.which.appears. | 
| 10920 |  74 6f 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68    20 67 70 74 65 6c 27 73 20 74 72 61 6e 73 69 65  | to.conflict.with.gptel's.transie | 
| 10940 |  6e 74 20 6d 65 6e 75 20 62 69 6e 64 69 6e 67 73    20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e  | nt.menu.bindings.for.some.reason | 
| 10960 |  2e 0a 0a 54 77 6f 20 73 6f 6c 75 74 69 6f 6e 73    3a 0a 2d 20 50 72 65 73 73 20 7e 43 2d 6d 7e 20  | ...Two.solutions:.-.Press.~C-m~. | 
| 10980 |  69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 72    65 74 75 72 6e 20 6b 65 79 2e 0a 2d 20 43 68 61  | instead.of.the.return.key..-.Cha | 
| 109a0 |  6e 67 65 20 74 68 65 20 73 65 6e 64 20 6b 65 79    20 66 72 6f 6d 20 72 65 74 75 72 6e 20 74 6f 20  | nge.the.send.key.from.return.to. | 
| 109c0 |  61 20 6b 65 79 20 6f 66 20 79 6f 75 72 20 63 68    6f 69 63 65 3a 0a 20 20 23 2b 62 65 67 69 6e 5f  | a.key.of.your.choice:...#+begin_ | 
| 109e0 |  73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20    20 28 74 72 61 6e 73 69 65 6e 74 2d 73 75 66 66  | src.emacs-lisp...(transient-suff | 
| 10a00 |  69 78 2d 70 75 74 20 27 67 70 74 65 6c 2d 6d 65    6e 75 20 28 6b 62 64 20 22 52 45 54 22 29 20 3a  | ix-put.'gptel-menu.(kbd."RET").: | 
| 10a20 |  6b 65 79 20 22 3c 66 38 3e 22 29 0a 20 20 23 2b    65 6e 64 5f 73 72 63 0a 0a 23 2b 68 74 6d 6c 3a  | key."<f8>")...#+end_src..#+html: | 
| 10a40 |  20 3c 2f 64 65 74 61 69 6c 73 3e 0a 2a 2a 2a 20    4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 0a 23 2b  | .</details>.***.Miscellaneous.#+ | 
| 10a60 |  68 74 6d 6c 3a 20 3c 64 65 74 61 69 6c 73 3e 3c    73 75 6d 6d 61 72 79 3e 0a 2a 2a 2a 2a 20 49 20  | html:.<details><summary>.****.I. | 
| 10a80 |  77 61 6e 74 20 74 6f 20 75 73 65 20 67 70 74 65    6c 20 69 6e 20 61 20 77 61 79 20 74 68 61 74 27  | want.to.use.gptel.in.a.way.that' | 
| 10aa0 |  73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20    62 79 20 3d 67 70 74 65 6c 2d 73 65 6e 64 3d 20  | s.not.supported.by.=gptel-send=. | 
| 10ac0 |  6f 72 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 6d    65 6e 75 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 73 75  | or.the.options.menu.#+html:.</su | 
| 10ae0 |  6d 6d 61 72 79 3e 0a 0a 67 70 74 65 6c 27 73 20    64 65 66 61 75 6c 74 20 75 73 61 67 65 20 70 61  | mmary>..gptel's.default.usage.pa | 
| 10b00 |  74 74 65 72 6e 20 69 73 20 73 69 6d 70 6c 65 2c    20 61 6e 64 20 77 69 6c 6c 20 73 74 61 79 20 74  | ttern.is.simple,.and.will.stay.t | 
| 10b20 |  68 69 73 20 77 61 79 3a 20 52 65 61 64 20 69 6e    70 75 74 20 69 6e 20 61 6e 79 20 62 75 66 66 65  | his.way:.Read.input.in.any.buffe | 
| 10b40 |  72 20 61 6e 64 20 69 6e 73 65 72 74 20 74 68 65    20 72 65 73 70 6f 6e 73 65 20 62 65 6c 6f 77 20  | r.and.insert.the.response.below. | 
| 10b60 |  69 74 2e 20 20 53 6f 6d 65 20 63 75 73 74 6f 6d    20 62 65 68 61 76 69 6f 72 20 69 73 20 70 6f 73  | it...Some.custom.behavior.is.pos | 
| 10b80 |  73 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 74    72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 28 3d  | sible.with.the.transient.menu.(= | 
| 10ba0 |  43 2d 75 20 4d 2d 78 20 67 70 74 65 6c 2d 73 65    6e 64 3d 29 2e 0a 0a 46 6f 72 20 6d 6f 72 65 20  | C-u.M-x.gptel-send=)...For.more. | 
| 10bc0 |  70 72 6f 67 72 61 6d 6d 61 62 6c 65 20 75 73 61    67 65 2c 20 67 70 74 65 6c 20 70 72 6f 76 69 64  | programmable.usage,.gptel.provid | 
| 10be0 |  65 73 20 61 20 67 65 6e 65 72 61 6c 20 3d 67 70    74 65 6c 2d 72 65 71 75 65 73 74 3d 20 66 75 6e  | es.a.general.=gptel-request=.fun | 
| 10c00 |  63 74 69 6f 6e 20 74 68 61 74 20 61 63 63 65 70    74 73 20 61 20 63 75 73 74 6f 6d 20 70 72 6f 6d  | ction.that.accepts.a.custom.prom | 
| 10c20 |  70 74 20 61 6e 64 20 61 20 63 61 6c 6c 62 61 63    6b 20 74 6f 20 61 63 74 20 6f 6e 20 74 68 65 20  | pt.and.a.callback.to.act.on.the. | 
| 10c40 |  72 65 73 70 6f 6e 73 65 2e 20 59 6f 75 20 63 61    6e 20 75 73 65 20 74 68 69 73 20 74 6f 20 62 75  | response..You.can.use.this.to.bu | 
| 10c60 |  69 6c 64 20 63 75 73 74 6f 6d 20 77 6f 72 6b 66    6c 6f 77 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  | ild.custom.workflows.not.support | 
| 10c80 |  65 64 20 62 79 20 3d 67 70 74 65 6c 2d 73 65 6e    64 3d 2e 20 20 53 65 65 20 74 68 65 20 64 6f 63  | ed.by.=gptel-send=...See.the.doc | 
| 10ca0 |  75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 3d 67    70 74 65 6c 2d 72 65 71 75 65 73 74 3d 2c 20 61  | umentation.of.=gptel-request=,.a | 
| 10cc0 |  6e 64 20 74 68 65 20 5b 5b 68 74 74 70 73 3a 2f    2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74  | nd.the.[[https://github.com/kart | 
| 10ce0 |  68 69 6e 6b 2f 67 70 74 65 6c 2f 77 69 6b 69 2f    44 65 66 69 6e 69 6e 67 2d 63 75 73 74 6f 6d 2d  | hink/gptel/wiki/Defining-custom- | 
| 10d00 |  67 70 74 65 6c 2d 63 6f 6d 6d 61 6e 64 73 5d 5b    77 69 6b 69 5d 5d 20 66 6f 72 20 65 78 61 6d 70  | gptel-commands][wiki]].for.examp | 
| 10d20 |  6c 65 73 2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f    64 65 74 61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a  | les...#+html:.</details>.#+html: | 
| 10d40 |  20 3c 64 65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61    72 79 3e 0a 2a 2a 2a 2a 20 28 43 68 61 74 47 50  | .<details><summary>.****.(ChatGP | 
| 10d60 |  54 29 20 49 20 67 65 74 20 74 68 65 20 65 72 72    6f 72 20 22 28 48 54 54 50 2f 32 20 34 32 39 29  | T).I.get.the.error."(HTTP/2.429) | 
| 10d80 |  20 59 6f 75 20 65 78 63 65 65 64 65 64 20 79 6f    75 72 20 63 75 72 72 65 6e 74 20 71 75 6f 74 61  | .You.exceeded.your.current.quota | 
| 10da0 |  22 0a 23 2b 68 74 6d 6c 3a 3c 2f 73 75 6d 6d 61    72 79 3e 0a 0a 23 2b 62 65 67 69 6e 5f 71 75 6f  | ".#+html:</summary>..#+begin_quo | 
| 10dc0 |  74 65 0a 28 48 54 54 50 2f 32 20 34 32 39 29 20    59 6f 75 20 65 78 63 65 65 64 65 64 20 79 6f 75  | te.(HTTP/2.429).You.exceeded.you | 
| 10de0 |  72 20 63 75 72 72 65 6e 74 20 71 75 6f 74 61 2c    20 70 6c 65 61 73 65 20 63 68 65 63 6b 20 79 6f  | r.current.quota,.please.check.yo | 
| 10e00 |  75 72 20 70 6c 61 6e 20 61 6e 64 20 62 69 6c 6c    69 6e 67 20 64 65 74 61 69 6c 73 2e 0a 23 2b 65  | ur.plan.and.billing.details..#+e | 
| 10e20 |  6e 64 5f 71 75 6f 74 65 0a 0a 55 73 69 6e 67 20    74 68 65 20 43 68 61 74 47 50 54 20 28 6f 72 20  | nd_quote..Using.the.ChatGPT.(or. | 
| 10e40 |  61 6e 79 20 4f 70 65 6e 41 49 29 20 41 50 49 20    72 65 71 75 69 72 65 73 20 5b 5b 68 74 74 70 73  | any.OpenAI).API.requires.[[https | 
| 10e60 |  3a 2f 2f 70 6c 61 74 66 6f 72 6d 2e 6f 70 65 6e    61 69 2e 63 6f 6d 2f 61 63 63 6f 75 6e 74 2f 62  | ://platform.openai.com/account/b | 
| 10e80 |  69 6c 6c 69 6e 67 2f 6f 76 65 72 76 69 65 77 5d    5b 61 64 64 69 6e 67 20 63 72 65 64 69 74 20 74  | illing/overview][adding.credit.t | 
| 10ea0 |  6f 20 79 6f 75 72 20 61 63 63 6f 75 6e 74 5d 5d    2e 0a 0a 23 2b 68 74 6d 6c 3a 20 3c 2f 64 65 74  | o.your.account]]...#+html:.</det | 
| 10ec0 |  61 69 6c 73 3e 0a 23 2b 68 74 6d 6c 3a 20 3c 64    65 74 61 69 6c 73 3e 3c 73 75 6d 6d 61 72 79 3e  | ails>.#+html:.<details><summary> | 
| 10ee0 |  0a 2a 2a 2a 2a 20 57 68 79 20 61 6e 6f 74 68 65    72 20 4c 4c 4d 20 63 6c 69 65 6e 74 3f 0a 23 2b  | .****.Why.another.LLM.client?.#+ | 
| 10f00 |  68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e    0a 0a 4f 74 68 65 72 20 45 6d 61 63 73 20 63 6c  | html:.</summary>..Other.Emacs.cl | 
| 10f20 |  69 65 6e 74 73 20 66 6f 72 20 4c 4c 4d 73 20 70    72 65 73 63 72 69 62 65 20 74 68 65 20 66 6f 72  | ients.for.LLMs.prescribe.the.for | 
| 10f40 |  6d 61 74 20 6f 66 20 74 68 65 20 69 6e 74 65 72    61 63 74 69 6f 6e 20 28 61 20 63 6f 6d 69 6e 74  | mat.of.the.interaction.(a.comint | 
| 10f60 |  20 73 68 65 6c 6c 2c 20 6f 72 67 2d 62 61 62 65    6c 20 62 6c 6f 63 6b 73 2c 20 65 74 63 29 2e 20  | .shell,.org-babel.blocks,.etc).. | 
| 10f80 |  20 49 20 77 61 6e 74 65 64 3a 0a 0a 31 2e 20 53    6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 69 73  | .I.wanted:..1..Something.that.is | 
| 10fa0 |  20 61 73 20 66 72 65 65 2d 66 6f 72 6d 20 61 73    20 70 6f 73 73 69 62 6c 65 3a 20 71 75 65 72 79  | .as.free-form.as.possible:.query | 
| 10fc0 |  20 74 68 65 20 6d 6f 64 65 6c 20 75 73 69 6e 67    20 61 6e 79 20 74 65 78 74 20 69 6e 20 61 6e 79  | .the.model.using.any.text.in.any | 
| 10fe0 |  20 62 75 66 66 65 72 2c 20 61 6e 64 20 72 65 64    69 72 65 63 74 20 74 68 65 20 72 65 73 70 6f 6e  | .buffer,.and.redirect.the.respon | 
| 11000 |  73 65 20 61 73 20 72 65 71 75 69 72 65 64 2e 20    20 55 73 69 6e 67 20 61 20 64 65 64 69 63 61 74  | se.as.required...Using.a.dedicat | 
| 11020 |  65 64 20 3d 67 70 74 65 6c 3d 20 62 75 66 66 65    72 20 6a 75 73 74 20 61 64 64 73 20 73 6f 6d 65  | ed.=gptel=.buffer.just.adds.some | 
| 11040 |  20 76 69 73 75 61 6c 20 66 6c 61 69 72 20 74 6f    20 74 68 65 20 69 6e 74 65 72 61 63 74 69 6f 6e  | .visual.flair.to.the.interaction | 
| 11060 |  2e 0a 32 2e 20 49 6e 74 65 67 72 61 74 69 6f 6e    20 77 69 74 68 20 6f 72 67 2d 6d 6f 64 65 2c 20  | ..2..Integration.with.org-mode,. | 
| 11080 |  6e 6f 74 20 75 73 69 6e 67 20 61 20 77 61 6c 6c    65 64 2d 6f 66 66 20 6f 72 67 2d 62 61 62 65 6c  | not.using.a.walled-off.org-babel | 
| 110a0 |  20 62 6c 6f 63 6b 2c 20 62 75 74 20 61 73 20 72    65 67 75 6c 61 72 20 74 65 78 74 2e 20 20 54 68  | .block,.but.as.regular.text...Th | 
| 110c0 |  69 73 20 77 61 79 20 74 68 65 20 6d 6f 64 65 6c    20 63 61 6e 20 67 65 6e 65 72 61 74 65 20 63 6f  | is.way.the.model.can.generate.co | 
| 110e0 |  64 65 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 49    20 63 61 6e 20 72 75 6e 2e 0a 0a 23 2b 68 74 6d  | de.blocks.that.I.can.run...#+htm | 
| 11100 |  6c 3a 20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 2a    2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 43 6f 6e  | l:.</details>..**.Additional.Con | 
| 11120 |  66 69 67 75 72 61 74 69 6f 6e 0a 3a 50 52 4f 50    45 52 54 49 45 53 3a 0a 3a 49 44 3a 20 20 20 20  | figuration.:PROPERTIES:.:ID:.... | 
| 11140 |  20 20 20 66 38 38 35 61 64 61 63 2d 35 38 61 33    2d 34 65 62 61 2d 61 36 62 37 2d 39 31 65 39 65  | ...f885adac-58a3-4eba-a6b7-91e9e | 
| 11160 |  37 61 31 37 38 32 39 0a 3a 45 4e 44 3a 0a 23 2b    68 74 6d 6c 3a 20 3c 2f 73 75 6d 6d 61 72 79 3e  | 7a17829.:END:.#+html:.</summary> | 
| 11180 |  0a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d    61 63 73 2d 6c 69 73 70 20 3a 65 78 70 6f 72 74  | ..#+begin_src.emacs-lisp.:export | 
| 111a0 |  73 20 6e 6f 6e 65 20 3a 72 65 73 75 6c 74 73 20    6c 69 73 74 0a 28 6c 65 74 20 28 28 61 6c 6c 29  | s.none.:results.list.(let.((all) | 
| 111c0 |  29 0a 20 20 28 6d 61 70 61 74 6f 6d 73 20 28 6c    61 6d 62 64 61 20 28 73 79 6d 29 0a 20 20 20 20  | )...(mapatoms.(lambda.(sym)..... | 
| 111e0 |  20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20    28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74  | ..........(when.(and.(string-mat | 
| 11200 |  63 68 2d 70 20 22 5e 67 70 74 65 6c 2d 5b 5e 2d    5d 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20  | ch-p."^gptel-[^-]".(symbol-name. | 
| 11220 |  73 79 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | sym))..........................( | 
| 11240 |  67 65 74 20 73 79 6d 20 27 76 61 72 69 61 62 6c    65 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 29  | get.sym.'variable-documentation) | 
| 11260 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 75 73 68 20 73 79 6d 20 61 6c 6c 29  | ).................(push.sym.all) | 
| 11280 |  29 29 29 0a 20 20 61 6c 6c 29 0a 23 2b 65 6e 64    5f 73 72 63 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d  | )))...all).#+end_src..|--------- | 
| 112a0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------+------------------ | 
| 112c0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 112e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 7c 0a 7c 20 2a 43 6f 6e 6e 65 63 74 69 6f  | ------------------|.|.*Connectio | 
| 11300 |  6e 20 6f 70 74 69 6f 6e 73 2a 20 7c 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n.options*.|.................... | 
| 11320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 11340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ................|.|------------- | 
| 11360 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ---------+---------------------- | 
| 11380 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 113a0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a    7c 20 3d 67 70 74 65 6c 2d 75 73 65 2d 63 75 72  | --------------|.|.=gptel-use-cur | 
| 113c0 |  6c 3d 20 20 20 20 20 7c 20 55 73 65 20 43 75 72    6c 20 28 64 65 66 61 75 6c 74 29 2c 20 66 61 6c  | l=.....|.Use.Curl.(default),.fal | 
| 113e0 |  6c 62 61 63 6b 20 74 6f 20 45 6d 61 63 73 27 20    62 75 69 6c 74 2d 69 6e 20 3d 75 72 6c 3d 2e 20  | lback.to.Emacs'.built-in.=url=.. | 
| 11400 |  20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20    3d 67 70 74 65 6c 2d 70 72 6f 78 79 3d 20 20 20  | ............|.|.=gptel-proxy=... | 
| 11420 |  20 20 20 20 20 7c 20 50 72 6f 78 79 20 73 65 72    76 65 72 20 66 6f 72 20 72 65 71 75 65 73 74 73  | .....|.Proxy.server.for.requests | 
| 11440 |  2c 20 70 61 73 73 65 64 20 74 6f 20 63 75 72 6c    20 76 69 61 20 3d 2d 2d 70 72 6f 78 79 3d 2e 20  | ,.passed.to.curl.via.=--proxy=.. | 
| 11460 |  20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67    70 74 65 6c 2d 61 70 69 2d 6b 65 79 3d 20 20 20  | ..........|.|.=gptel-api-key=... | 
| 11480 |  20 20 20 7c 20 56 61 72 69 61 62 6c 65 2f 66 75    6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75  | ...|.Variable/function.that.retu | 
| 114a0 |  72 6e 73 20 74 68 65 20 41 50 49 20 6b 65 79 20    66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 62  | rns.the.API.key.for.the.active.b | 
| 114c0 |  61 63 6b 65 6e 64 2e 20 7c 0a 7c 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ackend..|.|--------------------- | 
| 114e0 |  2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -+------------------------------ | 
| 11500 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 11520 |  2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ------|..|---------------------- | 
| 11540 |  2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -+------------------------------ | 
| 11560 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a  | ---------------------------|.|.* | 
| 11580 |  4c 4c 4d 20 72 65 71 75 65 73 74 20 6f 70 74 69    6f 6e 73 2a 20 7c 20 2f 28 4e 6f 74 65 3a 20 6e  | LLM.request.options*.|./(Note:.n | 
| 115a0 |  6f 74 20 73 75 70 70 6f 72 74 65 64 20 75 6e 69    66 6f 72 6d 6c 79 20 61 63 72 6f 73 73 20 4c 4c  | ot.supported.uniformly.across.LL | 
| 115c0 |  4d 73 29 2f 20 20 20 20 20 20 20 20 20 20 20 7c    0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | Ms)/...........|.|-------------- | 
| 115e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ---------+---------------------- | 
| 11600 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 11620 |  2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 62 61    63 6b 65 6e 64 3d 20 20 20 20 20 20 20 7c 20 44  | ---|.|.=gptel-backend=.......|.D | 
| 11640 |  65 66 61 75 6c 74 20 4c 4c 4d 20 42 61 63 6b 65    6e 64 2e 20 20 20 20 20 20 20 20 20 20 20 20 20  | efault.LLM.Backend.............. | 
| 11660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65  | .......................|.|.=gpte | 
| 11680 |  6c 2d 6d 6f 64 65 6c 3d 20 20 20 20 20 20 20 20    20 7c 20 44 65 66 61 75 6c 74 20 6d 6f 64 65 6c  | l-model=.........|.Default.model | 
| 116a0 |  20 74 6f 20 75 73 65 2c 20 64 65 70 65 6e 64 73    20 6f 6e 20 74 68 65 20 62 61 63 6b 65 6e 64 2e  | .to.use,.depends.on.the.backend. | 
| 116c0 |  20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d    67 70 74 65 6c 2d 73 74 72 65 61 6d 3d 20 20 20  | ...........|.|.=gptel-stream=... | 
| 116e0 |  20 20 20 20 20 7c 20 45 6e 61 62 6c 65 20 73 74    72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65  | .....|.Enable.streaming.response | 
| 11700 |  73 2c 20 69 66 20 74 68 65 20 62 61 63 6b 65 6e    64 20 73 75 70 70 6f 72 74 73 20 69 74 2e 20 7c  | s,.if.the.backend.supports.it..| | 
| 11720 |  0a 7c 20 3d 67 70 74 65 6c 2d 64 69 72 65 63 74    69 76 65 73 3d 20 20 20 20 7c 20 41 6c 69 73 74  | .|.=gptel-directives=....|.Alist | 
| 11740 |  20 6f 66 20 73 79 73 74 65 6d 20 64 69 72 65 63    74 69 76 65 73 2c 20 63 61 6e 20 73 77 69 74 63  | .of.system.directives,.can.switc | 
| 11760 |  68 20 6f 6e 20 74 68 65 20 66 6c 79 2e 20 20 20    20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 6d 61  | h.on.the.fly.......|.|.=gptel-ma | 
| 11780 |  78 2d 74 6f 6b 65 6e 73 3d 20 20 20 20 7c 20 4d    61 78 69 6d 75 6d 20 74 6f 6b 65 6e 20 63 6f 75  | x-tokens=....|.Maximum.token.cou | 
| 117a0 |  6e 74 20 28 69 6e 20 71 75 65 72 79 20 2b 20 72    65 73 70 6f 6e 73 65 29 2e 20 20 20 20 20 20 20  | nt.(in.query.+.response)........ | 
| 117c0 |  20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65    6c 2d 74 65 6d 70 65 72 61 74 75 72 65 3d 20 20  | .......|.|.=gptel-temperature=.. | 
| 117e0 |  20 7c 20 52 61 6e 64 6f 6d 6e 65 73 73 20 69 6e    20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 2c 20  | .|.Randomness.in.response.text,. | 
| 11800 |  30 20 74 6f 20 32 2e 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d  | 0.to.2.....................|.|.= | 
| 11820 |  67 70 74 65 6c 2d 63 61 63 68 65 3d 20 20 20 20    20 20 20 20 20 7c 20 43 61 63 68 65 20 70 72 6f  | gptel-cache=.........|.Cache.pro | 
| 11840 |  6d 70 74 73 2c 20 73 79 73 74 65 6d 20 6d 65 73    73 61 67 65 20 6f 72 20 74 6f 6f 6c 73 20 28 41  | mpts,.system.message.or.tools.(A | 
| 11860 |  6e 74 68 72 6f 70 69 63 20 6f 6e 6c 79 29 20 7c    0a 7c 20 3d 67 70 74 65 6c 2d 75 73 65 2d 63 6f  | nthropic.only).|.|.=gptel-use-co | 
| 11880 |  6e 74 65 78 74 3d 20 20 20 7c 20 48 6f 77 2f 77    68 65 74 68 65 72 20 74 6f 20 69 6e 63 6c 75 64  | ntext=...|.How/whether.to.includ | 
| 118a0 |  65 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e    74 65 78 74 20 20 20 20 20 20 20 20 20 20 20 20  | e.additional.context............ | 
| 118c0 |  20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 75 73    65 2d 74 6f 6f 6c 73 3d 20 20 20 20 20 7c 20 44  | ...|.|.=gptel-use-tools=.....|.D | 
| 118e0 |  69 73 61 62 6c 65 2c 20 61 6c 6c 6f 77 20 6f 72    20 66 6f 72 63 65 20 4c 4c 4d 20 74 6f 6f 6c 2d  | isable,.allow.or.force.LLM.tool- | 
| 11900 |  75 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65  | use....................|.|.=gpte | 
| 11920 |  6c 2d 74 6f 6f 6c 73 3d 20 20 20 20 20 20 20 20    20 7c 20 4c 69 73 74 20 6f 66 20 74 6f 6f 6c 73  | l-tools=.........|.List.of.tools | 
| 11940 |  20 74 6f 20 69 6e 63 6c 75 64 65 20 77 69 74 68    20 72 65 71 75 65 73 74 73 20 20 20 20 20 20 20  | .to.include.with.requests....... | 
| 11960 |  20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ...........|.|------------------ | 
| 11980 |  2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -----+-------------------------- | 
| 119a0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c  | -------------------------------| | 
| 119c0 |  0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ..|----------------------------- | 
| 119e0 |  2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | --+----------------------------- | 
| 11a00 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 11a20 |  2d 2d 2d 7c 0a 7c 20 2a 43 68 61 74 20 55 49 20    6f 70 74 69 6f 6e 73 2a 20 20 20 20 20 20 20 20  | ---|.|.*Chat.UI.options*........ | 
| 11a40 |  20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....|.......................... | 
| 11a60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 11a80 |  20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ......|.|----------------------- | 
| 11aa0 |  2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | --------+----------------------- | 
| 11ac0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 11ae0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70    74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65  | ---------|.|.=gptel-default-mode | 
| 11b00 |  3d 20 20 20 20 20 20 20 20 20 20 7c 20 4d 61 6a    6f 72 20 6d 6f 64 65 20 66 6f 72 20 64 65 64 69  | =..........|.Major.mode.for.dedi | 
| 11b20 |  63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65    72 73 2e 20 20 20 20 20 20 20 20 20 20 20 20 20  | cated.chat.buffers.............. | 
| 11b40 |  20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20    3d 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72  | ............|.|.=gptel-prompt-pr | 
| 11b60 |  65 66 69 78 2d 61 6c 69 73 74 3d 20 20 20 7c 20    54 65 78 74 20 69 6e 73 65 72 74 65 64 20 62 65  | efix-alist=...|.Text.inserted.be | 
| 11b80 |  66 6f 72 65 20 71 75 65 72 69 65 73 2e 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fore.queries.................... | 
| 11ba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c    0a 7c 20 3d 67 70 74 65 6c 2d 72 65 73 70 6f 6e  | ...............|.|.=gptel-respon | 
| 11bc0 |  73 65 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 3d    20 7c 20 54 65 78 74 20 69 6e 73 65 72 74 65 64  | se-prefix-alist=.|.Text.inserted | 
| 11be0 |  20 62 65 66 6f 72 65 20 72 65 73 70 6f 6e 73 65    73 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .before.responses............... | 
| 11c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 74 72 61  | ..................|.|.=gptel-tra | 
| 11c20 |  63 6b 2d 72 65 73 70 6f 6e 73 65 3d 20 20 20 20    20 20 20 20 7c 20 44 69 73 74 69 6e 67 75 69 73  | ck-response=........|.Distinguis | 
| 11c40 |  68 20 62 65 74 77 65 65 6e 20 75 73 65 72 20 6d    65 73 73 61 67 65 73 20 61 6e 64 20 4c 4c 4d 20  | h.between.user.messages.and.LLM. | 
| 11c60 |  72 65 73 70 6f 6e 73 65 73 3f 20 20 20 20 20 20    20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d  | responses?...........|.|.=gptel- | 
| 11c80 |  74 72 61 63 6b 2d 6d 65 64 69 61 3d 20 20 20 20    20 20 20 20 20 20 20 7c 20 53 65 6e 64 20 74 65  | track-media=...........|.Send.te | 
| 11ca0 |  78 74 2c 20 69 6d 61 67 65 73 20 6f 72 20 6f 74    68 65 72 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c  | xt,.images.or.other.media.from.l | 
| 11cc0 |  69 6e 6b 73 3f 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74  | inks?...................|.|.=gpt | 
| 11ce0 |  65 6c 2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d    63 61 6c 6c 73 3d 20 20 20 20 7c 20 43 6f 6e 66  | el-confirm-tool-calls=....|.Conf | 
| 11d00 |  69 72 6d 20 61 6c 6c 20 74 6f 6f 6c 20 63 61 6c    6c 73 3f 20 20 20 20 20 20 20 20 20 20 20 20 20  | irm.all.tool.calls?............. | 
| 11d20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d  | ...........................|.|.= | 
| 11d40 |  67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 6f    6f 6c 2d 72 65 73 75 6c 74 73 3d 20 20 7c 20 49  | gptel-include-tool-results=..|.I | 
| 11d60 |  6e 63 6c 75 64 65 20 74 6f 6f 6c 20 72 65 73 75    6c 74 73 20 69 6e 20 74 68 65 20 4c 4c 4d 20 72  | nclude.tool.results.in.the.LLM.r | 
| 11d80 |  65 73 70 6f 6e 73 65 3f 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a  | esponse?......................|. | 
| 11da0 |  7c 20 3d 67 70 74 65 6c 2d 75 73 65 2d 68 65 61    64 65 72 2d 6c 69 6e 65 3d 20 20 20 20 20 20 20  | |.=gptel-use-header-line=....... | 
| 11dc0 |  7c 20 44 69 73 70 6c 61 79 20 73 74 61 74 75 73    20 6d 65 73 73 61 67 65 73 20 69 6e 20 68 65 61  | |.Display.status.messages.in.hea | 
| 11de0 |  64 65 72 2d 6c 69 6e 65 20 28 64 65 66 61 75 6c    74 29 20 6f 72 20 6d 69 6e 69 62 75 66 66 65 72  | der-line.(default).or.minibuffer | 
| 11e00 |  20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 64 69 73 70    6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f  | .|.|.=gptel-display-buffer-actio | 
| 11e20 |  6e 3d 20 7c 20 50 6c 61 63 65 6d 65 6e 74 20 6f    66 20 74 68 65 20 67 70 74 65 6c 20 63 68 61 74  | n=.|.Placement.of.the.gptel.chat | 
| 11e40 |  20 62 75 66 66 65 72 2e 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .buffer......................... | 
| 11e60 |  20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ....|.|------------------------- | 
| 11e80 |  2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ------+------------------------- | 
| 11ea0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 11ec0 |  2d 2d 2d 2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------|..|--------------------- | 
| 11ee0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ----------+--------------------- | 
| 11f00 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 11f20 |  2d 2d 7c 0a 7c 20 2a 4f 72 67 20 6d 6f 64 65 20    55 49 20 6f 70 74 69 6f 6e 73 2a 20 20 20 20 20  | --|.|.*Org.mode.UI.options*..... | 
| 11f40 |  20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....|........................... | 
| 11f60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d  | ............................|.|- | 
| 11f80 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d  | ------------------------------+- | 
| 11fa0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 11fc0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c  | ----------------------|.|.=gptel | 
| 11fe0 |  2d 6f 72 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63    6f 6e 74 65 78 74 3d 20 7c 20 4d 61 6b 65 20 65  | -org-branching-context=.|.Make.e | 
| 12000 |  61 63 68 20 6f 75 74 6c 69 6e 65 20 70 61 74 68    20 61 20 73 65 70 61 72 61 74 65 20 63 6f 6e 76  | ach.outline.path.a.separate.conv | 
| 12020 |  65 72 73 61 74 69 6f 6e 20 62 72 61 6e 63 68 20    7c 0a 7c 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 69  | ersation.branch.|.|.=gptel-org-i | 
| 12040 |  67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 3d 20    20 20 7c 20 49 67 6e 6f 72 65 20 70 61 72 74 73  | gnore-elements=...|.Ignore.parts | 
| 12060 |  20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20 77    68 65 6e 20 73 65 6e 64 69 6e 67 20 61 20 71 75  | .of.the.buffer.when.sending.a.qu | 
| 12080 |  65 72 79 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ery.......|.|------------------- | 
| 120a0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ------------+------------------- | 
| 120c0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 120e0 |  2d 2d 2d 2d 7c 0a 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ----|..|------------------------ | 
| 12100 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ------------+------------------- | 
| 12120 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 12140 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 2a 48    6f 6f 6b 73 20 66 6f 72 20 63 75 73 74 6f 6d 69  | ----------|.|.*Hooks.for.customi | 
| 12160 |  7a 61 74 69 6f 6e 2a 20 20 20 20 20 20 20 20 20    20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | zation*..........|.............. | 
| 12180 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 121a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c    0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ...............|.|-------------- | 
| 121c0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d  | ----------------------+--------- | 
| 121e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 12200 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 7c 0a 7c 20 3d 67 70 74 65 6c 2d 73  | --------------------|.|.=gptel-s | 
| 12220 |  61 76 65 2d 73 74 61 74 65 2d 68 6f 6f 6b 3d 20    20 20 20 20 20 20 20 20 20 20 20 7c 20 52 75 6e  | ave-state-hook=............|.Run | 
| 12240 |  73 20 62 65 66 6f 72 65 20 73 61 76 69 6e 67 20    74 68 65 20 63 68 61 74 20 73 74 61 74 65 20 74  | s.before.saving.the.chat.state.t | 
| 12260 |  6f 20 61 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b    20 20 20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70  | o.a.file.on.disk.........|.|.=gp | 
| 12280 |  74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73    66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 3d 20  | tel-prompt-transform-functions=. | 
| 122a0 |  7c 20 52 75 6e 73 20 69 6e 20 61 20 74 65 6d 70    20 62 75 66 66 65 72 20 74 6f 20 74 72 61 6e 73  | |.Runs.in.a.temp.buffer.to.trans | 
| 122c0 |  66 6f 72 6d 20 74 65 78 74 20 62 65 66 6f 72 65    20 73 65 6e 64 69 6e 67 20 20 20 20 20 20 7c 0a  | form.text.before.sending......|. | 
| 122e0 |  7c 20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65    71 75 65 73 74 2d 68 6f 6f 6b 3d 20 20 20 20 20  | |.=gptel-post-request-hook=..... | 
| 12300 |  20 20 20 20 20 7c 20 52 75 6e 73 20 69 6d 6d 65    64 69 61 74 65 6c 79 20 61 66 74 65 72 20 64 69  | .....|.Runs.immediately.after.di | 
| 12320 |  73 70 61 74 63 68 69 6e 67 20 61 20 3d 67 70 74    65 6c 2d 72 65 71 75 65 73 74 3d 2e 20 20 20 20  | spatching.a.=gptel-request=..... | 
| 12340 |  20 20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 70 72    65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 3d  | ...|.|.=gptel-pre-response-hook= | 
| 12360 |  20 20 20 20 20 20 20 20 20 20 7c 20 52 75 6e 73    20 62 65 66 6f 72 65 20 69 6e 73 65 72 74 69 6e  | ..........|.Runs.before.insertin | 
| 12380 |  67 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e    73 65 20 69 6e 74 6f 20 74 68 65 20 62 75 66 66  | g.the.LLM.response.into.the.buff | 
| 123a0 |  65 72 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74    65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65  | er......|.|.=gptel-post-response | 
| 123c0 |  2d 66 75 6e 63 74 69 6f 6e 73 3d 20 20 20 20 7c    20 52 75 6e 73 20 61 66 74 65 72 20 69 6e 73 65  | -functions=....|.Runs.after.inse | 
| 123e0 |  72 74 69 6e 67 20 74 68 65 20 66 75 6c 6c 20 4c    4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 6e 74 6f  | rting.the.full.LLM.response.into | 
| 12400 |  20 74 68 65 20 62 75 66 66 65 72 20 20 7c 0a 7c    20 3d 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 72  | .the.buffer..|.|.=gptel-post-str | 
| 12420 |  65 61 6d 2d 68 6f 6f 6b 3d 20 20 20 20 20 20 20    20 20 20 20 7c 20 52 75 6e 73 20 61 66 74 65 72  | eam-hook=...........|.Runs.after | 
| 12440 |  20 65 61 63 68 20 73 74 72 65 61 6d 69 6e 67 20    69 6e 73 65 72 74 69 6f 6e 20 20 20 20 20 20 20  | .each.streaming.insertion....... | 
| 12460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 7c 0a 7c 20 3d 67 70 74 65 6c 2d 63 6f 6e  | ..................|.|.=gptel-con | 
| 12480 |  74 65 78 74 2d 77 72 61 70 2d 66 75 6e 63 74 69    6f 6e 3d 20 20 20 20 20 20 7c 20 54 6f 20 69 6e  | text-wrap-function=......|.To.in | 
| 124a0 |  63 6c 75 64 65 20 61 64 64 69 74 69 6f 6e 61 6c    20 63 6f 6e 74 65 78 74 20 66 6f 72 6d 61 74 74  | clude.additional.context.formatt | 
| 124c0 |  65 64 20 79 6f 75 72 20 77 61 79 20 20 20 20 20    20 20 20 20 20 20 20 7c 0a 7c 20 3d 67 70 74 65  | ed.your.way............|.|.=gpte | 
| 124e0 |  6c 2d 72 65 77 72 69 74 65 2d 64 65 66 61 75 6c    74 2d 61 63 74 69 6f 6e 3d 20 20 20 20 20 7c 20  | l-rewrite-default-action=.....|. | 
| 12500 |  41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 69    66 66 2c 20 65 64 69 66 66 2c 20 6d 65 72 67 65  | Automatically.diff,.ediff,.merge | 
| 12520 |  20 6f 72 20 72 65 70 6c 61 63 65 20 72 65 66 61    63 74 6f 72 65 64 20 74 65 78 74 20 7c 0a 7c 20  | .or.replace.refactored.text.|.|. | 
| 12540 |  3d 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 77 72    69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 3d 20 20  | =gptel-post-rewrite-functions=.. | 
| 12560 |  20 20 20 7c 20 52 75 6e 73 20 61 66 74 65 72 20    61 20 3d 67 70 74 65 6c 2d 72 65 77 72 69 74 65  | ...|.Runs.after.a.=gptel-rewrite | 
| 12580 |  3d 20 72 65 71 75 65 73 74 20 73 75 63 63 65 65    64 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | =.request.succeeds.............. | 
| 125a0 |  20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | .|.|---------------------------- | 
| 125c0 |  2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | --------+----------------------- | 
| 125e0 |  2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  | -------------------------------- | 
| 12600 |  2d 2d 2d 2d 2d 2d 7c 0a 0a 23 2b 68 74 6d 6c 3a    20 3c 2f 64 65 74 61 69 6c 73 3e 0a 0a 2a 2a 2a  | ------|..#+html:.</details>..*** | 
| 12620 |  20 4f 70 74 69 6f 6e 20 70 72 65 73 65 74 73 0a    0a 49 66 20 79 6f 75 20 75 73 65 20 73 65 76 65  | .Option.presets..If.you.use.seve | 
| 12640 |  72 61 6c 20 4c 4c 4d 73 20 66 6f 72 20 64 69 66    66 65 72 65 6e 74 20 74 61 73 6b 73 20 77 69 74  | ral.LLMs.for.different.tasks.wit | 
| 12660 |  68 20 61 63 63 6f 6d 70 61 6e 79 69 6e 67 20 73    79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 28 69  | h.accompanying.system.prompts.(i | 
| 12680 |  6e 73 74 72 75 63 74 69 6f 6e 73 29 20 61 6e 64    20 74 6f 6f 6c 20 63 6f 6e 66 69 67 75 72 61 74  | nstructions).and.tool.configurat | 
| 126a0 |  69 6f 6e 73 2c 20 6d 61 6e 75 61 6c 6c 79 20 61    64 6a 75 73 74 69 6e 67 20 3d 67 70 74 65 6c 3d  | ions,.manually.adjusting.=gptel= | 
| 126c0 |  20 73 65 74 74 69 6e 67 73 20 65 61 63 68 20 74    69 6d 65 20 63 61 6e 20 62 65 63 6f 6d 65 20 74  | .settings.each.time.can.become.t | 
| 126e0 |  65 64 69 6f 75 73 2e 20 20 50 72 65 73 65 74 73    20 61 72 65 20 61 20 62 75 6e 64 6c 65 20 6f 66  | edious...Presets.are.a.bundle.of | 
| 12700 |  20 67 70 74 65 6c 20 73 65 74 74 69 6e 67 73 20    2d 2d 20 73 75 63 68 20 61 73 20 74 68 65 20 6d  | .gptel.settings.--.such.as.the.m | 
| 12720 |  6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c 20 73    79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c 20 61  | odel,.backend,.system.message,.a | 
| 12740 |  6e 64 20 65 6e 61 62 6c 65 64 20 74 6f 6f 6c 73    20 2d 2d 20 74 68 61 74 20 79 6f 75 20 63 61 6e  | nd.enabled.tools.--.that.you.can | 
| 12760 |  20 73 77 69 74 63 68 20 74 6f 20 61 74 20 6f 6e    63 65 2e 0a 0a 4f 6e 63 65 20 64 65 66 69 6e 65  | .switch.to.at.once...Once.define | 
| 12780 |  64 2c 20 70 72 65 73 65 74 73 20 63 61 6e 20 62    65 20 61 70 70 6c 69 65 64 20 66 72 6f 6d 20 67  | d,.presets.can.be.applied.from.g | 
| 127a0 |  70 74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74    20 6d 65 6e 75 3a 0a 0a 23 2b 68 74 6d 6c 3a 20  | ptel's.transient.menu:..#+html:. | 
| 127c0 |  3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a    2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 73 65  | <img.src="https://github.com/use | 
| 127e0 |  72 2d 61 74 74 61 63 68 6d 65 6e 74 73 2f 61 73    73 65 74 73 2f 65 30 63 66 36 61 33 32 2d 64 39  | r-attachments/assets/e0cf6a32-d9 | 
| 12800 |  39 39 2d 34 31 33 38 2d 38 33 36 39 2d 32 33 35    31 32 66 35 65 39 33 31 31 22 20 61 6c 69 67 6e  | 99-4138-8369-23512f5e9311".align | 
| 12820 |  3d 22 63 65 6e 74 65 72 22 20 2f 3e 0a 23 2b 68    74 6d 6c 3a 20 3c 62 72 3e 0a 0a 54 6f 20 64 65  | ="center"./>.#+html:.<br>..To.de | 
| 12840 |  66 69 6e 65 20 61 20 70 72 65 73 65 74 2c 20 75    73 65 20 74 68 65 20 3d 67 70 74 65 6c 2d 6d 61  | fine.a.preset,.use.the.=gptel-ma | 
| 12860 |  6b 65 2d 70 72 65 73 65 74 3d 20 66 75 6e 63 74    69 6f 6e 2c 20 77 68 69 63 68 20 74 61 6b 65 73  | ke-preset=.function,.which.takes | 
| 12880 |  20 61 20 6e 61 6d 65 20 61 6e 64 20 6b 65 79 77    6f 72 64 2d 76 61 6c 75 65 20 70 61 69 72 73 20  | .a.name.and.keyword-value.pairs. | 
| 128a0 |  6f 66 20 73 65 74 74 69 6e 67 73 2e 0a 0a 50 72    65 73 65 74 73 20 63 61 6e 20 62 65 20 75 73 65  | of.settings...Presets.can.be.use | 
| 128c0 |  64 20 74 6f 20 73 65 74 20 69 6e 64 69 76 69 64    75 61 6c 20 6f 70 74 69 6f 6e 73 2e 20 20 48 65  | d.to.set.individual.options...He | 
| 128e0 |  72 65 20 69 73 20 61 6e 20 65 78 61 6d 70 6c 65    20 6f 66 20 61 20 70 72 65 73 65 74 20 74 6f 20  | re.is.an.example.of.a.preset.to. | 
| 12900 |  73 65 74 20 74 68 65 20 73 79 73 74 65 6d 20 6d    65 73 73 61 67 65 20 28 61 6e 64 20 64 6f 20 6e  | set.the.system.message.(and.do.n | 
| 12920 |  6f 74 68 69 6e 67 20 65 6c 73 65 29 3a 0a 23 2b    62 65 67 69 6e 5f 73 72 63 20 65 6d 61 63 73 2d  | othing.else):.#+begin_src.emacs- | 
| 12940 |  6c 69 73 70 0a 28 67 70 74 65 6c 2d 6d 61 6b 65    2d 70 72 65 73 65 74 20 27 65 78 70 6c 61 69 6e  | lisp.(gptel-make-preset.'explain | 
| 12960 |  0a 20 20 3a 73 79 73 74 65 6d 20 22 45 78 70 6c    61 69 6e 20 77 68 61 74 20 74 68 69 73 20 63 6f  | ...:system."Explain.what.this.co | 
| 12980 |  64 65 20 64 6f 65 73 20 74 6f 20 61 20 6e 6f 76    69 63 65 20 70 72 6f 67 72 61 6d 6d 65 72 2e 22  | de.does.to.a.novice.programmer." | 
| 129a0 |  29 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 4d 6f 72    65 20 67 65 6e 65 72 61 6c 6c 79 2c 20 79 6f 75  | ).#+end_src..More.generally,.you | 
| 129c0 |  20 63 61 6e 20 73 70 65 63 69 66 79 20 61 20 62    75 6e 64 6c 65 20 6f 66 20 6f 70 74 69 6f 6e 73  | .can.specify.a.bundle.of.options | 
| 129e0 |  3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20 65 6d    61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65 6c 2d  | :.#+begin_src.emacs-lisp.(gptel- | 
| 12a00 |  6d 61 6b 65 2d 70 72 65 73 65 74 20 27 67 70 74    34 63 6f 64 69 6e 67 20 20 20 20 20 20 20 20 20  | make-preset.'gpt4coding......... | 
| 12a20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 70    72 65 73 65 74 20 6e 61 6d 65 2c 20 61 20 73 79  | ..............;preset.name,.a.sy | 
| 12a40 |  6d 62 6f 6c 0a 20 20 3a 64 65 73 63 72 69 70 74    69 6f 6e 20 22 41 20 70 72 65 73 65 74 20 6f 70  | mbol...:description."A.preset.op | 
| 12a60 |  74 69 6d 69 7a 65 64 20 66 6f 72 20 63 6f 64 69    6e 67 20 74 61 73 6b 73 22 20 3b 66 6f 72 20 79  | timized.for.coding.tasks".;for.y | 
| 12a80 |  6f 75 72 20 72 65 66 65 72 65 6e 63 65 0a 20 20    3a 62 61 63 6b 65 6e 64 20 22 43 6c 61 75 64 65  | our.reference...:backend."Claude | 
| 12aa0 |  22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 67 70 74 65 6c 20 62 61 63  | ".....................;gptel.bac | 
| 12ac0 |  6b 65 6e 64 20 6f 72 20 62 61 63 6b 65 6e 64 20    6e 61 6d 65 0a 20 20 3a 6d 6f 64 65 6c 20 27 63  | kend.or.backend.name...:model.'c | 
| 12ae0 |  6c 61 75 64 65 2d 33 2d 37 2d 73 6f 6e 6e 65 74    2d 32 30 32 35 30 32 31 39 2e 31 0a 20 20 3a 73  | laude-3-7-sonnet-20250219.1...:s | 
| 12b00 |  79 73 74 65 6d 20 22 59 6f 75 20 61 72 65 20 61    6e 20 65 78 70 65 72 74 20 63 6f 64 69 6e 67 20  | ystem."You.are.an.expert.coding. | 
| 12b20 |  61 73 73 69 73 74 61 6e 74 2e 20 59 6f 75 72 20    72 6f 6c 65 20 69 73 20 74 6f 20 70 72 6f 76 69  | assistant..Your.role.is.to.provi | 
| 12b40 |  64 65 20 68 69 67 68 2d 71 75 61 6c 69 74 79 20    63 6f 64 65 20 73 6f 6c 75 74 69 6f 6e 73 2c 20  | de.high-quality.code.solutions,. | 
| 12b60 |  72 65 66 61 63 74 6f 72 69 6e 67 73 2c 20 61 6e    64 20 65 78 70 6c 61 6e 61 74 69 6f 6e 73 2e 22  | refactorings,.and.explanations." | 
| 12b80 |  0a 20 20 3a 74 6f 6f 6c 73 20 27 28 22 72 65 61    64 5f 62 75 66 66 65 72 22 20 22 6d 6f 64 69 66  | ...:tools.'("read_buffer"."modif | 
| 12ba0 |  79 5f 62 75 66 66 65 72 22 29 29 20 3b 67 70 74    65 6c 20 74 6f 6f 6c 73 20 6f 72 20 74 6f 6f 6c  | y_buffer")).;gptel.tools.or.tool | 
| 12bc0 |  20 6e 61 6d 65 73 0a 23 2b 65 6e 64 5f 73 72 63    0a 0a 42 65 73 69 64 65 73 20 61 20 63 6f 75 70  | .names.#+end_src..Besides.a.coup | 
| 12be0 |  6c 65 20 6f 66 20 73 70 65 63 69 61 6c 20 6b 65    79 73 20 28 3d 3a 64 65 73 63 72 69 70 74 69 6f  | le.of.special.keys.(=:descriptio | 
| 12c00 |  6e 3d 2c 20 3d 3a 70 61 72 65 6e 74 73 3d 20 74    6f 20 69 6e 68 65 72 69 74 20 6f 74 68 65 72 20  | n=,.=:parents=.to.inherit.other. | 
| 12c20 |  70 72 65 73 65 74 73 29 2c 20 74 68 65 72 65 20    69 73 20 6e 6f 20 70 72 65 64 65 66 69 6e 65 64  | presets),.there.is.no.predefined | 
| 12c40 |  20 6c 69 73 74 20 6f 66 20 6b 65 79 73 2e 20 20    49 6e 73 74 65 61 64 2c 20 74 68 65 20 6b 65 79  | .list.of.keys...Instead,.the.key | 
| 12c60 |  20 3d 3a 66 6f 6f 3d 20 63 6f 72 72 65 73 70 6f    6e 64 73 20 74 6f 20 73 65 74 74 69 6e 67 20 3d  | .=:foo=.corresponds.to.setting.= | 
| 12c80 |  67 70 74 65 6c 2d 66 6f 6f 3d 20 28 70 72 65 66    65 72 72 65 64 29 20 6f 72 20 3d 67 70 74 65 6c  | gptel-foo=.(preferred).or.=gptel | 
| 12ca0 |  2d 2d 66 6f 6f 3d 2e 20 20 53 6f 20 74 68 65 20    70 72 65 73 65 74 20 63 61 6e 20 69 6e 63 6c 75  | --foo=...So.the.preset.can.inclu | 
| 12cc0 |  64 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20    61 6e 79 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e  | de.the.value.of.any.gptel.option | 
| 12ce0 |  2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20    74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72  | ...For.example,.the.following.pr | 
| 12d00 |  65 73 65 74 20 73 65 74 73 20 3d 67 70 74 65 6c    2d 74 65 6d 70 65 72 61 74 75 72 65 3d 20 61 6e  | eset.sets.=gptel-temperature=.an | 
| 12d20 |  64 20 3d 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e    74 65 78 74 3d 3a 0a 0a 23 2b 62 65 67 69 6e 5f  | d.=gptel-use-context=:..#+begin_ | 
| 12d40 |  73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28    67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 65 73 65  | src.emacs-lisp.(gptel-make-prese | 
| 12d60 |  74 20 27 70 72 6f 6f 66 72 65 61 64 65 72 0a 20    20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 50  | t.'proofreader...:description."P | 
| 12d80 |  72 65 73 65 74 20 66 6f 72 20 70 72 6f 6f 66 72    65 61 64 69 6e 67 20 74 61 73 6b 73 22 0a 20 20  | reset.for.proofreading.tasks"... | 
| 12da0 |  3a 62 61 63 6b 65 6e 64 20 22 43 68 61 74 47 50    54 22 0a 20 20 3a 6d 6f 64 65 6c 20 27 67 70 74  | :backend."ChatGPT"...:model.'gpt | 
| 12dc0 |  2d 34 2e 31 2d 6d 69 6e 69 0a 20 20 3a 74 6f 6f    6c 73 20 27 28 22 72 65 61 64 5f 62 75 66 66 65  | -4.1-mini...:tools.'("read_buffe | 
| 12de0 |  72 22 20 22 73 70 65 6c 6c 5f 63 68 65 63 6b 22    20 22 67 72 61 6d 6d 61 72 5f 63 68 65 63 6b 22  | r"."spell_check"."grammar_check" | 
| 12e00 |  29 0a 20 20 3a 74 65 6d 70 65 72 61 74 75 72 65    20 30 2e 37 20 20 20 20 20 20 20 20 20 20 20 20  | )...:temperature.0.7............ | 
| 12e20 |  20 20 20 20 20 20 20 20 20 20 3b 73 65 74 73 20    67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72  | ..........;sets.gptel-temperatur | 
| 12e40 |  65 0a 20 20 3a 75 73 65 2d 63 6f 6e 74 65 78 74    20 27 73 79 73 74 65 6d 29 20 20 20 20 20 20 20  | e...:use-context.'system)....... | 
| 12e60 |  20 20 20 20 20 20 20 20 20 20 3b 73 65 74 73 20    67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78  | ..........;sets.gptel-use-contex | 
| 12e80 |  74 0a 23 2b 65 6e 64 5f 73 72 63 0a 0a 53 77 69    74 63 68 69 6e 67 20 74 6f 20 61 20 70 72 65 73  | t.#+end_src..Switching.to.a.pres | 
| 12ea0 |  65 74 20 61 70 70 6c 69 65 73 20 74 68 65 20 73    70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67  | et.applies.the.specified.setting | 
| 12ec0 |  73 20 77 69 74 68 6f 75 74 20 61 66 66 65 63 74    69 6e 67 20 6f 74 68 65 72 20 73 65 74 74 69 6e  | s.without.affecting.other.settin | 
| 12ee0 |  67 73 2e 20 20 44 65 70 65 6e 64 69 6e 67 20 6f    6e 20 74 68 65 20 73 63 6f 70 65 20 6f 70 74 69  | gs...Depending.on.the.scope.opti | 
| 12f00 |  6f 6e 20 28 7e 3d 7e 20 69 6e 20 67 70 74 65 6c    27 73 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e  | on.(~=~.in.gptel's.transient.men | 
| 12f20 |  75 29 2c 20 70 72 65 73 65 74 73 20 63 61 6e 20    62 65 20 61 70 70 6c 69 65 64 20 67 6c 6f 62 61  | u),.presets.can.be.applied.globa | 
| 12f40 |  6c 6c 79 2c 20 62 75 66 66 65 72 2d 6c 6f 63 61    6c 6c 79 20 6f 72 20 66 6f 72 20 74 68 65 20 6e  | lly,.buffer-locally.or.for.the.n | 
| 12f60 |  65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79    2e 0a 0a 2a 2a 2a 2a 20 41 70 70 6c 79 69 6e 67  | ext.request.only...****.Applying | 
| 12f80 |  20 70 72 65 73 65 74 73 20 74 6f 20 72 65 71 75    65 73 74 73 20 61 75 74 6f 6d 61 74 69 63 61 6c  | .presets.to.requests.automatical | 
| 12fa0 |  6c 79 0a 0a 59 6f 75 20 63 61 6e 20 61 70 70 6c    79 20 61 20 70 72 65 73 65 74 20 74 6f 20 61 20  | ly..You.can.apply.a.preset.to.a. | 
| 12fc0 |  2f 73 69 6e 67 6c 65 2f 20 71 75 65 72 79 20 62    79 20 69 6e 63 6c 75 64 69 6e 67 20 3d 40 70 72  | /single/.query.by.including.=@pr | 
| 12fe0 |  65 73 65 74 2d 6e 61 6d 65 3d 20 69 6e 20 74 68    65 20 70 72 6f 6d 70 74 2c 20 77 68 65 72 65 20  | eset-name=.in.the.prompt,.where. | 
| 13000 |  3d 70 72 65 73 65 74 2d 6e 61 6d 65 3d 20 69 73    20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  | =preset-name=.is.the.name.of.the | 
| 13020 |  20 70 72 65 73 65 74 2e 20 20 28 54 68 65 20 3d    6f 6e 65 73 68 6f 74 3d 20 73 63 6f 70 65 20 6f  | .preset...(The.=oneshot=.scope.o | 
| 13040 |  70 74 69 6f 6e 20 69 6e 20 67 70 74 65 6c 27 73    20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73  | ption.in.gptel's.transient.menus | 
| 13060 |  20 69 73 20 61 6e 6f 74 68 65 72 20 77 61 79 20    74 6f 20 64 6f 20 74 68 69 73 2c 20 5b 5b 69 64  | .is.another.way.to.do.this,.[[id | 
| 13080 |  3a 37 34 38 63 62 63 30 30 2d 30 63 39 32 2d 34    37 30 35 2d 38 38 33 39 2d 36 31 39 62 32 63 38  | :748cbc00-0c92-4705-8839-619b2c8 | 
| 130a0 |  30 65 35 36 36 5d 5b 73 65 65 20 74 68 65 20 46    41 51 2e 5d 5d 29 0a 0a 46 6f 72 20 65 78 61 6d  | 0e566][see.the.FAQ.]])..For.exam | 
| 130c0 |  70 6c 65 2c 20 69 66 20 79 6f 75 20 68 61 76 65    20 61 20 70 72 65 73 65 74 20 6e 61 6d 65 64 20  | ple,.if.you.have.a.preset.named. | 
| 130e0 |  3d 77 65 62 73 65 61 72 63 68 3d 20 64 65 66 69    6e 65 64 20 77 68 69 63 68 20 69 6e 63 6c 75 64  | =websearch=.defined.which.includ | 
| 13100 |  65 73 20 74 6f 6f 6c 73 20 66 6f 72 20 77 65 62    20 61 63 63 65 73 73 20 61 6e 64 20 73 65 61 72  | es.tools.for.web.access.and.sear | 
| 13120 |  63 68 3a 0a 23 2b 62 65 67 69 6e 5f 73 72 63 20    65 6d 61 63 73 2d 6c 69 73 70 0a 28 67 70 74 65  | ch:.#+begin_src.emacs-lisp.(gpte | 
| 13140 |  6c 2d 6d 61 6b 65 2d 70 72 65 73 65 74 20 27 77    65 62 73 65 61 72 63 68 0a 20 20 3a 64 65 73 63  | l-make-preset.'websearch...:desc | 
| 13160 |  72 69 70 74 69 6f 6e 20 20 22 48 61 69 6b 75 20    77 69 74 68 20 62 61 73 69 63 20 77 65 62 20 73  | ription.."Haiku.with.basic.web.s | 
| 13180 |  65 61 72 63 68 20 63 61 70 61 62 69 6c 69 74 79    2e 22 0a 20 20 3a 62 61 63 6b 65 6e 64 20 20 20  | earch.capability."...:backend... | 
| 131a0 |  20 20 20 22 43 6c 61 75 64 65 22 0a 20 20 3a 6d    6f 64 65 6c 20 20 20 20 20 20 20 20 27 63 6c 61  | ..."Claude"...:model........'cla | 
| 131c0 |  75 64 65 2d 33 2d 35 2d 68 61 69 6b 75 2d 32 30    32 34 31 30 32 32 0a 20 20 3a 74 6f 6f 6c 73 20  | ude-3-5-haiku-20241022...:tools. | 
| 131e0 |  20 20 20 20 20 20 20 27 28 22 73 65 61 72 63 68    5f 77 65 62 22 20 22 72 65 61 64 5f 75 72 6c 22  | .......'("search_web"."read_url" | 
| 13200 |  20 22 67 65 74 5f 79 6f 75 74 75 62 65 5f 6d 65    74 61 22 29 29 0a 23 2b 65 6e 64 5f 73 72 63 0a  | ."get_youtube_meta")).#+end_src. | 
| 13220 |  0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 71    75 65 72 79 20 69 73 20 73 65 6e 74 20 77 69 74  | .The.following.query.is.sent.wit | 
| 13240 |  68 20 74 68 69 73 20 70 72 65 73 65 74 20 61 70    70 6c 69 65 64 3a 0a 0a 23 2b 62 65 67 69 6e 5f  | h.this.preset.applied:..#+begin_ | 
| 13260 |  71 75 6f 74 65 0a 40 77 65 62 73 65 61 72 63 68    20 41 72 65 20 74 68 65 72 65 20 61 6e 79 20 31  | quote.@websearch.Are.there.any.1 | 
| 13280 |  33 22 20 65 2d 69 6e 6b 20 6d 6f 6e 69 74 6f 72    73 20 6f 6e 20 74 68 65 20 6d 61 72 6b 65 74 3f  | 3".e-ink.monitors.on.the.market? | 
| 132a0 |  20 20 43 72 65 61 74 65 20 61 0a 74 61 62 6c 65    20 63 6f 6d 70 61 72 69 6e 67 20 74 68 65 6d 2c  | ..Create.a.table.comparing.them, | 
| 132c0 |  20 73 6f 75 72 63 69 6e 67 20 73 70 65 63 73 20    61 6e 64 20 72 65 76 69 65 77 73 20 66 72 6f 6d  | .sourcing.specs.and.reviews.from | 
| 132e0 |  20 6f 6e 6c 69 6e 65 20 73 6f 75 72 63 65 73 2e    0a 41 6c 73 6f 20 64 6f 20 74 68 65 20 73 61 6d  | .online.sources..Also.do.the.sam | 
| 13300 |  65 20 66 6f 72 20 22 74 72 61 6e 73 72 65 66 6c    65 63 74 69 76 65 2d 4c 43 44 22 20 64 69 73 70  | e.for."transreflective-LCD".disp | 
| 13320 |  6c 61 79 73 20 2d 2d 20 49 27 6d 20 6e 6f 74 20    73 75 72 65 0a 77 68 61 74 20 65 78 61 63 74 6c  | lays.--.I'm.not.sure.what.exactl | 
| 13340 |  79 20 74 68 65 79 27 72 65 20 63 61 6c 6c 65 64    20 62 75 74 20 74 68 65 79 27 72 65 20 63 6f 6d  | y.they're.called.but.they're.com | 
| 13360 |  70 61 72 61 62 6c 65 20 74 6f 20 65 2d 69 6e 6b    2e 0a 23 2b 65 6e 64 5f 71 75 6f 74 65 0a 0a 54  | parable.to.e-ink..#+end_quote..T | 
| 13380 |  68 69 73 20 3d 40 70 72 65 73 65 74 2d 6e 61 6d    65 3d 20 63 6f 6f 6b 69 65 20 6f 6e 6c 79 20 61  | his.=@preset-name=.cookie.only.a | 
| 133a0 |  70 70 6c 69 65 73 20 74 6f 20 74 68 65 20 66 69    6e 61 6c 20 75 73 65 72 20 74 75 72 6e 20 6f 66  | pplies.to.the.final.user.turn.of | 
| 133c0 |  20 74 68 65 20 63 6f 76 65 72 73 61 74 69 6f 6e    20 74 68 61 74 20 69 73 20 73 65 6e 74 2e 20 20  | .the.coversation.that.is.sent... | 
| 133e0 |  53 6f 20 74 68 65 20 70 72 65 73 65 6e 63 65 20    6f 66 20 74 68 65 20 63 6f 6f 6b 69 65 20 69 6e  | So.the.presence.of.the.cookie.in | 
| 13400 |  20 70 61 73 74 20 6d 65 73 73 61 67 65 73 2f 74    75 72 6e 73 20 69 73 20 6e 6f 74 20 73 69 67 6e  | .past.messages/turns.is.not.sign | 
| 13420 |  69 66 69 63 61 6e 74 2e 20 0a 0a 54 68 65 20 3d    40 70 72 65 73 65 74 2d 6e 61 6d 65 3d 20 63 6f  | ificant....The.=@preset-name=.co | 
| 13440 |  6f 6b 69 65 20 63 61 6e 20 62 65 20 61 6e 79 77    68 65 72 65 20 69 6e 20 74 68 65 20 70 72 6f 6d  | okie.can.be.anywhere.in.the.prom | 
| 13460 |  70 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65    3a 0a 23 2b 62 65 67 69 6e 5f 71 75 6f 74 65 0a  | pt...For.example:.#+begin_quote. | 
| 13480 |  3c 6c 6f 6e 67 20 70 69 65 63 65 20 6f 66 20 74    65 78 74 3e 0a 0a 57 68 61 74 20 64 6f 20 79 6f  | <long.piece.of.text>..What.do.yo | 
| 134a0 |  75 20 6d 61 6b 65 20 6f 66 20 74 68 65 20 61 62    6f 76 65 20 64 65 73 63 72 69 70 74 69 6f 6e 2c  | u.make.of.the.above.description, | 
| 134c0 |  20 40 70 72 6f 6f 66 72 65 61 64 65 72 3f 0a 23    2b 65 6e 64 5f 71 75 6f 74 65 0a 0a 49 6e 20 63  | .@proofreader?.#+end_quote..In.c | 
| 134e0 |  68 61 74 20 62 75 66 66 65 72 73 20 74 68 69 73    20 70 72 65 66 69 78 20 77 69 6c 6c 20 62 65 20  | hat.buffers.this.prefix.will.be. | 
| 13500 |  6f 66 66 65 72 65 64 20 61 73 20 61 20 63 6f 6d    70 6c 65 74 69 6f 6e 20 61 6e 64 20 66 6f 6e 74  | offered.as.a.completion.and.font | 
| 13520 |  69 66 69 65 64 2c 20 6d 61 6b 69 6e 67 20 69 74    20 65 61 73 79 20 74 6f 20 75 73 65 20 61 6e 64  | ified,.making.it.easy.to.use.and | 
| 13540 |  20 73 70 6f 74 2e 0a 0a 2a 2a 20 41 6c 74 65 72    6e 61 74 69 76 65 73 0a 0a 4f 74 68 65 72 20 45  | .spot...**.Alternatives..Other.E | 
| 13560 |  6d 61 63 73 20 63 6c 69 65 6e 74 73 20 66 6f 72    20 4c 4c 4d 73 20 69 6e 63 6c 75 64 65 0a 0a 2d  | macs.clients.for.LLMs.include..- | 
| 13580 |  20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75    62 2e 63 6f 6d 2f 61 68 79 61 74 74 2f 6c 6c 6d  | .[[https://github.com/ahyatt/llm | 
| 135a0 |  5d 5b 6c 6c 6d 5d 5d 3a 20 6c 6c 6d 20 70 72 6f    76 69 64 65 73 20 61 20 75 6e 69 66 6f 72 6d 20  | ][llm]]:.llm.provides.a.uniform. | 
| 135c0 |  41 50 49 20 61 63 72 6f 73 73 20 6c 61 6e 67 75    61 67 65 20 6d 6f 64 65 6c 20 70 72 6f 76 69 64  | API.across.language.model.provid | 
| 135e0 |  65 72 73 20 66 6f 72 20 62 75 69 6c 64 69 6e 67    20 4c 4c 4d 20 63 6c 69 65 6e 74 73 20 69 6e 20  | ers.for.building.LLM.clients.in. | 
| 13600 |  45 6d 61 63 73 2c 20 61 6e 64 20 69 73 20 69 6e    74 65 6e 64 65 64 20 61 73 20 61 20 6c 69 62 72  | Emacs,.and.is.intended.as.a.libr | 
| 13620 |  61 72 79 20 66 6f 72 20 75 73 65 20 62 79 20 70    61 63 6b 61 67 65 20 61 75 74 68 6f 72 73 2e 20  | ary.for.use.by.package.authors.. | 
| 13640 |  20 46 6f 72 20 73 69 6d 69 6c 61 72 20 73 63 72    69 70 74 69 6e 67 20 70 75 72 70 6f 73 65 73 2c  | .For.similar.scripting.purposes, | 
| 13660 |  20 67 70 74 65 6c 20 70 72 6f 76 69 64 65 73 20    74 68 65 20 63 6f 6d 6d 61 6e 64 20 3d 67 70 74  | .gptel.provides.the.command.=gpt | 
| 13680 |  65 6c 2d 72 65 71 75 65 73 74 3d 2c 20 77 68 69    63 68 20 73 65 65 2e 0a 2d 20 5b 5b 68 74 74 70  | el-request=,.which.see..-.[[http | 
| 136a0 |  73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73    2d 6b 6f 73 74 79 61 65 76 2f 65 6c 6c 61 6d 61  | s://github.com/s-kostyaev/ellama | 
| 136c0 |  5d 5b 45 6c 6c 61 6d 61 5d 5d 3a 20 41 20 66 75    6c 6c 2d 66 6c 65 64 67 65 64 20 4c 4c 4d 20 63  | ][Ellama]]:.A.full-fledged.LLM.c | 
| 136e0 |  6c 69 65 6e 74 20 62 75 69 6c 74 20 6f 6e 20 6c    6c 6d 2c 20 74 68 61 74 20 73 75 70 70 6f 72 74  | lient.built.on.llm,.that.support | 
| 13700 |  73 20 6d 61 6e 79 20 4c 4c 4d 20 70 72 6f 76 69    64 65 72 73 20 28 4f 6c 6c 61 6d 61 2c 20 4f 70  | s.many.LLM.providers.(Ollama,.Op | 
| 13720 |  65 6e 20 41 49 2c 20 56 65 72 74 65 78 2c 20 47    50 54 34 41 6c 6c 20 61 6e 64 20 6d 6f 72 65 29  | en.AI,.Vertex,.GPT4All.and.more) | 
| 13740 |  2e 20 20 49 74 73 20 75 73 61 67 65 20 64 69 66    66 65 72 73 20 66 72 6f 6d 20 67 70 74 65 6c 20  | ...Its.usage.differs.from.gptel. | 
| 13760 |  69 6e 20 74 68 61 74 20 69 74 20 70 72 6f 76 69    64 65 73 20 73 65 70 61 72 61 74 65 20 63 6f 6d  | in.that.it.provides.separate.com | 
| 13780 |  6d 61 6e 64 73 20 66 6f 72 20 64 6f 7a 65 6e 73    20 6f 66 20 63 6f 6d 6d 6f 6e 20 74 61 73 6b 73  | mands.for.dozens.of.common.tasks | 
| 137a0 |  2c 20 6c 69 6b 65 20 67 65 6e 65 72 61 6c 20 63    68 61 74 2c 20 73 75 6d 6d 61 72 69 7a 69 6e 67  | ,.like.general.chat,.summarizing | 
| 137c0 |  20 63 6f 64 65 2f 74 65 78 74 2c 20 72 65 66 61    63 74 6f 72 69 6e 67 20 63 6f 64 65 2c 20 69 6d  | .code/text,.refactoring.code,.im | 
| 137e0 |  70 72 6f 76 69 6e 67 20 67 72 61 6d 6d 61 72 2c    20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 61 6e 64  | proving.grammar,.translation.and | 
| 13800 |  20 73 6f 20 6f 6e 2e 0a 2d 20 5b 5b 68 74 74 70    73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 78  | .so.on..-.[[https://github.com/x | 
| 13820 |  65 6e 6f 64 69 75 6d 2f 63 68 61 74 67 70 74 2d    73 68 65 6c 6c 5d 5b 63 68 61 74 67 70 74 2d 73  | enodium/chatgpt-shell][chatgpt-s | 
| 13840 |  68 65 6c 6c 5d 5d 3a 20 63 6f 6d 69 6e 74 2d 73    68 65 6c 6c 20 62 61 73 65 64 20 69 6e 74 65 72  | hell]]:.comint-shell.based.inter | 
| 13860 |  61 63 74 69 6f 6e 20 77 69 74 68 20 43 68 61 74    47 50 54 2e 20 20 41 6c 73 6f 20 73 75 70 70 6f  | action.with.ChatGPT...Also.suppo | 
| 13880 |  72 74 73 20 44 41 4c 4c 2d 45 2c 20 65 78 65 63    75 74 61 62 6c 65 20 63 6f 64 65 20 62 6c 6f 63  | rts.DALL-E,.executable.code.bloc | 
| 138a0 |  6b 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e    73 65 73 2c 20 61 6e 64 20 6d 6f 72 65 2e 0a 2d  | ks.in.the.responses,.and.more..- | 
| 138c0 |  20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75    62 2e 63 6f 6d 2f 72 6b 73 6d 2f 6f 72 67 2d 61  | .[[https://github.com/rksm/org-a | 
| 138e0 |  69 5d 5b 6f 72 67 2d 61 69 5d 5d 3a 20 49 6e 74    65 72 61 63 74 69 6f 6e 20 74 68 72 6f 75 67 68  | i][org-ai]]:.Interaction.through | 
| 13900 |  20 73 70 65 63 69 61 6c 20 3d 23 2b 62 65 67 69    6e 5f 61 69 20 2e 2e 2e 20 23 2b 65 6e 64 5f 61  | .special.=#+begin_ai.....#+end_a | 
| 13920 |  69 3d 20 4f 72 67 2d 6d 6f 64 65 20 62 6c 6f 63    6b 73 2e 20 20 41 6c 73 6f 20 73 75 70 70 6f 72  | i=.Org-mode.blocks...Also.suppor | 
| 13940 |  74 73 20 44 41 4c 4c 2d 45 2c 20 71 75 65 72 79    69 6e 67 20 43 68 61 74 47 50 54 20 77 69 74 68  | ts.DALL-E,.querying.ChatGPT.with | 
| 13960 |  20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66    20 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 2c 20  | .the.contents.of.project.files,. | 
| 13980 |  61 6e 64 20 6d 6f 72 65 2e 0a 2d 20 5b 5b 68 74    74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d  | and.more..-.[[https://github.com | 
| 139a0 |  2f 6d 69 6c 61 6e 67 6c 61 63 69 65 72 2f 6d 69    6e 75 65 74 2d 61 69 2e 65 6c 5d 5b 4d 69 6e 75  | /milanglacier/minuet-ai.el][Minu | 
| 139c0 |  65 74 5d 5d 3a 20 43 6f 64 65 2d 63 6f 6d 70 6c    65 74 69 6f 6e 20 75 73 69 6e 67 20 4c 4c 4d 2e  | et]]:.Code-completion.using.LLM. | 
| 139e0 |  20 53 75 70 70 6f 72 74 73 20 66 69 6c 6c 2d 69    6e 2d 74 68 65 2d 6d 69 64 64 6c 65 20 28 46 49  | .Supports.fill-in-the-middle.(FI | 
| 13a00 |  4d 29 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 66 6f    72 20 63 6f 6d 70 61 74 69 62 6c 65 20 6d 6f 64  | M).completion.for.compatible.mod | 
| 13a20 |  65 6c 73 20 73 75 63 68 20 61 73 20 44 65 65 70    53 65 65 6b 20 61 6e 64 20 43 6f 64 65 73 74 72  | els.such.as.DeepSeek.and.Codestr | 
| 13a40 |  61 6c 2e 0a 0a 54 68 65 72 65 20 61 72 65 20 73    65 76 65 72 61 6c 20 6d 6f 72 65 3a 20 5b 5b 68  | al...There.are.several.more:.[[h | 
| 13a60 |  74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f    6d 2f 69 77 61 68 62 65 2f 63 68 61 74 2e 65 6c  | ttps://github.com/iwahbe/chat.el | 
| 13a80 |  5d 5b 63 68 61 74 2e 65 6c 5d 5d 2c 20 5b 5b 68    74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f  | ][chat.el]],.[[https://github.co | 
| 13aa0 |  6d 2f 73 74 75 68 6c 6d 75 65 6c 6c 65 72 2f 67    70 74 2e 65 6c 5d 5b 67 70 74 2e 65 6c 5d 5d 2c  | m/stuhlmueller/gpt.el][gpt.el]], | 
| 13ac0 |  20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75    62 2e 63 6f 6d 2f 41 6e 73 65 6c 6d 43 2f 6c 65  | .[[https://github.com/AnselmC/le | 
| 13ae0 |  2d 67 70 74 2e 65 6c 5d 5b 6c 65 2d 67 70 74 5d    5d 2c 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74  | -gpt.el][le-gpt]],.[[https://git | 
| 13b00 |  68 75 62 2e 63 6f 6d 2f 73 74 65 76 65 6d 6f 6c    69 74 6f 72 2f 72 6f 62 62 79 5d 5b 72 6f 62 62  | hub.com/stevemolitor/robby][robb | 
| 13b20 |  79 5d 5d 2e 0a 0a 2a 2a 2a 20 50 61 63 6b 61 67    65 73 20 75 73 69 6e 67 20 67 70 74 65 6c 0a 0a  | y]]...***.Packages.using.gptel.. | 
| 13b40 |  67 70 74 65 6c 20 69 73 20 61 20 67 65 6e 65 72    61 6c 2d 70 75 72 70 6f 73 65 20 70 61 63 6b 61  | gptel.is.a.general-purpose.packa | 
| 13b60 |  67 65 20 66 6f 72 20 63 68 61 74 20 61 6e 64 20    61 64 2d 68 6f 63 20 4c 4c 4d 20 69 6e 74 65 72  | ge.for.chat.and.ad-hoc.LLM.inter | 
| 13b80 |  61 63 74 69 6f 6e 2e 20 20 54 68 65 20 66 6f 6c    6c 6f 77 69 6e 67 20 70 61 63 6b 61 67 65 73 20  | action...The.following.packages. | 
| 13ba0 |  75 73 65 20 67 70 74 65 6c 20 74 6f 20 70 72 6f    76 69 64 65 20 61 64 64 69 74 69 6f 6e 61 6c 20  | use.gptel.to.provide.additional. | 
| 13bc0 |  6f 72 20 73 70 65 63 69 61 6c 69 7a 65 64 20 66    75 6e 63 74 69 6f 6e 61 6c 69 74 79 3a 0a 0a 2d  | or.specialized.functionality:..- | 
| 13be0 |  20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75    62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67  | .[[https://github.com/karthink/g | 
| 13c00 |  70 74 65 6c 2d 71 75 69 63 6b 5d 5b 67 70 74 65    6c 2d 71 75 69 63 6b 5d 5d 3a 20 51 75 69 63 6b  | ptel-quick][gptel-quick]]:.Quick | 
| 13c20 |  6c 79 20 6c 6f 6f 6b 20 75 70 20 74 68 65 20 72    65 67 69 6f 6e 20 6f 72 20 74 65 78 74 20 61 74  | ly.look.up.the.region.or.text.at | 
| 13c40 |  20 70 6f 69 6e 74 2e 0a 2d 20 5b 5b 68 74 74 70    73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64  | .point..-.[[https://github.com/d | 
| 13c60 |  61 65 64 73 69 64 6f 67 2f 65 76 65 64 65 6c 5d    5b 45 76 65 64 65 6c 5d 5d 3a 20 49 6e 73 74 72  | aedsidog/evedel][Evedel]]:.Instr | 
| 13c80 |  75 63 74 65 64 20 4c 4c 4d 20 50 72 6f 67 72 61    6d 6d 65 72 2f 41 73 73 69 73 74 61 6e 74 2e 0a  | ucted.LLM.Programmer/Assistant.. | 
| 13ca0 |  2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68    75 62 2e 63 6f 6d 2f 6c 61 6e 63 65 62 65 72 67  | -.[[https://github.com/lanceberg | 
| 13cc0 |  65 2f 65 6c 79 73 69 75 6d 5d 5b 45 6c 79 73 69    75 6d 5d 5d 3a 20 41 75 74 6f 6d 61 74 69 63 61  | e/elysium][Elysium]]:.Automatica | 
| 13ce0 |  6c 6c 79 20 61 70 70 6c 79 20 41 49 2d 67 65 6e    65 72 61 74 65 64 20 63 68 61 6e 67 65 73 20 61  | lly.apply.AI-generated.changes.a | 
| 13d00 |  73 20 79 6f 75 20 63 6f 64 65 2e 0a 2d 20 5b 5b    68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63  | s.you.code..-.[[https://github.c | 
| 13d20 |  6f 6d 2f 6b 61 6d 75 73 68 61 64 65 6e 65 73 2f    61 69 2d 62 6c 6f 67 2e 65 6c 5d 5b 61 69 2d 62  | om/kamushadenes/ai-blog.el][ai-b | 
| 13d40 |  6c 6f 67 2e 65 6c 5d 5d 3a 20 53 74 72 65 61 6d    6c 69 6e 65 20 67 65 6e 65 72 61 74 69 6f 6e 20  | log.el]]:.Streamline.generation. | 
| 13d60 |  6f 66 20 62 6c 6f 67 20 70 6f 73 74 73 20 69 6e    20 48 75 67 6f 2e 0a 2d 20 5b 5b 68 74 74 70 73  | of.blog.posts.in.Hugo..-.[[https | 
| 13d80 |  3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 6f    75 6f 2f 6d 61 67 69 74 2d 67 70 74 63 6f 6d 6d  | ://github.com/douo/magit-gptcomm | 
| 13da0 |  69 74 5d 5b 6d 61 67 69 74 2d 67 70 74 63 6f 6d    6d 69 74 5d 5d 3a 20 47 65 6e 65 72 61 74 65 20  | it][magit-gptcommit]]:.Generate. | 
| 13dc0 |  43 6f 6d 6d 69 74 20 4d 65 73 73 61 67 65 73 20    77 69 74 68 69 6e 20 6d 61 67 69 74 2d 73 74 61  | Commit.Messages.within.magit-sta | 
| 13de0 |  74 75 73 20 42 75 66 66 65 72 20 75 73 69 6e 67    20 67 70 74 65 6c 2e 0a 2d 20 5b 5b 68 74 74 70  | tus.Buffer.using.gptel..-.[[http | 
| 13e00 |  73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61    72 6d 69 6e 64 61 72 76 69 73 68 2f 63 6f 6e 73  | s://github.com/armindarvish/cons | 
| 13e20 |  75 6c 74 2d 6f 6d 6e 69 5d 5b 63 6f 6e 73 75 6c    74 2d 6f 6d 6e 69 5d 5d 3a 20 56 65 72 73 61 74  | ult-omni][consult-omni]]:.Versat | 
| 13e40 |  69 6c 65 20 6d 75 6c 74 69 2d 73 6f 75 72 63 65    20 73 65 61 72 63 68 20 70 61 63 6b 61 67 65 2e  | ile.multi-source.search.package. | 
| 13e60 |  20 20 49 74 20 69 6e 63 6c 75 64 65 73 20 67 70    74 65 6c 20 61 73 20 6f 6e 65 20 6f 66 20 69 74  | ..It.includes.gptel.as.one.of.it | 
| 13e80 |  73 20 6d 61 6e 79 20 73 6f 75 72 63 65 73 2e 0a    2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68  | s.many.sources..-.[[https://gith | 
| 13ea0 |  75 62 2e 63 6f 6d 2f 75 6c 74 72 6f 6e 6f 7a 6d    2f 61 69 2d 6f 72 67 2d 63 68 61 74 2e 65 6c 5d  | ub.com/ultronozm/ai-org-chat.el] | 
| 13ec0 |  5b 61 69 2d 6f 72 67 2d 63 68 61 74 5d 5d 3a 20    50 72 6f 76 69 64 65 73 20 62 72 61 6e 63 68 69  | [ai-org-chat]]:.Provides.branchi | 
| 13ee0 |  6e 67 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73    20 69 6e 20 4f 72 67 20 62 75 66 66 65 72 73 20  | ng.conversations.in.Org.buffers. | 
| 13f00 |  75 73 69 6e 67 20 67 70 74 65 6c 2e 20 20 28 4e    6f 74 65 20 74 68 61 74 20 67 70 74 65 6c 20 69  | using.gptel...(Note.that.gptel.i | 
| 13f20 |  6e 63 6c 75 64 65 73 20 74 68 69 73 20 66 65 61    74 75 72 65 20 61 73 20 77 65 6c 6c 20 28 73 65  | ncludes.this.feature.as.well.(se | 
| 13f40 |  65 20 3d 67 70 74 65 6c 2d 6f 72 67 2d 62 72 61    6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 3d 29  | e.=gptel-org-branching-context=) | 
| 13f60 |  2c 20 62 75 74 20 72 65 71 75 69 72 65 73 20 61    20 72 65 63 65 6e 74 20 76 65 72 73 69 6f 6e 20  | ,.but.requires.a.recent.version. | 
| 13f80 |  6f 66 20 4f 72 67 20 6d 6f 64 65 20 39 2e 37 20    6f 72 20 6c 61 74 65 72 20 74 6f 20 62 65 20 69  | of.Org.mode.9.7.or.later.to.be.i | 
| 13fa0 |  6e 73 74 61 6c 6c 65 64 2e 29 0a 2d 20 5b 5b 68    74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f  | nstalled.).-.[[https://github.co | 
| 13fc0 |  6d 2f 72 6f 62 31 33 37 2f 43 6f 72 73 61 69 72    5d 5b 43 6f 72 73 61 69 72 5d 5d 3a 20 48 65 6c  | m/rob137/Corsair][Corsair]]:.Hel | 
| 13fe0 |  70 73 20 67 61 74 68 65 72 20 74 65 78 74 20 74    6f 20 70 6f 70 75 6c 61 74 65 20 4c 4c 4d 20 70  | ps.gather.text.to.populate.LLM.p | 
| 14000 |  72 6f 6d 70 74 73 20 66 6f 72 20 67 70 74 65 6c    2e 0a 0a 2a 2a 20 43 4f 4d 4d 45 4e 54 20 4f 6c  | rompts.for.gptel...**.COMMENT.Ol | 
| 14020 |  64 65 72 20 42 72 65 61 6b 69 6e 67 20 43 68 61    6e 67 65 73 0a 0a 2d 20 3d 67 70 74 65 6c 2d 70  | der.Breaking.Changes..-.=gptel-p | 
| 14040 |  6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f    6b 3d 20 68 61 73 20 62 65 65 6e 20 72 65 6e 61  | ost-response-hook=.has.been.rena | 
| 14060 |  6d 65 64 20 74 6f 20 3d 67 70 74 65 6c 2d 70 6f    73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63  | med.to.=gptel-post-response-func | 
| 14080 |  74 69 6f 6e 73 3d 2c 20 61 6e 64 20 66 75 6e 63    74 69 6f 6e 73 20 69 6e 20 74 68 69 73 20 68 6f  | tions=,.and.functions.in.this.ho | 
| 140a0 |  6f 6b 20 61 72 65 20 6e 6f 77 20 63 61 6c 6c 65    64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d  | ok.are.now.called.with.two.argum | 
| 140c0 |  65 6e 74 73 3a 20 74 68 65 20 73 74 61 72 74 20    61 6e 64 20 65 6e 64 20 62 75 66 66 65 72 20 70  | ents:.the.start.and.end.buffer.p | 
| 140e0 |  6f 73 69 74 69 6f 6e 73 20 6f 66 20 74 68 65 20    72 65 73 70 6f 6e 73 65 2e 20 20 54 68 69 73 20  | ositions.of.the.response...This. | 
| 14100 |  73 68 6f 75 6c 64 20 6d 61 6b 65 20 69 74 20 65    61 73 79 20 74 6f 20 61 63 74 20 6f 6e 20 74 68  | should.make.it.easy.to.act.on.th | 
| 14120 |  65 20 72 65 73 70 6f 6e 73 65 20 74 65 78 74 20    77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74  | e.response.text.without.having.t | 
| 14140 |  6f 20 6c 6f 63 61 74 65 20 69 74 20 66 69 72 73    74 2e 0a 0a 2d 20 50 6f 73 73 69 62 6c 65 20 62  | o.locate.it.first...-.Possible.b | 
| 14160 |  72 65 61 6b 61 67 65 2c 20 73 65 65 20 23 31 32    30 3a 20 49 66 20 73 74 72 65 61 6d 69 6e 67 20  | reakage,.see.#120:.If.streaming. | 
| 14180 |  72 65 73 70 6f 6e 73 65 73 20 73 74 6f 70 20 77    6f 72 6b 69 6e 67 20 66 6f 72 20 79 6f 75 20 61  | responses.stop.working.for.you.a | 
| 141a0 |  66 74 65 72 20 75 70 67 72 61 64 69 6e 67 20 74    6f 20 76 30 2e 35 2c 20 74 72 79 20 72 65 69 6e  | fter.upgrading.to.v0.5,.try.rein | 
| 141c0 |  73 74 61 6c 6c 69 6e 67 20 67 70 74 65 6c 20 61    6e 64 20 64 65 6c 65 74 69 6e 67 20 69 74 73 20  | stalling.gptel.and.deleting.its. | 
| 141e0 |  6e 61 74 69 76 65 20 63 6f 6d 70 20 65 6c 6e 20    63 61 63 68 65 20 69 6e 20 3d 6e 61 74 69 76 65  | native.comp.eln.cache.in.=native | 
| 14200 |  2d 63 6f 6d 70 2d 65 6c 6e 2d 6c 6f 61 64 2d 70    61 74 68 3d 2e 0a 0a 2d 20 54 68 65 20 75 73 65  | -comp-eln-load-path=...-.The.use | 
| 14220 |  72 20 6f 70 74 69 6f 6e 20 3d 67 70 74 65 6c 2d    68 6f 73 74 3d 20 69 73 20 64 65 70 72 65 63 61  | r.option.=gptel-host=.is.depreca | 
| 14240 |  74 65 64 2e 20 20 49 66 20 74 68 65 20 64 65 66    61 75 6c 74 73 20 64 6f 6e 27 74 20 77 6f 72 6b  | ted...If.the.defaults.don't.work | 
| 14260 |  20 66 6f 72 20 79 6f 75 2c 20 75 73 65 20 3d 67    70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69  | .for.you,.use.=gptel-make-openai | 
| 14280 |  3d 20 28 77 68 69 63 68 20 73 65 65 29 20 74 6f    20 63 75 73 74 6f 6d 69 7a 65 20 73 65 72 76 65  | =.(which.see).to.customize.serve | 
| 142a0 |  72 20 73 65 74 74 69 6e 67 73 2e 0a 0a 2d 20 3d    67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72  | r.settings...-.=gptel-api-key-fr | 
| 142c0 |  6f 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 3d 20    6e 6f 77 20 73 65 61 72 63 68 65 73 20 66 6f 72  | om-auth-source=.now.searches.for | 
| 142e0 |  20 74 68 65 20 41 50 49 20 6b 65 79 20 75 73 69    6e 67 20 74 68 65 20 68 6f 73 74 20 61 64 64 72  | .the.API.key.using.the.host.addr | 
| 14300 |  65 73 73 20 66 6f 72 20 74 68 65 20 61 63 74 69    76 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 2c 20  | ess.for.the.active.LLM.backend,. | 
| 14320 |  2f 69 2e 65 2e 2f 20 22 61 70 69 2e 6f 70 65 6e    61 69 2e 63 6f 6d 22 20 77 68 65 6e 20 75 73 69  | /i.e./."api.openai.com".when.usi | 
| 14340 |  6e 67 20 43 68 61 74 47 50 54 2e 20 20 59 6f 75    20 6d 61 79 20 6e 65 65 64 20 74 6f 20 75 70 64  | ng.ChatGPT...You.may.need.to.upd | 
| 14360 |  61 74 65 20 79 6f 75 72 20 3d 7e 2f 2e 61 75 74    68 69 6e 66 6f 3d 2e 0a 0a 2a 2a 20 41 63 6b 6e  | ate.your.=~/.authinfo=...**.Ackn | 
| 14380 |  6f 77 6c 65 64 67 6d 65 6e 74 73 0a 0a 2d 20 5b    5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e  | owledgments..-.[[https://github. | 
| 143a0 |  63 6f 6d 2f 66 65 6c 69 70 65 6f 63 68 6f 61 5d    5b 46 65 6c 69 70 65 20 4f 63 68 6f 61 5d 5d 20  | com/felipeochoa][Felipe.Ochoa]]. | 
| 143c0 |  61 6e 64 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69    74 68 75 62 2e 63 6f 6d 2f 61 6b 73 73 72 69 5d  | and.[[https://github.com/akssri] | 
| 143e0 |  5b 61 6b 73 73 72 69 5d 5d 20 66 6f 72 20 61 64    64 69 6e 67 20 41 57 53 20 42 65 64 72 6f 63 6b  | [akssri]].for.adding.AWS.Bedrock | 
| 14400 |  20 73 75 70 70 6f 72 74 20 74 6f 20 67 70 74 65    6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67  | .support.to.gptel..-.[[https://g | 
| 14420 |  69 74 68 75 62 2e 63 6f 6d 2f 6a 77 69 65 67 6c    65 79 5d 5b 4a 6f 68 6e 20 57 69 65 67 6c 65 79  | ithub.com/jwiegley][John.Wiegley | 
| 14440 |  5d 5d 20 66 6f 72 20 74 68 65 20 64 65 73 69 67    6e 20 6f 66 20 67 70 74 65 6c 27 73 20 70 72 65  | ]].for.the.design.of.gptel's.pre | 
| 14460 |  73 65 74 73 20 61 6e 64 20 67 70 74 65 6c 2d 72    65 71 75 65 73 74 27 73 20 61 73 79 6e 63 20 70  | sets.and.gptel-request's.async.p | 
| 14480 |  69 70 65 6c 69 6e 65 2c 20 62 75 74 20 61 6c 73    6f 20 66 6f 72 20 6c 6f 61 64 73 20 6f 66 20 67  | ipeline,.but.also.for.loads.of.g | 
| 144a0 |  65 6e 65 72 61 6c 20 66 65 65 64 62 61 63 6b 20    61 6e 64 20 61 64 76 69 63 65 2e 0a 2d 20 5b 5b  | eneral.feedback.and.advice..-.[[ | 
| 144c0 |  68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63    6f 6d 2f 70 61 62 6c 30 5d 5b 48 65 6e 72 69 6b  | https://github.com/pabl0][Henrik | 
| 144e0 |  20 41 68 6c 67 72 65 6e 5d 5d 20 66 6f 72 20 61    20 6b 65 65 6e 20 65 79 65 20 74 6f 20 64 65 74  | .Ahlgren]].for.a.keen.eye.to.det | 
| 14500 |  61 69 6c 20 61 6e 64 20 70 6f 6c 69 73 68 20 61    70 70 6c 69 65 64 20 74 6f 20 67 70 74 65 6c 27  | ail.and.polish.applied.to.gptel' | 
| 14520 |  73 20 55 49 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a    2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 70 73 69  | s.UI..-.[[https://github.com/psi | 
| 14540 |  6f 6e 69 63 2d 6b 5d 5b 70 73 69 6f 6e 69 63 2d    6b 5d 5d 20 66 6f 72 20 65 78 74 65 6e 73 69 76  | onic-k][psionic-k]].for.extensiv | 
| 14560 |  65 20 74 65 73 74 69 6e 67 20 6f 66 20 74 68 65    20 74 6f 6f 6c 20 75 73 65 20 66 65 61 74 75 72  | e.testing.of.the.tool.use.featur | 
| 14580 |  65 20 61 6e 64 20 74 68 65 20 64 65 73 69 67 6e    20 6f 66 20 67 70 74 65 6c 27 73 20 69 6e 2d 62  | e.and.the.design.of.gptel's.in-b | 
| 145a0 |  75 66 66 65 72 20 74 6f 6f 6c 20 75 73 65 20 72    65 63 6f 72 64 73 2e 0a 2d 20 5b 5b 68 74 74 70  | uffer.tool.use.records..-.[[http | 
| 145c0 |  73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6a    64 74 73 6d 69 74 68 5d 5b 4a 44 20 53 6d 69 74  | s://github.com/jdtsmith][JD.Smit | 
| 145e0 |  68 5d 5d 20 66 6f 72 20 66 65 65 64 62 61 63 6b    20 61 6e 64 20 63 6f 64 65 20 61 73 73 69 73 74  | h]].for.feedback.and.code.assist | 
| 14600 |  61 6e 63 65 20 77 69 74 68 20 67 70 74 65 6c 2d    6d 65 6e 75 27 73 20 72 65 64 65 73 69 67 6e 0a  | ance.with.gptel-menu's.redesign. | 
| 14620 |  2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74 68    75 62 2e 63 6f 6d 2f 6d 65 61 69 6e 5d 5b 41 62  | -.[[https://github.com/meain][Ab | 
| 14640 |  69 6e 20 53 69 6d 6f 6e 5d 5d 20 66 6f 72 20 65    78 74 65 6e 73 69 76 65 20 66 65 65 64 62 61 63  | in.Simon]].for.extensive.feedbac | 
| 14660 |  6b 20 6f 6e 20 69 6d 70 72 6f 76 69 6e 67 20 67    70 74 65 6c 27 73 20 64 69 72 65 63 74 69 76 65  | k.on.improving.gptel's.directive | 
| 14680 |  73 20 61 6e 64 20 55 49 2e 0a 2d 20 5b 5b 68 74    74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d  | s.and.UI..-.[[https://github.com | 
| 146a0 |  2f 61 6c 67 61 6c 5d 5b 41 6c 65 78 69 73 20 47    61 6c 6c 61 67 68 65 72 5d 5d 20 61 6e 64 20 5b  | /algal][Alexis.Gallagher]].and.[ | 
| 146c0 |  5b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e    63 6f 6d 2f 64 31 65 67 6f 61 7a 5d 5b 44 69 65  | [https://github.com/d1egoaz][Die | 
| 146e0 |  67 6f 20 41 6c 76 61 72 65 7a 5d 5d 20 66 6f 72    20 66 69 78 69 6e 67 20 61 20 6e 61 73 74 79 20  | go.Alvarez]].for.fixing.a.nasty. | 
| 14700 |  6d 75 6c 74 69 2d 62 79 74 65 20 62 75 67 20 77    69 74 68 20 3d 75 72 6c 2d 72 65 74 72 69 65 76  | multi-byte.bug.with.=url-retriev | 
| 14720 |  65 3d 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f    67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 72 73 69  | e=..-.[[https://github.com/tarsi | 
| 14740 |  75 73 5d 5b 4a 6f 6e 61 73 20 42 65 72 6e 6f 75    6c 6c 69 5d 5d 20 66 6f 72 20 74 68 65 20 54 72  | us][Jonas.Bernoulli]].for.the.Tr | 
| 14760 |  61 6e 73 69 65 6e 74 20 6c 69 62 72 61 72 79 2e    0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f 67 69 74  | ansient.library..-.[[https://git | 
| 14780 |  68 75 62 2e 63 6f 6d 2f 64 61 65 64 73 69 64 6f    67 5d 5b 64 61 65 64 73 69 64 6f 67 5d 5d 20 66  | hub.com/daedsidog][daedsidog]].f | 
| 147a0 |  6f 72 20 61 64 64 69 6e 67 20 63 6f 6e 74 65 78    74 20 73 75 70 70 6f 72 74 20 74 6f 20 67 70 74  | or.adding.context.support.to.gpt | 
| 147c0 |  65 6c 2e 0a 2d 20 5b 5b 68 74 74 70 73 3a 2f 2f    67 69 74 68 75 62 2e 63 6f 6d 2f 41 71 75 61 6e  | el..-.[[https://github.com/Aquan | 
| 147e0 |  31 34 31 32 5d 5b 41 71 75 61 6e 31 34 31 32 5d    5d 20 66 6f 72 20 61 64 64 69 6e 67 20 50 72 69  | 1412][Aquan1412]].for.adding.Pri | 
| 14800 |  76 61 74 65 47 50 54 20 73 75 70 70 6f 72 74 20    74 6f 20 67 70 74 65 6c 2e 0a 2d 20 5b 5b 68 74  | vateGPT.support.to.gptel..-.[[ht | 
| 14820 |  74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d    2f 72 30 6d 61 6e 5d 5b 72 30 6d 61 6e 5d 5d 20  | tps://github.com/r0man][r0man]]. | 
| 14840 |  66 6f 72 20 69 6d 70 72 6f 76 69 6e 67 20 67 70    74 65 6c 27 73 20 43 75 72 6c 20 69 6e 74 65 67  | for.improving.gptel's.Curl.integ | 
| 14860 |  72 61 74 69 6f 6e 2e 0a 0a 23 20 4c 6f 63 61 6c    20 56 61 72 69 61 62 6c 65 73 3a 0a 23 20 74 6f  | ration...#.Local.Variables:.#.to | 
| 14880 |  63 2d 6f 72 67 2d 6d 61 78 2d 64 65 70 74 68 3a    20 34 0a 23 20 65 76 61 6c 3a 20 28 61 6e 64 20  | c-org-max-depth:.4.#.eval:.(and. | 
| 148a0 |  28 66 62 6f 75 6e 64 70 20 27 74 6f 63 2d 6f 72    67 2d 6d 6f 64 65 29 20 28 74 6f 63 2d 6f 72 67  | (fboundp.'toc-org-mode).(toc-org | 
| 148c0 |  2d 6d 6f 64 65 20 31 29 29 0a 23 20 45 6e 64 3a    0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | -mode.1)).#.End:................ | 
| 148e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14900 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14920 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 149a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 149c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 149e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14a00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 6b 61 67 69 2e 65 6c 00 00 00 00 00  | gptel-0.9.8.5/gptel-kagi.el..... | 
| 14a20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14a40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14a60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 14a80 |  30 30 31 37 33 30 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 30 31 34 00 20 30 00 00 00  | 0017300.00000000000.014014..0... | 
| 14aa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14ac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14ae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14b00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 14b20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 14b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 14c00 |  3b 3b 3b 20 67 70 74 65 6c 2d 6b 61 67 69 2e 65    6c 20 2d 2d 2d 20 4b 61 67 69 20 73 75 70 70 6f  | ;;;.gptel-kagi.el.---.Kagi.suppo | 
| 14c20 |  72 74 20 66 6f 72 20 67 70 74 65 6c 20 20 20 20    20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e  | rt.for.gptel.....-*-.lexical-bin | 
| 14c40 |  64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b    20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32  | ding:.t;.-*-..;;.Copyright.(C).2 | 
| 14c60 |  30 32 33 2d 32 30 32 35 20 20 4b 61 72 74 68 69    6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b  | 023-2025..Karthik.Chikmagalur..; | 
| 14c80 |  3b 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69    6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b  | ;.Author:.Karthik.Chikmagalur.<k | 
| 14ca0 |  61 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75    72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20  | arthikchikmagalur@gmail.com>.;;. | 
| 14cc0 |  4b 65 79 77 6f 72 64 73 3a 20 68 79 70 65 72 6d    65 64 69 61 0a 0a 3b 3b 20 54 68 69 73 20 70 72  | Keywords:.hypermedia..;;.This.pr | 
| 14ce0 |  6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f    66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20  | ogram.is.free.software;.you.can. | 
| 14d00 |  72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20    61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b  | redistribute.it.and/or.modify.;; | 
| 14d20 |  20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65    72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47  | .it.under.the.terms.of.the.GNU.G | 
| 14d40 |  65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69    63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68  | eneral.Public.License.as.publish | 
| 14d60 |  65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65    65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64  | ed.by.;;.the.Free.Software.Found | 
| 14d80 |  61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65    72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c  | ation,.either.version.3.of.the.L | 
| 14da0 |  69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61    74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61  | icense,.or.;;.(at.your.option).a | 
| 14dc0 |  6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e    2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72  | ny.later.version...;;.This.progr | 
| 14de0 |  61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65    64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68  | am.is.distributed.in.the.hope.th | 
| 14e00 |  61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73    65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54  | at.it.will.be.useful,.;;.but.WIT | 
| 14e20 |  48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54    59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20  | HOUT.ANY.WARRANTY;.without.even. | 
| 14e40 |  74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72    61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48  | the.implied.warranty.of.;;.MERCH | 
| 14e60 |  41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49    54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54  | ANTABILITY.or.FITNESS.FOR.A.PART | 
| 14e80 |  49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20    20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20  | ICULAR.PURPOSE...See.the.;;.GNU. | 
| 14ea0 |  47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c    69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20  | General.Public.License.for.more. | 
| 14ec0 |  64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75    20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63  | details...;;.You.should.have.rec | 
| 14ee0 |  65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20    74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20  | eived.a.copy.of.the.GNU.General. | 
| 14f00 |  50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b    3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69  | Public.License.;;.along.with.thi | 
| 14f20 |  73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e    6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f  | s.program...If.not,.see.<https:/ | 
| 14f40 |  2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63    65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f  | /www.gnu.org/licenses/>...;;;.Co | 
| 14f60 |  6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68    69 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70  | mmentary:..;;.This.file.adds.sup | 
| 14f80 |  70 6f 72 74 20 66 6f 72 20 74 68 65 20 4b 61 67    69 20 46 61 73 74 47 50 54 20 4c 4c 4d 20 41 50  | port.for.the.Kagi.FastGPT.LLM.AP | 
| 14fa0 |  49 20 74 6f 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20    43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27  | I.to.gptel..;;;.Code:.(require.' | 
| 14fc0 |  67 70 74 65 6c 29 0a 28 72 65 71 75 69 72 65 20    27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 65 76  | gptel).(require.'cl-generic).(ev | 
| 14fe0 |  61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a    20 20 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c  | al-when-compile...(require.'cl-l | 
| 15000 |  69 62 29 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66    75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f  | ib))..(declare-function.gptel-co | 
| 15020 |  6e 74 65 78 74 2d 2d 77 72 61 70 20 22 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 3b 3b  | ntext--wrap."gptel-context")..;; | 
| 15040 |  3b 20 4b 61 67 69 0a 28 63 6c 2d 64 65 66 73 74    72 75 63 74 20 28 67 70 74 65 6c 2d 6b 61 67 69  | ;.Kagi.(cl-defstruct.(gptel-kagi | 
| 15060 |  20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67    70 74 65 6c 2d 2d 6d 61 6b 65 2d 6b 61 67 69 29  | .(:constructor.gptel--make-kagi) | 
| 15080 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63  | .............................(:c | 
| 150a0 |  6f 70 69 65 72 20 6e 69 6c 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | opier.nil)...................... | 
| 150c0 |  20 20 20 20 20 20 20 28 3a 69 6e 63 6c 75 64 65    20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29  | .......(:include.gptel-backend)) | 
| 150e0 |  29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64    20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65  | )..(cl-defmethod.gptel--parse-re | 
| 15100 |  73 70 6f 6e 73 65 20 28 28 5f 62 61 63 6b 65 6e    64 20 67 70 74 65 6c 2d 6b 61 67 69 29 20 72 65  | sponse.((_backend.gptel-kagi).re | 
| 15120 |  73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 28    6c 65 74 2a 20 28 28 64 61 74 61 20 28 70 6c 69  | sponse.info)...(let*.((data.(pli | 
| 15140 |  73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20    3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20  | st-get.response.:data))......... | 
| 15160 |  20 28 6f 75 74 70 75 74 20 28 70 6c 69 73 74 2d    67 65 74 20 64 61 74 61 20 3a 6f 75 74 70 75 74  | .(output.(plist-get.data.:output | 
| 15180 |  29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 66    65 72 65 6e 63 65 73 20 28 70 6c 69 73 74 2d 67  | ))..........(references.(plist-g | 
| 151a0 |  65 74 20 64 61 74 61 20 3a 72 65 66 65 72 65 6e    63 65 73 29 29 29 0a 20 20 20 20 28 69 66 20 28  | et.data.:references))).....(if.( | 
| 151c0 |  65 71 20 72 65 66 65 72 65 6e 63 65 73 20 3a 6e    75 6c 6c 29 20 28 73 65 74 71 20 72 65 66 65 72  | eq.references.:null).(setq.refer | 
| 151e0 |  65 6e 63 65 73 20 6e 69 6c 29 29 0a 20 20 20 20    28 69 66 20 28 65 71 20 6f 75 74 70 75 74 20 3a  | ences.nil)).....(if.(eq.output.: | 
| 15200 |  6e 75 6c 6c 29 20 28 73 65 74 71 20 6f 75 74 70    75 74 20 6e 69 6c 29 29 0a 20 20 20 20 28 77 68  | null).(setq.output.nil)).....(wh | 
| 15220 |  65 6e 20 72 65 66 65 72 65 6e 63 65 73 0a 20 20    20 20 20 20 28 73 65 74 71 20 72 65 66 65 72 65  | en.references.......(setq.refere | 
| 15240 |  6e 63 65 73 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 63 6c 2d 6c 6f 6f 70 20 77 69 74 68 20 6c  | nces.............(cl-loop.with.l | 
| 15260 |  69 6e 6b 65 72 20 3d 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63  | inker.=......................(pc | 
| 15280 |  61 73 65 20 28 62 75 66 66 65 72 2d 6c 6f 63 61    6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72 2d 6d  | ase.(buffer-local-value.'major-m | 
| 152a0 |  6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ode............................. | 
| 152c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69  | ....................(plist-get.i | 
| 152e0 |  6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nfo.:buffer))................... | 
| 15300 |  20 20 20 20 20 28 27 6f 72 67 2d 6d 6f 64 65 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....('org-mode................. | 
| 15320 |  20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20    28 74 65 78 74 20 75 72 6c 29 0a 20 20 20 20 20  | ........(lambda.(text.url)...... | 
| 15340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 5b 5b  | .....................(format."[[ | 
| 15360 |  25 73 5d 5b 25 73 5d 5d 22 20 75 72 6c 20 74 65    78 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | %s][%s]]".url.text)))........... | 
| 15380 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6d    61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 0a 20 20 20  | .............('markdown-mode.... | 
| 153a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 65  | .....................(lambda.(te | 
| 153c0 |  78 74 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | xt.url)......................... | 
| 153e0 |  20 20 28 66 6f 72 6d 61 74 20 22 5b 25 73 5d 28    25 73 29 22 20 74 65 78 74 20 75 72 6c 29 29 29  | ..(format."[%s](%s)".text.url))) | 
| 15400 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 5f 20 28 6c 61 6d 62  | ........................(_.(lamb | 
| 15420 |  64 61 20 28 74 65 78 74 20 75 72 6c 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | da.(text.url)................... | 
| 15440 |  20 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f    6e 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20  | ..........(buttonize............ | 
| 15460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 74 65 78 74 20 28 6c 61 6d 62 64 61 20 28  | ..................text.(lambda.( | 
| 15480 |  64 61 74 61 29 20 28 62 72 6f 77 73 65 2d 75 72    6c 20 64 61 74 61 29 29 0a 20 20 20 20 20 20 20  | data).(browse-url.data))........ | 
| 154a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 75 72 6c 29 29 29 29 0a 20 20  | ......................url))))... | 
| 154c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 66 6f 72 20 72 65 66 20 61 63 72 6f 73  | ...................for.ref.acros | 
| 154e0 |  73 20 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s.references.................... | 
| 15500 |  20 20 66 6f 72 20 74 69 74 6c 65 20 3d 20 28 70    6c 69 73 74 2d 67 65 74 20 72 65 66 20 3a 74 69  | ..for.title.=.(plist-get.ref.:ti | 
| 15520 |  74 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73 6e  | tle)......................for.sn | 
| 15540 |  69 70 70 65 74 20 3d 20 28 70 6c 69 73 74 2d 67    65 74 20 72 65 66 20 3a 73 6e 69 70 70 65 74 29  | ippet.=.(plist-get.ref.:snippet) | 
| 15560 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 66 6f 72 20 75 72 6c 20 3d 20  | ......................for.url.=. | 
| 15580 |  28 70 6c 69 73 74 2d 67 65 74 20 72 65 66 20 3a    75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20  | (plist-get.ref.:url)............ | 
| 155a0 |  20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20    75 70 66 72 6f 6d 20 31 0a 20 20 20 20 20 20 20  | ..........for.n.upfrom.1........ | 
| 155c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f    6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20  | ..............collect........... | 
| 155e0 |  20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63    61 74 20 28 66 6f 72 6d 61 74 20 22 5b 25 64 5d  | ...........(concat.(format."[%d] | 
| 15600 |  20 22 20 6e 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .".n)........................... | 
| 15620 |  20 20 20 28 66 75 6e 63 61 6c 6c 20 6c 69 6e 6b    65 72 20 74 69 74 6c 65 20 75 72 6c 29 20 22 3a  | ...(funcall.linker.title.url).": | 
| 15640 |  20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .".............................. | 
| 15660 |  28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d    69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20  | (replace-regexp-in-string....... | 
| 15680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 22 3c 2f 3f 62 3e 22 20  | ........................"</?b>". | 
| 156a0 |  22 2a 22 20 73 6e 69 70 70 65 74 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "*".snippet))................... | 
| 156c0 |  20 20 20 69 6e 74 6f 20 72 65 66 2d 73 74 72 69    6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ...into.ref-strings............. | 
| 156e0 |  20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79    20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20  | .........finally.return......... | 
| 15700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 63 61 74 20 22 5c 6e 5c 6e 22 20 28 6d 61 70  | .............(concat."\n\n".(map | 
| 15720 |  63 6f 6e 63 61 74 20 23 27 69 64 65 6e 74 69 74    79 20 72 65 66 2d 73 74 72 69 6e 67 73 20 22 5c  | concat.#'identity.ref-strings."\ | 
| 15740 |  6e 22 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e    63 61 74 20 6f 75 74 70 75 74 20 72 65 66 65 72  | n"))))).....(concat.output.refer | 
| 15760 |  65 6e 63 65 73 29 29 29 0a 0a 3b 3b 20 54 4f 44    4f 3a 20 41 64 64 20 6d 6f 64 65 6c 20 61 6e 64  | ences)))..;;.TODO:.Add.model.and | 
| 15780 |  20 62 61 63 6b 65 6e 64 2d 73 70 65 63 69 66 69    63 20 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73  | .backend-specific.request-params | 
| 157a0 |  20 73 75 70 70 6f 72 74 0a 28 63 6c 2d 64 65 66    6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65  | .support.(cl-defmethod.gptel--re | 
| 157c0 |  71 75 65 73 74 2d 64 61 74 61 20 28 28 5f 62 61    63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 69  | quest-data.((_backend.gptel-kagi | 
| 157e0 |  29 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 4a 53    4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54  | ).prompts)..."JSON.encode.PROMPT | 
| 15800 |  53 20 66 6f 72 20 4b 61 67 69 2e 22 0a 20 20 28    70 63 61 73 65 2d 65 78 68 61 75 73 74 69 76 65  | S.for.Kagi."...(pcase-exhaustive | 
| 15820 |  20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e    61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29  | .(gptel--model-name.gptel-model) | 
| 15840 |  0a 20 20 20 20 28 22 66 61 73 74 67 70 74 22 0a    20 20 20 20 20 60 28 2c 40 70 72 6f 6d 70 74 73  | .....("fastgpt"......`(,@prompts | 
| 15860 |  20 3a 77 65 62 5f 73 65 61 72 63 68 20 74 20 3a    63 61 63 68 65 20 74 29 29 0a 20 20 20 20 28 28  | .:web_search.t.:cache.t)).....(( | 
| 15880 |  61 6e 64 20 6d 6f 64 65 6c 20 28 67 75 61 72 64    20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d  | and.model.(guard.(string-prefix- | 
| 158a0 |  70 20 22 73 75 6d 6d 61 72 69 7a 65 22 20 6d 6f    64 65 6c 29 29 29 0a 20 20 20 20 20 60 28 2c 40  | p."summarize".model)))......`(,@ | 
| 158c0 |  70 72 6f 6d 70 74 73 20 3a 65 6e 67 69 6e 65 20    2c 28 73 75 62 73 74 72 69 6e 67 20 6d 6f 64 65  | prompts.:engine.,(substring.mode | 
| 158e0 |  6c 20 31 30 29 29 29 29 29 0a 0a 28 63 6c 2d 64    65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d  | l.10)))))..(cl-defmethod.gptel-- | 
| 15900 |  70 61 72 73 65 2d 62 75 66 66 65 72 20 28 28 5f    62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61  | parse-buffer.((_backend.gptel-ka | 
| 15920 |  67 69 29 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 6d    61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c  | gi).&optional._max-entries)...(l | 
| 15940 |  65 74 20 28 28 75 72 6c 20 28 6f 72 20 28 74 68    69 6e 67 2d 61 74 2d 70 6f 69 6e 74 20 27 75 72  | et.((url.(or.(thing-at-point.'ur | 
| 15960 |  6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 67 65 74 2d 74 65 78 74 2d 70 72  | l)..................(get-text-pr | 
| 15980 |  6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27    73 68 72 2d 75 72 6c 29 0a 20 20 20 20 20 20 20  | operty.(point).'shr-url)........ | 
| 159a0 |  20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 74    65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f  | ..........(get-text-property.(po | 
| 159c0 |  69 6e 74 29 20 27 69 6d 61 67 65 2d 75 72 6c 29    29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 28 66  | int).'image-url))).........;;.(f | 
| 159e0 |  69 6c 65 6e 61 6d 65 20 28 74 68 69 6e 67 2d 61    74 2d 70 6f 69 6e 74 20 27 65 78 69 73 74 69 6e  | ilename.(thing-at-point.'existin | 
| 15a00 |  67 2d 66 69 6c 65 6e 61 6d 65 29 29 20 3b 6e 6f    20 66 69 6c 65 20 75 70 6c 6f 61 64 20 73 75 70  | g-filename)).;no.file.upload.sup | 
| 15a20 |  70 6f 72 74 20 79 65 74 0a 20 20 20 20 20 20 20    20 28 70 72 6f 70 20 28 74 65 78 74 2d 70 72 6f  | port.yet.........(prop.(text-pro | 
| 15a40 |  70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63    6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20  | perty-search-backward........... | 
| 15a60 |  20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73    70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20  | .....'gptel.'response........... | 
| 15a80 |  20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 2d    63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d  | .....(when.(get-char-property.(m | 
| 15aa0 |  61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28    31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20  | ax.(point-min).(1-.(point))).... | 
| 15ac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 15ae0 |  20 20 20 20 20 27 67 70 74 65 6c 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29  | .....'gptel)..................t) | 
| 15b00 |  29 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64    20 75 72 6c 20 28 73 74 72 69 6e 67 2d 70 72 65  | ))).....(if.(and.url.(string-pre | 
| 15b20 |  66 69 78 2d 70 20 22 73 75 6d 6d 61 72 69 7a 65    22 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d  | fix-p."summarize".(gptel--model- | 
| 15b40 |  6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c    29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73  | name.gptel-model))).........(lis | 
| 15b60 |  74 20 3a 75 72 6c 20 75 72 6c 29 0a 20 20 20 20    20 20 28 69 66 20 28 61 6e 64 20 28 6f 72 20 67  | t.:url.url).......(if.(and.(or.g | 
| 15b80 |  70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d    74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 0a  | ptel-mode.gptel-track-response). | 
| 15ba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 72 6f 70 2d 6d 61 74 63 68 2d 70 20 70 72 6f  | ...............(prop-match-p.pro | 
| 15bc0 |  70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61  | p)................(prop-match-va | 
| 15be0 |  6c 75 65 20 70 72 6f 70 29 29 0a 20 20 20 20 20    20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72  | lue.prop))...........(user-error | 
| 15c00 |  20 22 4e 6f 20 75 73 65 72 20 70 72 6f 6d 70 74    20 66 6f 75 6e 64 21 22 29 0a 20 20 20 20 20 20  | ."No.user.prompt.found!")....... | 
| 15c20 |  20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(let.((prompts................ | 
| 15c40 |  28 69 66 20 28 6f 72 20 67 70 74 65 6c 2d 6d 6f    64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72  | (if.(or.gptel-mode.gptel-track-r | 
| 15c60 |  65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20  | esponse)....................(or. | 
| 15c80 |  28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65    66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20 20  | (gptel--trim-prefixes........... | 
| 15ca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62    75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d  | ..............(buffer-substring- | 
| 15cc0 |  6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70    72 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e  | no-properties.(prop-match-beginn | 
| 15ce0 |  69 6e 67 20 70 72 6f 70 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ing.prop)....................... | 
| 15d00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 15d20 |  20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 65 6e    64 20 70 72 6f 70 29 29 29 0a 20 20 20 20 20 20  | ..(prop-match-end.prop)))....... | 
| 15d40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ................."")............ | 
| 15d60 |  20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72    69 6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74  | ......(string-trim.(buffer-subst | 
| 15d80 |  72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69    65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28  | ring-no-properties.(point-min).( | 
| 15da0 |  70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65  | point-max))))))...........(pcase | 
| 15dc0 |  2d 65 78 68 61 75 73 74 69 76 65 20 28 67 70 74    65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67  | -exhaustive.(gptel--model-name.g | 
| 15de0 |  70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 28 22 66 61 73 74 67 70  | ptel-model).............("fastgp | 
| 15e00 |  74 22 20 28 73 65 74 71 20 70 72 6f 6d 70 74 73    20 28 6c 69 73 74 20 3a 71 75 65 72 79 20 28 69  | t".(setq.prompts.(list.:query.(i | 
| 15e20 |  66 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 70 20    70 72 6f 70 29 20 70 72 6f 6d 70 74 73 20 22 22  | f.(prop-match-p.prop).prompts."" | 
| 15e40 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 28 61 6e 64 20 6d 6f 64 65 6c 20 28 67 75  | )))).............((and.model.(gu | 
| 15e60 |  61 72 64 20 28 73 74 72 69 6e 67 2d 70 72 65 66    69 78 2d 70 20 22 73 75 6d 6d 61 72 69 7a 65 22  | ard.(string-prefix-p."summarize" | 
| 15e80 |  20 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 65  | .model)))..............;;.If.the | 
| 15ea0 |  20 65 6e 74 69 72 65 20 63 6f 6e 74 65 6e 74 73    20 6f 66 20 74 68 65 20 70 72 6f 6d 70 74 20 6c  | .entire.contents.of.the.prompt.l | 
| 15ec0 |  6f 6f 6b 73 20 6c 69 6b 65 20 61 20 75 72 6c 2c    20 73 65 6e 64 20 74 68 65 20 75 72 6c 0a 20 20  | ooks.like.a.url,.send.the.url... | 
| 15ee0 |  20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6c    73 65 20 73 65 6e 64 20 74 68 65 20 74 65 78 74  | ...........;;.Else.send.the.text | 
| 15f00 |  20 6f 66 20 74 68 65 20 72 65 67 69 6f 6e 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74  | .of.the.region..............(set | 
| 15f20 |  71 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66  | q.prompts....................(if | 
| 15f40 |  2d 6c 65 74 2a 20 28 28 28 70 72 6f 70 2d 6d 61    74 63 68 2d 70 20 70 72 6f 70 29 29 0a 20 20 20  | -let*.(((prop-match-p.prop)).... | 
| 15f60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 65 6e 67 69 6e  | ..........................(engin | 
| 15f80 |  65 20 28 73 75 62 73 74 72 69 6e 67 20 6d 6f 64    65 6c 20 31 30 29 29 29 0a 20 20 20 20 20 20 20  | e.(substring.model.10)))........ | 
| 15fa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 49 74 27 73 20 61 20 72 65 67 69 6f 6e  | ................;;.It's.a.region | 
| 15fc0 |  20 6f 66 20 74 65 78 74 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .of.text........................ | 
| 15fe0 |  28 6c 69 73 74 20 3a 74 65 78 74 20 70 72 6f 6d    70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  | (list.:text.prompts)............ | 
| 16000 |  20 20 20 20 20 20 20 20 20 20 22 22 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70  | ..........""))))...........promp | 
| 16020 |  74 73 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66    6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 77 72  | ts)))))..(cl-defmethod.gptel--wr | 
| 16040 |  61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74 20 28    28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d  | ap-user-prompt.((_backend.gptel- | 
| 16060 |  6b 61 67 69 29 20 70 72 6f 6d 70 74 73 29 0a 20    20 28 63 6f 6e 64 0a 20 20 20 28 28 70 6c 69 73  | kagi).prompts)...(cond....((plis | 
| 16080 |  74 2d 67 65 74 20 70 72 6f 6d 70 74 73 20 3a 75    72 6c 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65  | t-get.prompts.:url).....(message | 
| 160a0 |  20 22 49 67 6e 6f 72 69 6e 67 20 67 70 74 65 6c    20 63 6f 6e 74 65 78 74 20 66 6f 72 20 55 52 4c  | ."Ignoring.gptel.context.for.URL | 
| 160c0 |  20 73 75 6d 6d 61 72 79 20 72 65 71 75 65 73 74    2e 22 29 29 0a 20 20 20 28 28 70 6c 69 73 74 2d  | .summary.request."))....((plist- | 
| 160e0 |  67 65 74 20 70 72 6f 6d 70 74 73 20 3a 71 75 65    72 79 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c  | get.prompts.:query).....(cl-call | 
| 16100 |  66 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    2d 77 72 61 70 20 28 70 6c 69 73 74 2d 67 65 74  | f.gptel-context--wrap.(plist-get | 
| 16120 |  20 70 72 6f 6d 70 74 73 20 3a 71 75 65 72 79 29    29 29 0a 20 20 20 28 28 70 6c 69 73 74 2d 67 65  | .prompts.:query)))....((plist-ge | 
| 16140 |  74 20 70 72 6f 6d 70 74 73 20 3a 74 65 78 74 29    0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 67  | t.prompts.:text).....(cl-callf.g | 
| 16160 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72    61 70 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72  | ptel-context--wrap.(plist-get.pr | 
| 16180 |  6f 6d 70 74 73 20 3a 74 65 78 74 29 29 29 29 29    0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64  | ompts.:text)))))..;;;###autoload | 
| 161a0 |  0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c    2d 6d 61 6b 65 2d 6b 61 67 69 0a 20 20 20 20 28  | .(cl-defun.gptel-make-kagi.....( | 
| 161c0 |  6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61    72 67 73 20 73 74 72 65 61 6d 20 6b 65 79 0a 20  | name.&key.curl-args.stream.key.. | 
| 161e0 |  20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22    6b 61 67 69 2e 63 6f 6d 22 29 0a 20 20 20 20 20  | .........(host."kagi.com")...... | 
| 16200 |  20 20 20 20 20 28 68 65 61 64 65 72 20 28 6c 61    6d 62 64 61 20 28 29 20 60 28 28 22 41 75 74 68  | .....(header.(lambda.().`(("Auth | 
| 16220 |  6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 63    6f 6e 63 61 74 20 22 42 6f 74 20 22 20 28 67 70  | orization"...,(concat."Bot.".(gp | 
| 16240 |  74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79    29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | tel--get-api-key)))))).......... | 
| 16260 |  20 28 6d 6f 64 65 6c 73 20 27 28 28 66 61 73 74    67 70 74 20 3a 63 61 70 61 62 69 6c 69 74 69 65  | .(models.'((fastgpt.:capabilitie | 
| 16280 |  73 20 28 6e 6f 73 79 73 74 65 6d 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s.(nosystem))................... | 
| 162a0 |  20 20 28 73 75 6d 6d 61 72 69 7a 65 3a 63 65 63    69 6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73  | ..(summarize:cecil.:capabilities | 
| 162c0 |  20 28 6e 6f 73 79 73 74 65 6d 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(nosystem)).................... | 
| 162e0 |  20 28 73 75 6d 6d 61 72 69 7a 65 3a 61 67 6e 65    73 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20  | .(summarize:agnes.:capabilities. | 
| 16300 |  28 6e 6f 73 79 73 74 65 6d 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (nosystem))..................... | 
| 16320 |  28 73 75 6d 6d 61 72 69 7a 65 3a 64 61 70 68 6e    65 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20  | (summarize:daphne.:capabilities. | 
| 16340 |  28 6e 6f 73 79 73 74 65 6d 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (nosystem))..................... | 
| 16360 |  28 73 75 6d 6d 61 72 69 7a 65 3a 6d 75 72 69 65    6c 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20  | (summarize:muriel.:capabilities. | 
| 16380 |  28 6e 6f 73 79 73 74 65 6d 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f  | (nosystem))))...........(protoco | 
| 163a0 |  6c 20 22 68 74 74 70 73 22 29 0a 20 20 20 20 20    20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22  | l."https")...........(endpoint." | 
| 163c0 |  2f 61 70 69 2f 76 30 2f 22 29 29 0a 20 20 22 52    65 67 69 73 74 65 72 20 61 20 4b 61 67 69 20 46  | /api/v0/"))..."Register.a.Kagi.F | 
| 163e0 |  61 73 74 47 50 54 20 62 61 63 6b 65 6e 64 20 66    6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41  | astGPT.backend.for.gptel.with.NA | 
| 16400 |  4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67    75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52  | ME...Keyword.arguments:..CURL-AR | 
| 16420 |  47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73    20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74  | GS.(optional).is.a.list.of.addit | 
| 16440 |  69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d    65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 74  | ional.Curl.arguments...HOST.is.t | 
| 16460 |  68 65 20 4b 61 67 69 20 68 6f 73 74 20 28 77 69    74 68 20 70 6f 72 74 29 2c 20 64 65 66 61 75 6c  | he.Kagi.host.(with.port),.defaul | 
| 16480 |  74 73 20 74 6f 20 5c 22 6b 61 67 69 2e 63 6f 6d    5c 22 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61  | ts.to.\"kagi.com\"...MODELS.is.a | 
| 164a0 |  20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62    6c 65 20 4b 61 67 69 20 6d 6f 64 65 6c 73 3a 20  | .list.of.available.Kagi.models:. | 
| 164c0 |  6f 6e 6c 79 20 66 61 73 74 67 70 74 20 69 73 20    73 75 70 70 6f 72 74 65 64 2e 0a 0a 53 54 52 45  | only.fastgpt.is.supported...STRE | 
| 164e0 |  41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20    74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61 6d  | AM.is.a.boolean.to.toggle.stream | 
| 16500 |  69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64    65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65  | ing.responses,.defaults.to.false | 
| 16520 |  2e 20 20 4b 61 67 69 20 64 6f 65 73 20 6e 6f 74    20 73 75 70 70 6f 72 74 20 61 20 73 74 72 65 61  | ...Kagi.does.not.support.a.strea | 
| 16540 |  6d 69 6e 67 20 41 50 49 20 79 65 74 2e 0a 0a 50    52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61  | ming.API.yet...PROTOCOL.(optiona | 
| 16560 |  6c 29 20 73 70 65 63 69 66 69 65 73 20 74 68 65    20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 73  | l).specifies.the.protocol,.https | 
| 16580 |  20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e    44 50 4f 49 4e 54 20 28 6f 70 74 69 6f 6e 61 6c  | .by.default...ENDPOINT.(optional | 
| 165a0 |  29 20 69 73 20 74 68 65 20 41 50 49 20 65 6e 64    70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65  | ).is.the.API.endpoint.for.comple | 
| 165c0 |  74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20    74 6f 0a 5c 22 2f 61 70 69 2f 76 30 2f 66 61 73  | tions,.defaults.to.\"/api/v0/fas | 
| 165e0 |  74 67 70 74 5c 22 2e 0a 0a 48 45 41 44 45 52 20    28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f  | tgpt\"...HEADER.(optional).is.fo | 
| 16600 |  72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 65 61    64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74  | r.additional.headers.to.send.wit | 
| 16620 |  68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20    20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e  | h.each.request...It.should.be.an | 
| 16640 |  20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e 63    74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73  | .alist.or.a.function.that.retuns | 
| 16660 |  20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a    0a 20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79  | .an.alist,.like:..((\"Content-Ty | 
| 16680 |  70 65 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61    74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b  | pe\"...\"application/json\"))..K | 
| 166a0 |  45 59 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73    20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73  | EY.(optional).is.a.variable.whos | 
| 166c0 |  65 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41    50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74  | e.value.is.the.API.key,.or.funct | 
| 166e0 |  69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73    20 74 68 65 20 6b 65 79 2e 0a 0a 45 78 61 6d 70  | ion.that.returns.the.key...Examp | 
| 16700 |  6c 65 3a 0a 2d 2d 2d 2d 2d 2d 2d 0a 0a 20 28 67    70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 20 5c  | le:.-------...(gptel-make-kagi.\ | 
| 16720 |  22 4b 61 67 69 5c 22 20 3a 6b 65 79 20 6d 79 2d    6b 61 67 69 2d 6b 65 79 29 22 0a 20 20 28 64 65  | "Kagi\".:key.my-kagi-key)"...(de | 
| 16740 |  63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29    29 0a 20 20 73 74 72 65 61 6d 20 20 20 20 20 20  | clare.(indent.1))...stream...... | 
| 16760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3b 53 69 6c 65 6e  | ..........................;Silen | 
| 16780 |  63 65 20 62 79 74 65 2d 63 6f 6d 70 69 6c 65 72    0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e  | ce.byte-compiler...(let.((backen | 
| 167a0 |  64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6b    61 67 69 0a 20 20 20 20 20 20 20 20 20 20 20 20  | d.(gptel--make-kagi............. | 
| 167c0 |  20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73    20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20  | ......:curl-args.curl-args...... | 
| 167e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61    6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20  | .............:name.name......... | 
| 16800 |  20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20    68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20  | ..........:host.host............ | 
| 16820 |  20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68    65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20  | .......:header.header........... | 
| 16840 |  20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........:key.key................ | 
| 16860 |  20 20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65    6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c  | ...:models.(gptel--process-model | 
| 16880 |  73 20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f  | s.models)...................:pro | 
| 168a0 |  74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tocol.protocol.................. | 
| 168c0 |  20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f    69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .:endpoint.endpoint............. | 
| 168e0 |  20 20 20 20 20 20 3a 75 72 6c 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61  | ......:url...................(la | 
| 16900 |  6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e  | mbda.().....................(con | 
| 16920 |  63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f    2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74  | cat.protocol."://".host.endpoint | 
| 16940 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66  | .............................(if | 
| 16960 |  20 28 65 71 75 61 6c 20 67 70 74 65 6c 2d 6d 6f    64 65 6c 20 27 66 61 73 74 67 70 74 29 0a 20 20  | .(equal.gptel-model.'fastgpt)... | 
| 16980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66  | .............................."f | 
| 169a0 |  61 73 74 67 70 74 22 20 22 73 75 6d 6d 61 72 69    7a 65 22 29 29 29 29 29 29 0a 20 20 20 20 28 70  | astgpt"."summarize")))))).....(p | 
| 169c0 |  72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20    20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d  | rog1.backend.......(setf.(alist- | 
| 169e0 |  67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d    6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20  | get.name.gptel--known-backends.. | 
| 16a00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27  | ......................nil.nil.#' | 
| 16a20 |  65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64  | equal)...................backend | 
| 16a40 |  29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27    67 70 74 65 6c 2d 6b 61 67 69 29 0a 3b 3b 3b 20  | ))))..(provide.'gptel-kagi).;;;. | 
| 16a60 |  67 70 74 65 6c 2d 6b 61 67 69 2e 65 6c 20 65 6e    64 73 20 68 65 72 65 0a 0a 3b 3b 20 4c 6f 63 61  | gptel-kagi.el.ends.here..;;.Loca | 
| 16a80 |  6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20    62 79 74 65 2d 63 6f 6d 70 69 6c 65 2d 77 61 72  | l.Variables:.;;.byte-compile-war | 
| 16aa0 |  6e 69 6e 67 73 3a 20 28 6e 6f 74 20 64 6f 63 73    74 72 69 6e 67 73 29 0a 3b 3b 20 45 6e 64 3a 0a  | nings:.(not.docstrings).;;.End:. | 
| 16ac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16ae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16b00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16b20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16c00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 62 65 64 72 6f 63 6b 2e 65 6c 00 00  | gptel-0.9.8.5/gptel-bedrock.el.. | 
| 16c20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16c40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16c60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 16c80 |  30 30 37 35 33 37 32 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 35 32 37 00 20 30 00 00 00  | 0075372.00000000000.014527..0... | 
| 16ca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16cc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16ce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16d00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 16d20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 16d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 16e00 |  3b 3b 3b 20 67 70 74 65 6c 2d 62 65 64 72 6f 63    6b 2e 65 6c 20 2d 2d 2d 20 41 57 53 20 42 65 64  | ;;;.gptel-bedrock.el.---.AWS.Bed | 
| 16e20 |  72 6f 63 6b 20 73 75 70 70 6f 72 74 20 66 6f 72    20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69  | rock.support.for.gptel..-*-.lexi | 
| 16e40 |  63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20    2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68  | cal-binding:.t;.-*-..;;.Copyrigh | 
| 16e60 |  74 20 28 43 29 20 32 30 32 35 20 4b 61 72 74 68    69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a  | t.(C).2025.Karthik.Chikmagalur.. | 
| 16e80 |  3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 63 6f 6d    6d 2c 20 63 6f 6e 76 65 6e 69 65 6e 63 65 0a 0a  | ;;.Keywords:.comm,.convenience.. | 
| 16ea0 |  3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20    69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65  | ;;.This.program.is.free.software | 
| 16ec0 |  3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74    72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72  | ;.you.can.redistribute.it.and/or | 
| 16ee0 |  20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e    64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66  | .modify.;;.it.under.the.terms.of | 
| 16f00 |  20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c    20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20  | .the.GNU.General.Public.License. | 
| 16f20 |  61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a    3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74  | as.published.by.;;.the.Free.Soft | 
| 16f40 |  77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c    20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20  | ware.Foundation,.either.version. | 
| 16f60 |  33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65    2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72  | 3.of.the.License,.or.;;.(at.your | 
| 16f80 |  20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74    65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20  | .option).any.later.version...;;. | 
| 16fa0 |  54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20    64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74  | This.program.is.distributed.in.t | 
| 16fc0 |  68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20    77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a  | he.hope.that.it.will.be.useful,. | 
| 16fe0 |  3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41    4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74  | ;;.but.WITHOUT.ANY.WARRANTY;.wit | 
| 17000 |  68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d    70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f  | hout.even.the.implied.warranty.o | 
| 17020 |  66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49    4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20  | f.;;.MERCHANTABILITY.or.FITNESS. | 
| 17040 |  46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52    20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74  | FOR.A.PARTICULAR.PURPOSE...See.t | 
| 17060 |  68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61    6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65  | he.;;.GNU.General.Public.License | 
| 17080 |  20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c    73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c  | .for.more.details...;;.You.shoul | 
| 170a0 |  64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20    61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e  | d.have.received.a.copy.of.the.GN | 
| 170c0 |  55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63    20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e  | U.General.Public.License.;;.alon | 
| 170e0 |  67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67    72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65  | g.with.this.program...If.not,.se | 
| 17100 |  65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67    6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f  | e.<https://www.gnu.org/licenses/ | 
| 17120 |  3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61    72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c  | >...;;;.Commentary:..;;.This.fil | 
| 17140 |  65 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 66    6f 72 20 41 57 53 20 42 65 64 72 6f 63 6b 20 74  | e.adds.support.for.AWS.Bedrock.t | 
| 17160 |  6f 20 67 70 74 65 6c 2e 20 20 44 6f 63 75 6d 65    6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  | o.gptel...Documentation.for.the. | 
| 17180 |  72 65 71 75 65 73 74 20 64 61 74 61 20 61 6e 64    20 74 68 65 0a 3b 3b 20 72 65 73 70 6f 6e 73 65  | request.data.and.the.;;.response | 
| 171a0 |  20 70 61 79 6c 6f 61 64 73 20 63 61 6e 20 62 65    20 66 6f 75 6e 64 20 61 74 20 74 68 65 73 65 20  | .payloads.can.be.found.at.these. | 
| 171c0 |  74 77 6f 20 6c 69 6e 6b 73 3a 0a 3b 3b 20 2a 20    68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 77 73  | two.links:.;;.*.https://docs.aws | 
| 171e0 |  2e 61 6d 61 7a 6f 6e 2e 63 6f 6d 2f 62 65 64 72    6f 63 6b 2f 6c 61 74 65 73 74 2f 41 50 49 52 65  | .amazon.com/bedrock/latest/APIRe | 
| 17200 |  66 65 72 65 6e 63 65 2f 41 50 49 5f 72 75 6e 74    69 6d 65 5f 43 6f 6e 76 65 72 73 65 2e 68 74 6d  | ference/API_runtime_Converse.htm | 
| 17220 |  6c 0a 3b 3b 20 2a 20 68 74 74 70 73 3a 2f 2f 64    6f 63 73 2e 61 77 73 2e 61 6d 61 7a 6f 6e 2e 63  | l.;;.*.https://docs.aws.amazon.c | 
| 17240 |  6f 6d 2f 62 65 64 72 6f 63 6b 2f 6c 61 74 65 73    74 2f 41 50 49 52 65 66 65 72 65 6e 63 65 2f 41  | om/bedrock/latest/APIReference/A | 
| 17260 |  50 49 5f 72 75 6e 74 69 6d 65 5f 43 6f 6e 76 65    72 73 65 53 74 72 65 61 6d 2e 68 74 6d 6c 0a 0a  | PI_runtime_ConverseStream.html.. | 
| 17280 |  3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69    72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71  | ;;;.Code:.(require.'cl-lib).(req | 
| 172a0 |  75 69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75    69 72 65 20 27 67 70 74 65 6c 29 0a 28 72 65 71  | uire.'map).(require.'gptel).(req | 
| 172c0 |  75 69 72 65 20 27 6d 61 69 6c 2d 70 61 72 73 65    29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63  | uire.'mail-parse)..(declare-func | 
| 172e0 |  74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69  | tion.gptel-context--collect-medi | 
| 17300 |  61 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74    22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63  | a."gptel-context").(declare-func | 
| 17320 |  74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 2d 77 72 61 70 20 22 67 70 74 65 6c 2d  | tion.gptel-context--wrap."gptel- | 
| 17340 |  63 6f 6e 74 65 78 74 22 29 0a 0a 28 63 6c 2d 64    65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d  | context")..(cl-defstruct.(gptel- | 
| 17360 |  62 65 64 72 6f 63 6b 20 28 3a 63 6f 6e 73 74 72    75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b  | bedrock.(:constructor.gptel--mak | 
| 17380 |  65 2d 62 65 64 72 6f 63 6b 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e-bedrock)...................... | 
| 173a0 |  20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72    20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20  | ........(:copier.nil)........... | 
| 173c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74  | ...................(:include.gpt | 
| 173e0 |  65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 6d    6f 64 65 6c 2d 72 65 67 69 6f 6e 29 0a 0a 28 64  | el-backend))...model-region)..(d | 
| 17400 |  65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 62 65    64 72 6f 63 6b 2d 2d 70 72 6f 6d 70 74 2d 74 79  | efconst.gptel-bedrock--prompt-ty | 
| 17420 |  70 65 0a 20 20 3b 3b 20 46 6f 72 20 64 6f 63 75    6d 65 6e 74 61 74 69 6f 6e 20 70 75 72 70 6f 73  | pe...;;.For.documentation.purpos | 
| 17440 |  65 73 20 6f 6e 6c 79 20 2d 2d 20 74 68 69 73 20    64 65 73 63 72 69 62 65 73 20 74 68 65 20 74 79  | es.only.--.this.describes.the.ty | 
| 17460 |  70 65 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a    65 63 74 73 20 74 68 61 74 20 67 65 74 20 70 61  | pe.of.prompt.objects.that.get.pa | 
| 17480 |  73 73 65 64 0a 20 20 3b 3b 20 61 72 6f 75 6e 64    2e 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61  | ssed...;;.around..https://docs.a | 
| 174a0 |  77 73 2e 61 6d 61 7a 6f 6e 2e 63 6f 6d 2f 62 65    64 72 6f 63 6b 2f 6c 61 74 65 73 74 2f 41 50 49  | ws.amazon.com/bedrock/latest/API | 
| 174c0 |  52 65 66 65 72 65 6e 63 65 2f 41 50 49 5f 72 75    6e 74 69 6d 65 5f 4d 65 73 73 61 67 65 2e 68 74  | Reference/API_runtime_Message.ht | 
| 174e0 |  6d 6c 0a 20 20 27 28 70 6c 69 73 74 0a 20 20 20    20 3a 72 6f 6c 65 20 28 6d 65 6d 62 65 72 20 22  | ml...'(plist.....:role.(member." | 
| 17500 |  75 73 65 72 22 20 22 61 73 73 69 73 74 61 6e 74    22 29 0a 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20  | user"."assistant").....:content. | 
| 17520 |  28 61 72 72 61 79 20 28 6f 72 20 28 70 6c 69 73    74 20 3a 74 65 78 74 20 73 74 72 69 6e 67 29 0a  | (array.(or.(plist.:text.string). | 
| 17540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 6c 69 73 74 20 3a  | ........................(plist.: | 
| 17560 |  69 6d 61 67 65 20 28 3a 66 6f 72 6d 61 74 20 28    6d 65 6d 62 65 72 20 22 70 6e 67 22 20 22 6a 70  | image.(:format.(member."png"."jp | 
| 17580 |  65 67 22 20 22 67 69 66 22 20 22 77 65 62 70 22    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | eg"."gif"."webp")............... | 
| 175a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 73 6f 75 72 63 65  | .........................:source | 
| 175c0 |  20 28 70 6c 69 73 74 20 3a 62 79 74 65 73 20 73    74 72 69 6e 67 29 29 29 20 3b 20 62 79 74 65 73  | .(plist.:bytes.string))).;.bytes | 
| 175e0 |  20 69 73 20 62 36 34 20 65 6e 63 6f 64 65 64 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .is.b64.encoded................. | 
| 17600 |  20 20 20 20 20 20 20 20 28 70 6c 69 73 74 20 3a    64 6f 63 75 6d 65 6e 74 20 28 3a 66 6f 72 6d 61  | ........(plist.:document.(:forma | 
| 17620 |  74 20 28 6d 65 6d 62 65 72 20 22 70 64 66 22 20    22 63 73 76 22 20 22 64 6f 63 22 20 22 64 6f 63  | t.(member."pdf"."csv"."doc"."doc | 
| 17640 |  78 22 20 22 78 6c 73 22 20 22 78 6c 73 78 22 20    22 68 74 6d 6c 22 20 22 74 78 74 22 20 22 6d 64  | x"."xls"."xlsx"."html"."txt"."md | 
| 17660 |  22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ").............................. | 
| 17680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61    6d 65 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20  | .............:name.string....... | 
| 176a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 176c0 |  20 20 20 20 3a 73 6f 75 72 63 65 20 28 70 6c 69    73 74 20 3a 62 79 74 65 73 20 73 74 72 69 6e 67  | ....:source.(plist.:bytes.string | 
| 176e0 |  29 29 29 20 3b 20 62 79 74 65 73 20 69 73 20 62    36 34 20 65 6e 63 6f 64 65 64 0a 20 20 20 20 20  | ))).;.bytes.is.b64.encoded...... | 
| 17700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 6c 69 73 74 20 3a 74 6f 6f 6c 55  | ...................(plist.:toolU | 
| 17720 |  73 65 20 28 70 6c 69 73 74 20 3a 69 6e 70 75 74    20 61 6e 79 20 3a 6e 61 6d 65 20 73 74 72 69 6e  | se.(plist.:input.any.:name.strin | 
| 17740 |  67 20 3a 74 6f 6f 6c 55 73 65 49 64 20 73 74 72    69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20  | g.:toolUseId.string))........... | 
| 17760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70    6c 69 73 74 20 3a 74 6f 6f 6c 52 65 73 75 6c 74  | ..............(plist.:toolResult | 
| 17780 |  20 28 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(plist......................... | 
| 177a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 74 6f 6f 6c 55 73 65 49 64 20 73  | ....................:toolUseId.s | 
| 177c0 |  74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tring........................... | 
| 177e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3a 73 74 61 74 75 73 20 28 6d 65 6d 62 65  | ..................:status.(membe | 
| 17800 |  72 20 22 73 75 63 63 65 73 73 22 20 22 65 72 72    6f 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20  | r."success"."error")............ | 
| 17820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 17840 |  20 3b 3b 20 41 57 53 20 61 6c 6c 6f 77 73 20 6d    6f 72 65 20 72 65 73 75 6c 74 20 74 79 70 65 73  | .;;.AWS.allows.more.result.types | 
| 17860 |  20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .in............................. | 
| 17880 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 54 6f 6f 6c 52 65 73 75 6c 74 43 6f 6e  | ................;;.ToolResultCon | 
| 178a0 |  74 65 6e 74 42 6c 6f 63 6b 2c 20 62 75 74 20 77    65 20 6f 6e 6c 79 20 73 65 6e 64 20 74 65 78 74  | tentBlock,.but.we.only.send.text | 
| 178c0 |  20 72 65 73 75 6c 74 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .results........................ | 
| 178e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 28 61  | .....................:content.(a | 
| 17900 |  72 72 61 79 20 28 70 6c 69 73 74 20 3a 74 65 78    74 20 73 74 72 69 6e 67 29 29 29 29 29 29 29 29  | rray.(plist.:text.string)))))))) | 
| 17920 |  0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20    67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64  | ..(cl-defmethod.gptel--request-d | 
| 17940 |  61 74 61 20 28 28 62 61 63 6b 65 6e 64 20 67 70    74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 70 72 6f  | ata.((backend.gptel-bedrock).pro | 
| 17960 |  6d 70 74 73 29 0a 20 20 22 50 72 65 70 61 72 65    20 72 65 71 75 65 73 74 20 64 61 74 61 20 66 6f  | mpts)..."Prepare.request.data.fo | 
| 17980 |  72 20 41 57 53 20 42 65 64 72 6f 63 6b 20 42 41    43 4b 45 4e 44 20 66 72 6f 6d 20 50 52 4f 4d 50  | r.AWS.Bedrock.BACKEND.from.PROMP | 
| 179a0 |  54 53 2e 22 0a 20 20 28 6e 63 6f 6e 63 0a 20 20    20 60 28 3a 6d 65 73 73 61 67 65 73 20 5b 2c 40  | TS."...(nconc....`(:messages.[,@ | 
| 179c0 |  70 72 6f 6d 70 74 73 5d 20 3a 69 6e 66 65 72 65    6e 63 65 43 6f 6e 66 69 67 20 28 3a 6d 61 78 54  | prompts].:inferenceConfig.(:maxT | 
| 179e0 |  6f 6b 65 6e 73 20 2c 28 6f 72 20 67 70 74 65 6c    2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 35 30 30 29  | okens.,(or.gptel-max-tokens.500) | 
| 17a00 |  29 29 0a 20 20 20 28 77 68 65 6e 20 67 70 74 65    6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67  | ))....(when.gptel--system-messag | 
| 17a20 |  65 20 60 28 3a 73 79 73 74 65 6d 20 5b 28 3a 74    65 78 74 20 2c 67 70 74 65 6c 2d 2d 73 79 73 74  | e.`(:system.[(:text.,gptel--syst | 
| 17a40 |  65 6d 2d 6d 65 73 73 61 67 65 29 5d 29 29 0a 20    20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 65  | em-message)]))....(when.gptel-te | 
| 17a60 |  6d 70 65 72 61 74 75 72 65 20 60 28 3a 74 65 6d    70 65 72 61 74 75 72 65 20 2c 67 70 74 65 6c 2d  | mperature.`(:temperature.,gptel- | 
| 17a80 |  74 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20    20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74 65  | temperature))....(when.(and.gpte | 
| 17aa0 |  6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 67 70 74 65    6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 60 28  | l-use-tools.gptel-tools)......`( | 
| 17ac0 |  3a 74 6f 6f 6c 43 6f 6e 66 69 67 20 28 3a 74 6f    6f 6c 43 68 6f 69 63 65 20 2c 28 69 66 20 28 65  | :toolConfig.(:toolChoice.,(if.(e | 
| 17ae0 |  71 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c    73 20 27 66 6f 72 63 65 29 20 27 28 3a 61 6e 79  | q.gptel-use-tools.'force).'(:any | 
| 17b00 |  20 27 28 29 29 20 27 28 3a 61 75 74 6f 20 27 28    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .'()).'(:auto.'()))............. | 
| 17b20 |  20 20 20 20 20 20 20 20 3a 74 6f 6f 6c 73 20 2c    28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f  | ........:tools.,(gptel--parse-to | 
| 17b40 |  6f 6c 73 20 62 61 63 6b 65 6e 64 20 67 70 74 65    6c 2d 74 6f 6f 6c 73 29 29 29 29 29 29 0a 0a 28  | ols.backend.gptel-tools))))))..( | 
| 17b60 |  63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74    65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20  | cl-defmethod.gptel--parse-tools. | 
| 17b80 |  28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c    2d 62 65 64 72 6f 63 6b 29 20 74 6f 6f 6c 73 29  | ((_backend.gptel-bedrock).tools) | 
| 17ba0 |  0a 20 20 22 50 61 72 73 65 20 54 4f 4f 4c 53 20    61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73  | ..."Parse.TOOLS.and.return.a.lis | 
| 17bc0 |  74 20 6f 66 20 54 6f 6f 6c 53 70 65 63 69 66 69    63 61 74 69 6f 6e 20 6f 62 6a 65 63 74 73 2e 0a  | t.of.ToolSpecification.objects.. | 
| 17be0 |  0a 54 4f 4f 4c 53 20 69 73 20 61 20 6c 69 73 74    20 6f 66 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27  | .TOOLS.is.a.list.of.`gptel-tool' | 
| 17c00 |  20 73 74 72 75 63 74 73 2c 20 77 68 69 63 68 20    73 65 65 2e 22 0a 20 20 20 3b 3b 20 68 74 74 70  | .structs,.which.see."....;;.http | 
| 17c20 |  73 3a 2f 2f 64 6f 63 73 2e 61 77 73 2e 61 6d 61    7a 6f 6e 2e 63 6f 6d 2f 62 65 64 72 6f 63 6b 2f  | s://docs.aws.amazon.com/bedrock/ | 
| 17c40 |  6c 61 74 65 73 74 2f 41 50 49 52 65 66 65 72 65    6e 63 65 2f 41 50 49 5f 72 75 6e 74 69 6d 65 5f  | latest/APIReference/API_runtime_ | 
| 17c60 |  54 6f 6f 6c 53 70 65 63 69 66 69 63 61 74 69 6f    6e 2e 68 74 6d 6c 0a 20 20 20 28 6c 65 74 20 28  | ToolSpecification.html....(let.( | 
| 17c80 |  28 64 65 66 61 75 6c 74 2d 6f 75 74 70 75 74 73    20 28 63 6c 2d 63 61 6c 6c 2d 6e 65 78 74 2d 6d  | (default-outputs.(cl-call-next-m | 
| 17ca0 |  65 74 68 6f 64 29 29 29 20 3b 3b 20 75 73 65 20    6f 70 65 6e 61 69 20 74 6f 6f 6c 2d 70 61 72 73  | ethod))).;;.use.openai.tool-pars | 
| 17cc0 |  65 0a 20 20 20 20 20 28 63 6c 2d 6d 61 70 20 27    76 65 63 74 6f 72 0a 20 20 20 20 20 20 28 6c 61  | e......(cl-map.'vector.......(la | 
| 17ce0 |  6d 62 64 61 20 28 74 6f 6f 6c 20 73 70 65 63 29    0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a  | mbda.(tool.spec).........(list.: | 
| 17d00 |  74 6f 6f 6c 53 70 65 63 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20  | toolSpec...............(list.... | 
| 17d20 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d    65 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61  | ............:name.(gptel-tool-na | 
| 17d40 |  6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70  | me.tool)................:descrip | 
| 17d60 |  74 69 6f 6e 20 28 67 70 74 65 6c 2d 74 6f 6f 6c    2d 64 65 73 63 72 69 70 74 69 6f 6e 20 74 6f 6f  | tion.(gptel-tool-description.too | 
| 17d80 |  6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3a 69 6e 70 75 74 53 63 68 65 6d 61 20 28  | l)................:inputSchema.( | 
| 17da0 |  6c 69 73 74 20 3a 6a 73 6f 6e 20 28 70 6c 69 73    74 2d 67 65 74 20 28 70 6c 69 73 74 2d 67 65 74  | list.:json.(plist-get.(plist-get | 
| 17dc0 |  20 73 70 65 63 20 3a 66 75 6e 63 74 69 6f 6e 29    20 3a 70 61 72 61 6d 65 74 65 72 73 29 29 29 29  | .spec.:function).:parameters)))) | 
| 17de0 |  29 0a 20 20 20 20 20 20 28 65 6e 73 75 72 65 2d    6c 69 73 74 20 74 6f 6f 6c 73 29 20 64 65 66 61  | ).......(ensure-list.tools).defa | 
| 17e00 |  75 6c 74 2d 6f 75 74 70 75 74 73 29 29 29 0a 0a    28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70  | ult-outputs)))..(cl-defmethod.gp | 
| 17e20 |  74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f    6e 73 65 20 28 28 5f 62 61 63 6b 65 6e 64 20 67  | tel--parse-response.((_backend.g | 
| 17e40 |  70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 72 65    73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 22  | ptel-bedrock).response.info)..." | 
| 17e60 |  50 61 72 73 65 20 61 20 42 65 64 72 6f 63 6b 20    28 6e 6f 6e 2d 73 74 72 65 61 6d 69 6e 67 29 20  | Parse.a.Bedrock.(non-streaming). | 
| 17e80 |  52 45 53 50 4f 4e 53 45 20 61 6e 64 20 72 65 74    75 72 6e 20 72 65 73 70 6f 6e 73 65 20 74 65 78  | RESPONSE.and.return.response.tex | 
| 17ea0 |  74 2e 0a 0a 4d 75 74 61 74 65 20 73 74 61 74 65    20 49 4e 46 4f 20 77 69 74 68 20 72 65 73 70 6f  | t...Mutate.state.INFO.with.respo | 
| 17ec0 |  6e 73 65 20 6d 65 74 61 64 61 74 61 2e 22 0a 20    20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f  | nse.metadata."...(plist-put.info | 
| 17ee0 |  20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 20 28 70    6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73  | .:stop-reason.(plist-get.respons | 
| 17f00 |  65 20 3a 73 74 6f 70 52 65 61 73 6f 6e 29 29 0a    20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66  | e.:stopReason))...(plist-put.inf | 
| 17f20 |  6f 20 3a 69 6e 70 75 74 2d 74 6f 6b 65 6e 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61  | o.:input-tokens..............(ma | 
| 17f40 |  70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73    70 6f 6e 73 65 20 27 28 3a 75 73 61 67 65 20 3a  | p-nested-elt.response.'(:usage.: | 
| 17f60 |  69 6e 70 75 74 54 6f 6b 65 6e 73 29 29 29 0a 20    20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f  | inputTokens)))...(plist-put.info | 
| 17f80 |  20 3a 6f 75 74 70 75 74 2d 74 6f 6b 65 6e 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61  | .:output-tokens..............(ma | 
| 17fa0 |  70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73    70 6f 6e 73 65 20 27 28 3a 75 73 61 67 65 20 3a  | p-nested-elt.response.'(:usage.: | 
| 17fc0 |  6f 75 74 70 75 74 54 6f 6b 65 6e 73 29 29 29 0a    0a 20 20 28 6c 65 74 2a 20 28 28 6d 65 73 73 61  | outputTokens)))....(let*.((messa | 
| 17fe0 |  67 65 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65    6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 6f  | ge.(map-nested-elt.response.'(:o | 
| 18000 |  75 74 70 75 74 20 3a 6d 65 73 73 61 67 65 29 29    29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74  | utput.:message)))..........(cont | 
| 18020 |  65 6e 74 2d 73 74 72 73 20 28 74 68 72 65 61 64    2d 6c 61 73 74 20 28 70 6c 69 73 74 2d 67 65 74  | ent-strs.(thread-last.(plist-get | 
| 18040 |  20 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e    74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .message.:content).............. | 
| 18060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28  | .......................(mapcar.( | 
| 18080 |  6c 61 6d 62 64 61 20 28 63 62 6c 6f 63 6b 29 20    28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63  | lambda.(cblock).(plist-get.cbloc | 
| 180a0 |  6b 20 3a 74 65 78 74 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | k.:text)))...................... | 
| 180c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    64 65 6c 71 20 6e 69 6c 29 29 29 29 0a 20 20 20  | ...............(delq.nil)))).... | 
| 180e0 |  20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d    2d 72 65 63 6f 72 64 2d 74 6f 6f 6c 2d 75 73 65  | .(gptel-bedrock--record-tool-use | 
| 18100 |  20 6d 65 73 73 61 67 65 20 69 6e 66 6f 29 0a 20    20 20 20 28 61 6e 64 20 63 6f 6e 74 65 6e 74 2d  | .message.info).....(and.content- | 
| 18120 |  73 74 72 73 20 28 61 70 70 6c 79 20 23 27 63 6f    6e 63 61 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72  | strs.(apply.#'concat.content-str | 
| 18140 |  73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70    74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 72 65 63  | s))))..(defun.gptel-bedrock--rec | 
| 18160 |  6f 72 64 2d 74 6f 6f 6c 2d 75 73 65 20 28 6d 65    73 73 61 67 65 20 69 6e 66 6f 29 0a 20 20 22 49  | ord-tool-use.(message.info)..."I | 
| 18180 |  66 20 4d 45 53 53 41 47 45 20 68 61 73 20 74 6f    6f 6c 20 75 73 65 20 72 65 71 75 65 73 74 73 2c  | f.MESSAGE.has.tool.use.requests, | 
| 181a0 |  20 73 61 76 65 20 74 68 6f 73 65 20 74 6f 20 49    4e 46 4f 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28  | .save.those.to.INFO."...(let*.(( | 
| 181c0 |  63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67    65 74 20 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74  | content.(plist-get.message.:cont | 
| 181e0 |  65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28    74 6f 6f 6c 2d 75 73 65 2d 62 6c 6f 63 6b 73 20  | ent))..........(tool-use-blocks. | 
| 18200 |  28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (cl-remove-if-not............... | 
| 18220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61    6d 62 64 61 20 28 63 62 6c 6f 63 6b 29 20 28 70  | .............(lambda.(cblock).(p | 
| 18240 |  6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20    3a 74 6f 6f 6c 55 73 65 29 29 0a 20 20 20 20 20  | list-get.cblock.:toolUse))...... | 
| 18260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 63 6f 6e 74 65 6e 74 29 29 29  | ......................content))) | 
| 18280 |  0a 20 20 20 20 28 77 68 65 6e 20 74 6f 6f 6c 2d    75 73 65 2d 62 6c 6f 63 6b 73 0a 20 20 20 20 20  | .....(when.tool-use-blocks...... | 
| 182a0 |  20 28 63 6c 2d 63 61 6c 6c 66 20 76 63 6f 6e 63    61 74 20 28 70 6c 69 73 74 2d 67 65 74 20 28 70  | .(cl-callf.vconcat.(plist-get.(p | 
| 182c0 |  6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64    61 74 61 29 20 3a 6d 65 73 73 61 67 65 73 29 20  | list-get.info.:data).:messages). | 
| 182e0 |  28 6c 69 73 74 20 6d 65 73 73 61 67 65 29 29 0a    0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75  | (list.message))........(plist-pu | 
| 18300 |  74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.info.:tool-use................ | 
| 18320 |  20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64    61 20 28 62 6c 6f 63 6b 29 0a 20 20 20 20 20 20  | ..(mapcar.(lambda.(block)....... | 
| 18340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6c 65 74 20 28 28 74 6f 6f 6c  | .....................(let.((tool | 
| 18360 |  2d 75 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20    62 6c 6f 63 6b 20 3a 74 6f 6f 6c 55 73 65 29 29  | -use.(plist-get.block.:toolUse)) | 
| 18380 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | )..............................( | 
| 183a0 |  6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | list............................ | 
| 183c0 |  20 20 20 3a 6e 61 6d 65 20 28 70 6c 69 73 74 2d    67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 6e 61  | ...:name.(plist-get.tool-use.:na | 
| 183e0 |  6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | me)............................. | 
| 18400 |  20 20 3a 61 72 67 73 20 28 70 6c 69 73 74 2d 67    65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 69 6e 70  | ..:args.(plist-get.tool-use.:inp | 
| 18420 |  75 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ut)............................. | 
| 18440 |  20 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74    20 74 6f 6f 6c 2d 75 73 65 20 3a 74 6f 6f 6c 55  | ..:id.(plist-get.tool-use.:toolU | 
| 18460 |  73 65 49 64 29 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | seId))))........................ | 
| 18480 |  20 20 74 6f 6f 6c 2d 75 73 65 2d 62 6c 6f 63 6b    73 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d  | ..tool-use-blocks)))))..(cl-defm | 
| 184a0 |  65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72    73 65 2d 6c 69 73 74 20 28 28 5f 62 61 63 6b 65  | ethod.gptel--parse-list.((_backe | 
| 184c0 |  6e 64 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b    29 20 70 72 6f 6d 70 74 2d 73 74 72 69 6e 67 73  | nd.gptel-bedrock).prompt-strings | 
| 184e0 |  29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6c 69    73 74 20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a  | )..."Create.a.list.of.prompt.obj | 
| 18500 |  65 63 74 73 20 66 72 6f 6d 20 50 52 4f 4d 50 54    2d 53 54 52 49 4e 47 53 2e 0a 0a 41 73 73 75 6d  | ects.from.PROMPT-STRINGS...Assum | 
| 18520 |  65 73 20 74 68 69 73 20 69 73 20 61 20 63 6f 6e    76 65 72 73 61 74 69 6f 6e 20 77 69 74 68 20 61  | es.this.is.a.conversation.with.a | 
| 18540 |  6c 74 65 72 6e 61 74 69 6e 67 20 72 6f 6c 65 73    2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f  | lternating.roles."...(cl-loop.fo | 
| 18560 |  72 20 74 65 78 74 20 69 6e 20 70 72 6f 6d 70 74    2d 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20  | r.text.in.prompt-strings........ | 
| 18580 |  20 20 20 20 66 6f 72 20 72 6f 6c 65 20 3d 20 74    20 74 68 65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29  | ....for.role.=.t.then.(not.role) | 
| 185a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 69 66 20 74    65 78 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20  | ............if.text.collect..... | 
| 185c0 |  20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 72 6f    6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73 65  | .......(list.:role.(if.role."use | 
| 185e0 |  72 22 20 22 61 73 73 69 73 74 61 6e 74 22 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | r"."assistant")................. | 
| 18600 |  20 3a 63 6f 6e 74 65 6e 74 20 60 5b 28 3a 74 65    78 74 20 2c 74 65 78 74 29 5d 29 29 29 0a 0a 28  | .:content.`[(:text.,text)])))..( | 
| 18620 |  63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74    65 6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72  | cl-defmethod.gptel--wrap-user-pr | 
| 18640 |  6f 6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20    67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 70  | ompt.((_backend.gptel-bedrock).p | 
| 18660 |  72 6f 6d 70 74 73 20 26 6f 70 74 69 6f 6e 61 6c    20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 29 0a 20  | rompts.&optional.inject-media).. | 
| 18680 |  20 22 49 6e 6a 65 63 74 20 63 6f 6e 74 65 78 74    20 69 6e 74 6f 20 61 20 63 6f 6e 76 65 72 73 61  | ."Inject.context.into.a.conversa | 
| 186a0 |  74 69 6f 6e 2e 0a 0a 50 52 4f 4d 50 54 53 20 69    73 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74  | tion...PROMPTS.is.list.of.prompt | 
| 186c0 |  20 6f 62 6a 65 63 74 73 2e 20 20 49 66 20 49 4e    4a 45 43 54 2d 4d 45 44 49 41 20 69 73 20 6e 6f  | .objects...If.INJECT-MEDIA.is.no | 
| 186e0 |  6e 2d 6e 69 6c 0a 69 6e 6a 65 63 74 20 74 68 65    20 6d 65 64 69 61 20 66 69 6c 65 73 20 66 72 6f  | n-nil.inject.the.media.files.fro | 
| 18700 |  6d 20 63 6f 6e 74 65 78 74 20 69 6e 74 6f 20 74    68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  | m.context.into.the.beginning.of. | 
| 18720 |  74 68 65 0a 63 6f 6e 76 65 72 73 61 74 69 6f 6e    3b 20 6f 74 68 65 72 77 69 73 65 20 69 6e 6a 65  | the.conversation;.otherwise.inje | 
| 18740 |  63 74 20 74 68 65 20 63 6f 6e 74 65 78 74 20 69    6e 74 6f 20 74 68 65 20 6c 61 73 74 20 70 72 6f  | ct.the.context.into.the.last.pro | 
| 18760 |  6d 70 74 2e 22 0a 20 20 28 69 66 20 69 6e 6a 65    63 74 2d 6d 65 64 69 61 0a 20 20 20 20 20 20 28  | mpt."...(if.inject-media.......( | 
| 18780 |  67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69    6e 6a 65 63 74 2d 6d 65 64 69 61 2d 63 6f 6e 74  | gptel-bedrock--inject-media-cont | 
| 187a0 |  65 78 74 20 70 72 6f 6d 70 74 73 29 0a 20 20 20    20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d  | ext.prompts).....(gptel-bedrock- | 
| 187c0 |  2d 69 6e 6a 65 63 74 2d 74 65 78 74 2d 63 6f 6e    74 65 78 74 20 70 72 6f 6d 70 74 73 29 29 29 0a  | -inject-text-context.prompts))). | 
| 187e0 |  0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65    64 72 6f 63 6b 2d 2d 69 6e 6a 65 63 74 2d 6d 65  | .(defun.gptel-bedrock--inject-me | 
| 18800 |  64 69 61 2d 63 6f 6e 74 65 78 74 20 28 70 72 6f    6d 70 74 73 29 0a 20 20 22 49 6e 6a 65 63 74 20  | dia-context.(prompts)..."Inject. | 
| 18820 |  6d 65 64 69 61 20 66 69 6c 65 73 20 66 72 6f 6d    20 63 6f 6e 74 65 78 74 20 69 6e 74 6f 20 61 20  | media.files.from.context.into.a. | 
| 18840 |  63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 4d 65    64 69 61 20 66 69 6c 65 73 20 77 69 6c 6c 20 62  | conversation..Media.files.will.b | 
| 18860 |  65 20 61 64 64 65 64 20 61 74 20 74 68 65 20 62    65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20  | e.added.at.the.beginning.of.the. | 
| 18880 |  63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 50 52    4f 4d 50 54 53 20 73 68 6f 75 6c 64 20 62 65 20  | conversation..PROMPTS.should.be. | 
| 188a0 |  61 20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 73 74    20 6f 66 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63  | a.non-empty.list.of.prompt.objec | 
| 188c0 |  74 73 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74    2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74 20 28  | ts."...(when-let*.((media-list.( | 
| 188e0 |  67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63    6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29 29 0a  | gptel-context--collect-media))). | 
| 18900 |  20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 32 20 76    63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 62 65  | ....(cl-callf2.vconcat.(gptel-be | 
| 18920 |  64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 6d 75 6c    74 69 70 61 72 74 20 6d 65 64 69 61 2d 6c 69 73  | drock--parse-multipart.media-lis | 
| 18940 |  74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61  | t)................(plist-get.(ca | 
| 18960 |  72 20 70 72 6f 6d 70 74 73 29 20 3a 63 6f 6e 74    65 6e 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20  | r.prompts).:content))))..(defun. | 
| 18980 |  67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69    6e 6a 65 63 74 2d 74 65 78 74 2d 63 6f 6e 74 65  | gptel-bedrock--inject-text-conte | 
| 189a0 |  78 74 20 28 70 72 6f 6d 70 74 73 29 0a 20 20 22    49 6e 6a 65 63 74 20 74 65 78 74 20 63 6f 6e 74  | xt.(prompts)..."Inject.text.cont | 
| 189c0 |  65 78 74 20 69 6e 74 6f 20 74 68 65 20 6c 61 73    74 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20  | ext.into.the.last.prompt.object. | 
| 189e0 |  66 72 6f 6d 20 61 20 63 6f 6e 76 65 72 73 61 74    69 6f 6e 2e 0a 50 52 4f 4d 50 54 53 20 73 68 6f  | from.a.conversation..PROMPTS.sho | 
| 18a00 |  75 6c 64 20 62 65 20 61 20 6e 6f 6e 2d 65 6d 70    74 79 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70  | uld.be.a.non-empty.list.of.promp | 
| 18a20 |  74 20 6f 62 6a 65 63 74 73 2e 22 0a 20 20 28 63    6c 2d 61 73 73 65 72 74 20 70 72 6f 6d 70 74 73  | t.objects."...(cl-assert.prompts | 
| 18a40 |  20 6e 69 6c 20 22 45 78 70 65 63 74 65 64 20 61    20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 73 74 20  | .nil."Expected.a.non-empty.list. | 
| 18a60 |  6f 66 20 70 72 6f 6d 70 74 73 22 29 0a 20 20 28    77 68 65 6e 2d 6c 65 74 2a 20 28 28 77 72 61 70  | of.prompts")...(when-let*.((wrap | 
| 18a80 |  70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 2d 77 72 61 70 20 6e 69 6c 29 29 29 0a  | ped.(gptel-context--wrap.nil))). | 
| 18aa0 |  20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 32 20 76    63 6f 6e 63 61 74 20 60 5b 28 3a 74 65 78 74 20  | ....(cl-callf2.vconcat.`[(:text. | 
| 18ac0 |  2c 77 72 61 70 70 65 64 29 5d 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | ,wrapped)]................(plist | 
| 18ae0 |  2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20    70 72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65  | -get.(car.(last.prompts)).:conte | 
| 18b00 |  6e 74 29 29 29 29 0a 0a 28 64 65 66 76 61 72 2d    6c 6f 63 61 6c 20 67 70 74 65 6c 2d 62 65 64 72  | nt))))..(defvar-local.gptel-bedr | 
| 18b20 |  6f 63 6b 2d 2d 73 74 72 65 61 6d 2d 63 75 72 73    6f 72 20 6e 69 6c 0a 20 20 22 4d 61 72 6b 65 72  | ock--stream-cursor.nil..."Marker | 
| 18b40 |  20 74 6f 20 69 6e 64 69 63 61 74 65 20 6c 61 73    74 20 70 6f 69 6e 74 20 70 61 72 73 65 64 2e 22  | .to.indicate.last.point.parsed." | 
| 18b60 |  29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64    20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72  | )..(cl-defmethod.gptel-curl--par | 
| 18b80 |  73 65 2d 73 74 72 65 61 6d 20 28 28 5f 62 61 63    6b 65 6e 64 20 67 70 74 65 6c 2d 62 65 64 72 6f  | se-stream.((_backend.gptel-bedro | 
| 18ba0 |  63 6b 29 20 69 6e 66 6f 29 0a 20 20 22 50 61 72    73 65 20 61 6e 20 41 57 53 20 42 65 64 72 6f 63  | ck).info)..."Parse.an.AWS.Bedroc | 
| 18bc0 |  6b 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70    6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 43 6f  | k.streaming.response.from.the.Co | 
| 18be0 |  6e 76 65 72 73 65 53 74 72 65 61 6d 20 41 50 49    2e 0a 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73  | nverseStream.API..INFO.is.a.plis | 
| 18c00 |  74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65    20 72 65 71 75 65 73 74 20 63 6f 6e 74 65 78 74  | t.containing.the.request.context | 
| 18c20 |  2e 22 0a 20 20 28 63 6c 2d 62 6c 6f 63 6b 20 66    6e 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75  | ."...(cl-block.fn.....(save-excu | 
| 18c40 |  72 73 69 6f 6e 0a 20 20 20 20 20 20 3b 3b 20 45    61 63 68 20 73 74 72 65 61 6d 69 6e 67 20 72 65  | rsion.......;;.Each.streaming.re | 
| 18c60 |  71 75 65 73 74 20 75 73 65 73 20 61 20 66 72 65    73 68 20 62 75 66 66 65 72 2c 20 73 6f 20 74 68  | quest.uses.a.fresh.buffer,.so.th | 
| 18c80 |  65 20 63 75 72 73 6f 72 20 73 74 61 72 74 73 20    6f 75 74 20 6e 75 6c 6c 2e 20 57 65 20 6b 65 65  | e.cursor.starts.out.null..We.kee | 
| 18ca0 |  70 20 69 74 20 75 6e 73 65 74 0a 20 20 20 20 20    20 3b 3b 20 75 6e 74 69 6c 20 77 65 20 68 61 76  | p.it.unset.......;;.until.we.hav | 
| 18cc0 |  65 20 72 65 63 65 69 76 65 64 20 61 6c 6c 20 74    68 65 20 68 65 61 64 65 72 73 0a 20 20 20 20 20  | e.received.all.the.headers...... | 
| 18ce0 |  20 28 77 68 65 6e 20 28 6e 75 6c 6c 20 67 70 74    65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 73 74 72 65  | .(when.(null.gptel-bedrock--stre | 
| 18d00 |  61 6d 2d 63 75 72 73 6f 72 29 0a 20 20 20 20 20    20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70  | am-cursor).........(goto-char.(p | 
| 18d20 |  6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20    20 20 20 28 75 6e 6c 65 73 73 20 28 73 65 61 72  | oint-min)).........(unless.(sear | 
| 18d40 |  63 68 2d 66 6f 72 77 61 72 64 20 22 5c 72 5c 6e    5c 72 5c 6e 22 20 6e 69 6c 20 74 29 20 28 63 6c  | ch-forward."\r\n\r\n".nil.t).(cl | 
| 18d60 |  2d 72 65 74 75 72 6e 2d 66 72 6f 6d 20 66 6e 29    29 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d  | -return-from.fn)).........(save- | 
| 18d80 |  72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20    20 20 20 20 20 20 28 6e 61 72 72 6f 77 2d 74 6f  | restriction...........(narrow-to | 
| 18da0 |  2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d    69 6e 29 20 28 70 6f 69 6e 74 29 29 20 3b 20 52  | -region.(point-min).(point)).;.R | 
| 18dc0 |  65 71 75 69 72 65 64 20 62 79 20 6d 61 69 6c 2d    66 65 74 63 68 2d 66 69 65 6c 64 0a 20 20 20 20  | equired.by.mail-fetch-field..... | 
| 18de0 |  20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e    74 65 6e 74 2d 74 79 70 65 20 28 6d 61 69 6c 2d  | ......(let.((content-type.(mail- | 
| 18e00 |  68 65 61 64 65 72 2d 70 61 72 73 65 2d 63 6f 6e    74 65 6e 74 2d 74 79 70 65 0a 20 20 20 20 20 20  | header-parse-content-type....... | 
| 18e20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 61 69 6c 2d 66  | .........................(mail-f | 
| 18e40 |  65 74 63 68 2d 66 69 65 6c 64 20 22 43 6f 6e 74    65 6e 74 2d 54 79 70 65 22 29 29 29 29 0a 20 20  | etch-field."Content-Type"))))... | 
| 18e60 |  20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73    73 65 72 74 20 63 6f 6e 74 65 6e 74 2d 74 79 70  | ..........(cl-assert.content-typ | 
| 18e80 |  65 20 6e 69 6c 20 22 4e 6f 20 43 6f 6e 74 65 6e    74 2d 54 79 70 65 20 68 65 61 64 65 72 20 66 6f  | e.nil."No.Content-Type.header.fo | 
| 18ea0 |  75 6e 64 22 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 73 74  | und").............(cl-assert.(st | 
| 18ec0 |  72 69 6e 67 2d 65 71 75 61 6c 20 28 63 61 72 20    63 6f 6e 74 65 6e 74 2d 74 79 70 65 29 20 22 61  | ring-equal.(car.content-type)."a | 
| 18ee0 |  70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e 61    6d 61 7a 6f 6e 2e 65 76 65 6e 74 73 74 72 65 61  | pplication/vnd.amazon.eventstrea | 
| 18f00 |  6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 74 20 22 55 6e  | m")........................t."Un | 
| 18f20 |  65 78 70 65 63 74 65 64 20 43 6f 6e 74 65 6e 74    2d 54 79 70 65 20 25 53 2c 20 65 78 70 65 63 74  | expected.Content-Type.%S,.expect | 
| 18f40 |  65 64 20 25 53 22 29 29 29 0a 20 20 20 20 20 20    20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 62 65  | ed.%S"))).........(setq.gptel-be | 
| 18f60 |  64 72 6f 63 6b 2d 2d 73 74 72 65 61 6d 2d 63 75    72 73 6f 72 20 28 70 6f 69 6e 74 2d 6d 61 72 6b  | drock--stream-cursor.(point-mark | 
| 18f80 |  65 72 29 29 0a 0a 20 20 20 20 20 20 20 20 3b 3b    20 3a 61 63 63 75 6d 75 6c 61 74 65 64 2d 65 76  | er))..........;;.:accumulated-ev | 
| 18fa0 |  65 6e 74 73 20 63 6f 6e 74 61 69 6e 73 20 74 68    65 20 65 76 65 6e 74 73 20 66 72 6f 6d 20 61 6e  | ents.contains.the.events.from.an | 
| 18fc0 |  20 69 6e 2d 70 72 6f 67 72 65 73 73 20 6d 65 73    73 61 67 65 2c 20 66 72 6f 6d 20 74 68 65 0a 20  | .in-progress.message,.from.the.. | 
| 18fe0 |  20 20 20 20 20 20 20 3b 3b 20 6d 65 73 73 61 67    65 53 74 61 72 74 20 6f 6e 77 61 72 64 73 2e 20  | .......;;.messageStart.onwards.. | 
| 19000 |  57 69 74 68 20 65 61 63 68 20 6d 65 73 73 61 67    65 53 74 6f 70 20 69 74 20 67 65 74 73 20 63 6c  | With.each.messageStop.it.gets.cl | 
| 19020 |  65 61 72 65 64 0a 20 20 20 20 20 20 20 20 28 70    6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 61  | eared.........(plist-put.info.:a | 
| 19040 |  63 63 75 6d 75 6c 61 74 65 64 2d 65 76 65 6e 74    73 20 6e 69 6c 29 29 0a 0a 20 20 20 20 20 20 3b  | ccumulated-events.nil))........; | 
| 19060 |  3b 20 53 74 61 72 74 20 6f 66 20 6d 61 69 6e 20    72 6f 75 74 69 6e 65 0a 20 20 20 20 20 20 28 6c  | ;.Start.of.main.routine.......(l | 
| 19080 |  65 74 20 28 28 61 63 63 2d 63 65 6c 6c 20 28 63    64 72 20 28 70 6c 69 73 74 2d 6d 65 6d 62 65 72  | et.((acc-cell.(cdr.(plist-member | 
| 190a0 |  20 69 6e 66 6f 20 3a 61 63 63 75 6d 75 6c 61 74    65 64 2d 65 76 65 6e 74 73 29 29 29 20 73 74 72  | .info.:accumulated-events))).str | 
| 190c0 |  69 6e 67 73 20 70 72 6f 6d 70 74 73 29 0a 20 20    20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72  | ings.prompts).........(goto-char | 
| 190e0 |  20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d    73 74 72 65 61 6d 2d 63 75 72 73 6f 72 29 0a 20  | .gptel-bedrock--stream-cursor).. | 
| 19100 |  20 20 20 20 20 20 20 28 77 68 69 6c 65 2d 6c 65    74 20 28 28 65 76 65 6e 74 20 28 67 70 74 65 6c  | .......(while-let.((event.(gptel | 
| 19120 |  2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d    73 74 72 65 61 6d 2d 6d 65 73 73 61 67 65 29 29  | -bedrock--parse-stream-message)) | 
| 19140 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74    20 28 28 65 76 65 6e 74 2d 74 79 70 65 20 28 61  | )...........(let.((event-type.(a | 
| 19160 |  73 73 6f 63 2d 64 65 66 61 75 6c 74 20 22 3a 65    76 65 6e 74 2d 74 79 70 65 22 20 28 70 6c 69 73  | ssoc-default.":event-type".(plis | 
| 19180 |  74 2d 67 65 74 20 65 76 65 6e 74 20 3a 68 65 61    64 65 72 73 29 29 29 29 0a 20 20 20 20 20 20 20  | t-get.event.:headers))))........ | 
| 191a0 |  20 20 20 20 20 28 77 68 65 6e 20 28 6d 65 6d 62    65 72 20 65 76 65 6e 74 2d 74 79 70 65 20 27 28  | .....(when.(member.event-type.'( | 
| 191c0 |  22 6d 65 73 73 61 67 65 53 74 61 72 74 22 20 22    63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 61 72  | "messageStart"."contentBlockStar | 
| 191e0 |  74 22 20 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b    44 65 6c 74 61 22 0a 20 20 20 20 20 20 20 20 20  | t"."contentBlockDelta".......... | 
| 19200 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63  | .............................."c | 
| 19220 |  6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 6f 70 22    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ontentBlockStop")).............. | 
| 19240 |  20 28 70 75 73 68 20 65 76 65 6e 74 20 28 63 61    72 20 61 63 63 2d 63 65 6c 6c 29 29 29 0a 20 20  | .(push.event.(car.acc-cell)))... | 
| 19260 |  20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65    20 65 76 65 6e 74 2d 74 79 70 65 0a 20 20 20 20  | ..........(pcase.event-type..... | 
| 19280 |  20 20 20 20 20 20 20 20 20 20 28 22 6d 65 74 61    64 61 74 61 22 0a 20 20 20 20 20 20 20 20 20 20  | ..........("metadata"........... | 
| 192a0 |  20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20    69 6e 66 6f 20 3a 69 6e 70 75 74 2d 74 6f 6b 65  | .....(plist-put.info.:input-toke | 
| 192c0 |  6e 73 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65    6c 74 20 65 76 65 6e 74 20 27 28 3a 70 61 79 6c  | ns.(map-nested-elt.event.'(:payl | 
| 192e0 |  6f 61 64 20 3a 75 73 61 67 65 20 3a 69 6e 70 75    74 54 6f 6b 65 6e 73 29 29 29 0a 20 20 20 20 20  | oad.:usage.:inputTokens)))...... | 
| 19300 |  20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74    2d 70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75  | ..........(plist-put.info.:outpu | 
| 19320 |  74 2d 74 6f 6b 65 6e 73 20 28 6d 61 70 2d 6e 65    73 74 65 64 2d 65 6c 74 20 65 76 65 6e 74 20 27  | t-tokens.(map-nested-elt.event.' | 
| 19340 |  28 3a 70 61 79 6c 6f 61 64 20 3a 75 73 61 67 65    20 3a 6f 75 74 70 75 74 54 6f 6b 65 6e 73 29 29  | (:payload.:usage.:outputTokens)) | 
| 19360 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 44  | ))...............("contentBlockD | 
| 19380 |  65 6c 74 61 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28  | elta"................(when-let.( | 
| 193a0 |  28 64 65 6c 74 61 2d 74 65 78 74 20 28 6d 61 70    2d 6e 65 73 74 65 64 2d 65 6c 74 20 65 76 65 6e  | (delta-text.(map-nested-elt.even | 
| 193c0 |  74 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a 64 65    6c 74 61 20 3a 74 65 78 74 29 29 29 29 0a 20 20  | t.'(:payload.:delta.:text))))... | 
| 193e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 75 73 68 20 64 65 6c 74 61 2d 74 65 78 74 20  | ...............(push.delta-text. | 
| 19400 |  73 74 72 69 6e 67 73 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 22 6d 65 73 73 61  | strings)))...............("messa | 
| 19420 |  67 65 53 74 6f 70 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 75 73 68 20 28 67 70  | geStop"................(push.(gp | 
| 19440 |  74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 73 73    65 6d 62 6c 65 2d 63 6f 6e 74 65 6e 74 2d 62 6c  | tel-bedrock--assemble-content-bl | 
| 19460 |  6f 63 6b 73 20 28 6e 72 65 76 65 72 73 65 20 28    63 61 72 20 61 63 63 2d 63 65 6c 6c 29 29 29 20  | ocks.(nreverse.(car.acc-cell))). | 
| 19480 |  70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63  | prompts)................(setf.(c | 
| 194a0 |  61 72 20 61 63 63 2d 63 65 6c 6c 29 20 6e 69 6c    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ar.acc-cell).nil)............... | 
| 194c0 |  20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f    20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 20 28 6d  | .(plist-put.info.:stop-reason.(m | 
| 194e0 |  61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 65 76    65 6e 74 20 27 28 3a 70 61 79 6c 6f 61 64 20 3a  | ap-nested-elt.event.'(:payload.: | 
| 19500 |  73 74 6f 70 52 65 61 73 6f 6e 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c  | stopReason)))................(pl | 
| 19520 |  69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 6d 65    73 73 61 67 65 2d 63 6f 6d 70 6c 65 74 65 20 74  | ist-put.info.:message-complete.t | 
| 19540 |  29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d    6f 76 65 2d 6d 61 72 6b 65 72 20 67 70 74 65 6c  | ))))).........(move-marker.gptel | 
| 19560 |  2d 62 65 64 72 6f 63 6b 2d 2d 73 74 72 65 61 6d    2d 63 75 72 73 6f 72 20 28 70 6f 69 6e 74 29 29  | -bedrock--stream-cursor.(point)) | 
| 19580 |  0a 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73    74 20 28 6d 65 73 73 61 67 65 20 70 72 6f 6d 70  | ..........(dolist.(message.promp | 
| 195a0 |  74 73 29 20 28 67 70 74 65 6c 2d 62 65 64 72 6f    63 6b 2d 2d 72 65 63 6f 72 64 2d 74 6f 6f 6c 2d  | ts).(gptel-bedrock--record-tool- | 
| 195c0 |  75 73 65 20 6d 65 73 73 61 67 65 20 69 6e 66 6f    29 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c  | use.message.info)).........(appl | 
| 195e0 |  79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76    65 72 73 65 20 73 74 72 69 6e 67 73 29 29 29 29  | y.#'concat.(nreverse.strings)))) | 
| 19600 |  29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c    2d 62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d  | ))..(defun.gptel-bedrock--parse- | 
| 19620 |  73 74 72 65 61 6d 2d 6d 65 73 73 61 67 65 20 28    29 0a 20 20 22 50 61 72 73 65 20 41 57 53 20 42  | stream-message.()..."Parse.AWS.B | 
| 19640 |  65 64 72 6f 63 6b 20 65 76 65 6e 74 2d 73 74 72    65 61 6d 20 6d 65 73 73 61 67 65 20 73 74 61 72  | edrock.event-stream.message.star | 
| 19660 |  74 69 6e 67 20 61 74 20 63 75 72 72 65 6e 74 20    70 6f 73 69 74 69 6f 6e 2e 0a 50 6f 69 6e 74 20  | ting.at.current.position..Point. | 
| 19680 |  73 68 6f 75 6c 64 20 62 65 20 61 74 20 74 68 65    20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 61 6e  | should.be.at.the.beginning.of.an | 
| 196a0 |  20 65 76 65 6e 74 20 69 6e 20 74 68 65 20 60 76    6e 64 2e 61 6d 61 7a 6f 6e 2e 65 76 65 6e 74 2d  | .event.in.the.`vnd.amazon.event- | 
| 196c0 |  73 74 72 65 61 6d 27 0a 66 6f 72 6d 61 74 2e 20    20 52 65 74 75 72 6e 73 20 70 6c 69 73 74 20 77  | stream'.format...Returns.plist.w | 
| 196e0 |  69 74 68 20 3a 68 65 61 64 65 72 73 20 61 6e 64    20 3a 70 61 79 6c 6f 61 64 20 6b 65 79 73 20 69  | ith.:headers.and.:payload.keys.i | 
| 19700 |  66 20 73 75 63 63 65 73 73 66 75 6c 2c 20 6e 69    6c 20 69 66 0a 69 6e 63 6f 6d 70 6c 65 74 65 2e  | f.successful,.nil.if.incomplete. | 
| 19720 |  22 0a 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 67    69 74 68 75 62 2e 63 6f 6d 2f 61 77 73 6c 61 62  | "...;;.https://github.com/awslab | 
| 19740 |  73 2f 61 77 73 2d 63 2d 65 76 65 6e 74 2d 73 74    72 65 61 6d 20 68 61 73 20 64 6f 63 75 6d 65 6e  | s/aws-c-event-stream.has.documen | 
| 19760 |  74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66    6f 72 6d 61 74 0a 20 20 3b 3b 20 54 68 65 20 66  | tation.of.this.format...;;.The.f | 
| 19780 |  6f 72 6d 61 74 20 63 6f 6e 73 69 73 74 73 20 6f    66 20 74 68 72 65 65 20 6d 61 69 6e 20 73 65 63  | ormat.consists.of.three.main.sec | 
| 197a0 |  74 69 6f 6e 73 3a 20 50 72 65 6c 75 64 65 2c 20    44 61 74 61 2c 20 61 6e 64 20 4d 65 73 73 61 67  | tions:.Prelude,.Data,.and.Messag | 
| 197c0 |  65 20 43 52 43 2e 0a 20 20 3b 3b 20 31 2e 20 50    72 65 6c 75 64 65 20 28 31 32 20 62 79 74 65 73  | e.CRC....;;.1..Prelude.(12.bytes | 
| 197e0 |  29 0a 20 20 3b 3b 20 20 20 20 61 2e 20 54 6f 74    61 6c 20 42 79 74 65 20 4c 65 6e 67 74 68 20 28  | )...;;....a..Total.Byte.Length.( | 
| 19800 |  34 20 62 79 74 65 73 29 3a 20 53 70 65 63 69 66    69 65 73 20 74 68 65 20 74 6f 74 61 6c 20 6c 65  | 4.bytes):.Specifies.the.total.le | 
| 19820 |  6e 67 74 68 20 6f 66 20 74 68 65 20 6d 65 73 73    61 67 65 2e 0a 20 20 3b 3b 20 20 20 20 62 2e 20  | ngth.of.the.message....;;....b.. | 
| 19840 |  48 65 61 64 65 72 73 20 42 79 74 65 20 4c 65 6e    67 74 68 20 28 34 20 62 79 74 65 73 29 3a 20 49  | Headers.Byte.Length.(4.bytes):.I | 
| 19860 |  6e 64 69 63 61 74 65 73 20 74 68 65 20 6c 65 6e    67 74 68 20 6f 66 20 74 68 65 20 68 65 61 64 65  | ndicates.the.length.of.the.heade | 
| 19880 |  72 73 20 73 65 63 74 69 6f 6e 2e 0a 20 20 3b 3b    20 20 20 20 63 2e 20 50 72 65 6c 75 64 65 20 43  | rs.section....;;....c..Prelude.C | 
| 198a0 |  52 43 20 28 34 20 62 79 74 65 73 29 3a 20 41 20    43 52 43 20 76 61 6c 75 65 20 66 6f 72 20 76 61  | RC.(4.bytes):.A.CRC.value.for.va | 
| 198c0 |  6c 69 64 61 74 69 6e 67 20 74 68 65 20 69 6e 74    65 67 72 69 74 79 20 6f 66 20 74 68 65 20 70 72  | lidating.the.integrity.of.the.pr | 
| 198e0 |  65 6c 75 64 65 2e 0a 20 20 3b 3b 20 32 2e 20 44    61 74 61 20 28 76 61 72 69 61 62 6c 65 20 6c 65  | elude....;;.2..Data.(variable.le | 
| 19900 |  6e 67 74 68 29 0a 20 20 3b 3b 20 20 20 20 61 2e    20 48 65 61 64 65 72 73 3a 20 41 6e 20 61 72 72  | ngth)...;;....a..Headers:.An.arr | 
| 19920 |  61 79 20 6f 66 20 70 61 63 6b 65 64 20 68 65 61    64 65 72 73 2e 20 45 61 63 68 20 68 65 61 64 65  | ay.of.packed.headers..Each.heade | 
| 19940 |  72 20 68 61 73 20 61 20 73 70 65 63 69 66 69 63    20 66 6f 72 6d 61 74 20 64 6f 63 75 6d 65 6e 74  | r.has.a.specific.format.document | 
| 19960 |  65 64 20 69 6e 0a 20 20 3b 3b 20 20 20 20 20 20    20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d  | ed.in...;;.......gptel-bedrock-- | 
| 19980 |  70 61 72 73 65 2d 68 65 61 64 65 72 73 0a 20 20    3b 3b 20 20 20 20 62 2e 20 50 61 79 6c 6f 61 64  | parse-headers...;;....b..Payload | 
| 199a0 |  3a 20 54 68 65 20 6d 61 69 6e 20 6d 65 73 73 61    67 65 20 63 6f 6e 74 65 6e 74 2c 20 61 6c 73 6f  | :.The.main.message.content,.also | 
| 199c0 |  20 6f 66 20 76 61 72 69 61 62 6c 65 20 6c 65 6e    67 74 68 2e 20 4c 65 6e 67 74 68 20 63 61 6e 20  | .of.variable.length..Length.can. | 
| 199e0 |  62 65 20 63 6f 6d 70 75 74 65 64 20 66 72 6f 6d    0a 20 20 3b 3b 20 20 20 20 20 20 20 74 68 65 20  | be.computed.from...;;.......the. | 
| 19a00 |  70 72 65 6c 75 64 65 20 66 69 65 6c 64 73 20 62    79 20 73 75 62 74 72 61 63 74 69 6e 67 20 74 68  | prelude.fields.by.subtracting.th | 
| 19a20 |  65 20 70 72 65 6c 75 64 65 20 6c 65 6e 67 74 68    2c 20 68 65 61 64 65 72 73 20 6c 65 6e 67 74 68  | e.prelude.length,.headers.length | 
| 19a40 |  2c 20 61 6e 64 20 6d 65 73 73 61 67 65 20 43 52    43 0a 20 20 3b 3b 20 20 20 20 20 20 20 6c 65 6e  | ,.and.message.CRC...;;.......len | 
| 19a60 |  67 74 68 20 66 72 6f 6d 20 74 68 65 20 74 6f 74    61 6c 2e 0a 20 20 3b 3b 20 33 2e 20 4d 65 73 73  | gth.from.the.total....;;.3..Mess | 
| 19a80 |  61 67 65 20 43 52 43 20 28 34 20 62 79 74 65 73    29 3a 20 41 20 34 2d 62 79 74 65 20 43 52 43 20  | age.CRC.(4.bytes):.A.4-byte.CRC. | 
| 19aa0 |  74 6f 20 76 61 6c 69 64 61 74 65 20 74 68 65 20    69 6e 74 65 67 72 69 74 79 20 6f 66 20 74 68 65  | to.validate.the.integrity.of.the | 
| 19ac0 |  20 65 6e 74 69 72 65 20 6d 65 73 73 61 67 65 2e    0a 0a 20 20 3b 3b 20 28 70 6f 69 6e 74 2d 6d 61  | .entire.message.....;;.(point-ma | 
| 19ae0 |  78 29 20 69 73 20 74 68 65 20 70 6f 73 69 74 69    6f 6e 20 61 66 74 65 72 20 74 68 65 20 6c 61 73  | x).is.the.position.after.the.las | 
| 19b00 |  74 20 63 68 61 72 61 63 74 65 72 2c 20 68 65 6e    63 65 20 74 68 65 20 75 73 65 20 6f 66 20 3e 3d  | t.character,.hence.the.use.of.>= | 
| 19b20 |  20 61 6e 64 20 6e 6f 74 20 3e 20 62 65 6c 6f 77    0a 20 20 28 77 68 65 6e 20 28 3e 3d 20 28 2d 20  | .and.not.>.below...(when.(>=.(-. | 
| 19b40 |  28 70 6f 69 6e 74 2d 6d 61 78 29 20 28 70 6f 69    6e 74 29 29 20 31 32 29 0a 20 20 20 20 28 6c 65  | (point-max).(point)).12).....(le | 
| 19b60 |  74 2a 20 28 28 70 72 65 6c 75 64 65 2d 73 74 61    72 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20  | t*.((prelude-start.(point))..... | 
| 19b80 |  20 20 20 20 20 20 20 28 70 72 65 6c 75 64 65 2d    6c 65 6e 67 74 68 20 31 32 29 0a 20 20 20 20 20  | .......(prelude-length.12)...... | 
| 19ba0 |  20 20 20 20 20 20 28 70 72 65 6c 75 64 65 2d 65    6e 64 20 28 2b 20 70 72 65 6c 75 64 65 2d 73 74  | ......(prelude-end.(+.prelude-st | 
| 19bc0 |  61 72 74 20 70 72 65 6c 75 64 65 2d 6c 65 6e 67    74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | art.prelude-length))............ | 
| 19be0 |  28 70 72 65 6c 75 64 65 20 28 62 75 66 66 65 72    2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72  | (prelude.(buffer-substring-no-pr | 
| 19c00 |  6f 70 65 72 74 69 65 73 20 70 72 65 6c 75 64 65    2d 73 74 61 72 74 20 70 72 65 6c 75 64 65 2d 65  | operties.prelude-start.prelude-e | 
| 19c20 |  6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    28 74 6f 74 61 6c 2d 6c 65 6e 67 74 68 20 28 67  | nd))............(total-length.(g | 
| 19c40 |  70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79    74 65 73 2d 74 6f 2d 69 6e 74 33 32 20 28 73 75  | ptel-bedrock--bytes-to-int32.(su | 
| 19c60 |  62 73 74 72 69 6e 67 20 70 72 65 6c 75 64 65 20    30 20 34 29 29 29 0a 20 20 20 20 20 20 20 20 20  | bstring.prelude.0.4))).......... | 
| 19c80 |  20 20 28 68 65 61 64 65 72 73 2d 6c 65 6e 67 74    68 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b  | ..(headers-length.(gptel-bedrock | 
| 19ca0 |  2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 33 32    20 28 73 75 62 73 74 72 69 6e 67 20 70 72 65 6c  | --bytes-to-int32.(substring.prel | 
| 19cc0 |  75 64 65 20 34 20 38 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 28 68 65 61 64 65 72 73 2d 73  | ude.4.8)))............(headers-s | 
| 19ce0 |  74 61 72 74 20 70 72 65 6c 75 64 65 2d 65 6e 64    29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 65  | tart.prelude-end)............(he | 
| 19d00 |  61 64 65 72 73 2d 65 6e 64 20 28 2b 20 68 65 61    64 65 72 73 2d 73 74 61 72 74 20 68 65 61 64 65  | aders-end.(+.headers-start.heade | 
| 19d20 |  72 73 2d 6c 65 6e 67 74 68 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 70  | rs-length))............headers.p | 
| 19d40 |  61 79 6c 6f 61 64 29 0a 20 20 20 20 20 20 3b 3b    20 57 65 20 64 6f 6e 27 74 20 76 61 6c 69 64 61  | ayload).......;;.We.don't.valida | 
| 19d60 |  74 65 20 65 69 74 68 65 72 20 43 52 43 20 62 65    63 61 75 73 65 20 69 73 6e 27 74 20 74 68 61 74  | te.either.CRC.because.isn't.that | 
| 19d80 |  20 77 68 61 74 20 74 68 65 20 6e 65 74 77 6f 72    6b 69 6e 67 20 73 74 61 63 6b 20 69 73 20 66 6f  | .what.the.networking.stack.is.fo | 
| 19da0 |  72 3f 0a 0a 20 20 20 20 20 20 28 77 68 65 6e 20    28 3e 3d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20  | r?........(when.(>=.(point-max). | 
| 19dc0 |  28 2b 20 70 72 65 6c 75 64 65 2d 73 74 61 72 74    20 74 6f 74 61 6c 2d 6c 65 6e 67 74 68 29 29 0a  | (+.prelude-start.total-length)). | 
| 19de0 |  20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68    61 72 20 68 65 61 64 65 72 73 2d 73 74 61 72 74  | ........(goto-char.headers-start | 
| 19e00 |  29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20    68 65 61 64 65 72 73 20 28 67 70 74 65 6c 2d 62  | ).........(setq.headers.(gptel-b | 
| 19e20 |  65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 68 65    61 64 65 72 73 20 28 62 75 66 66 65 72 2d 73 75  | edrock--parse-headers.(buffer-su | 
| 19e40 |  62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20    68 65 61 64 65 72 73 2d 65 6e 64 29 29 29 0a 20  | bstring.(point).headers-end))).. | 
| 19e60 |  20 20 20 20 20 20 20 28 63 6c 2d 61 73 73 65 72    74 20 28 65 71 75 61 6c 20 28 61 73 73 6f 63 2d  | .......(cl-assert.(equal.(assoc- | 
| 19e80 |  64 65 66 61 75 6c 74 20 22 3a 6d 65 73 73 61 67    65 2d 74 79 70 65 22 20 68 65 61 64 65 72 73 29  | default.":message-type".headers) | 
| 19ea0 |  20 22 65 76 65 6e 74 22 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 74 20 22  | ."event")....................t." | 
| 19ec0 |  55 6e 6b 6e 6f 77 6e 20 6d 65 73 73 61 67 65 20    74 79 70 65 20 25 53 3b 20 65 78 70 65 63 74 65  | Unknown.message.type.%S;.expecte | 
| 19ee0 |  64 20 25 53 22 29 0a 20 20 20 20 20 20 20 20 28    63 6c 2d 61 73 73 65 72 74 20 28 65 71 75 61 6c  | d.%S").........(cl-assert.(equal | 
| 19f00 |  20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20    22 3a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 22 20  | .(assoc-default.":content-type". | 
| 19f20 |  68 65 61 64 65 72 73 29 20 22 61 70 70 6c 69 63    61 74 69 6f 6e 2f 6a 73 6f 6e 22 29 0a 20 20 20  | headers)."application/json").... | 
| 19f40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    74 20 22 55 6e 65 78 70 65 63 74 65 64 20 63 6f  | ................t."Unexpected.co | 
| 19f60 |  6e 74 65 6e 74 2d 74 79 70 65 20 25 53 20 69 73    20 6e 6f 74 20 25 53 22 29 0a 0a 20 20 20 20 20  | ntent-type.%S.is.not.%S")....... | 
| 19f80 |  20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 68 65    61 64 65 72 73 2d 65 6e 64 29 0a 20 20 20 20 20  | ...(goto-char.headers-end)...... | 
| 19fa0 |  20 20 20 28 73 65 74 71 20 70 61 79 6c 6f 61 64    20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65  | ...(setq.payload.(gptel--json-re | 
| 19fc0 |  61 64 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65    74 2a 20 28 28 6d 65 73 73 61 67 65 2d 63 72 63  | ad)).........(let*.((message-crc | 
| 19fe0 |  20 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 61 79 6c 6f 61 64 2d 6c 65 6e 67  | .4)................(payload-leng | 
| 1a000 |  74 68 20 28 2d 20 74 6f 74 61 6c 2d 6c 65 6e 67    74 68 20 68 65 61 64 65 72 73 2d 6c 65 6e 67 74  | th.(-.total-length.headers-lengt | 
| 1a020 |  68 20 70 72 65 6c 75 64 65 2d 6c 65 6e 67 74 68    20 6d 65 73 73 61 67 65 2d 63 72 63 29 29 29 0a  | h.prelude-length.message-crc))). | 
| 1a040 |  20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 61 73    73 65 72 74 20 28 3d 20 28 2d 20 28 70 6f 69 6e  | ..........(cl-assert.(=.(-.(poin | 
| 1a060 |  74 29 20 68 65 61 64 65 72 73 2d 65 6e 64 29 20    70 61 79 6c 6f 61 64 2d 6c 65 6e 67 74 68 29 0a  | t).headers-end).payload-length). | 
| 1a080 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 74 20 22 55 6e 65 78 70 65 63 74  | .....................t."Unexpect | 
| 1a0a0 |  65 64 20 70 61 79 6c 6f 61 64 20 6c 65 6e 67 74    68 20 25 64 3b 20 65 78 70 65 63 74 65 64 20 25  | ed.payload.length.%d;.expected.% | 
| 1a0c0 |  64 2e 22 29 29 0a 0a 20 20 20 20 20 20 20 20 28    67 6f 74 6f 2d 63 68 61 72 20 28 2b 20 70 72 65  | d."))..........(goto-char.(+.pre | 
| 1a0e0 |  6c 75 64 65 2d 73 74 61 72 74 20 74 6f 74 61 6c    2d 6c 65 6e 67 74 68 29 29 0a 20 20 20 20 20 20  | lude-start.total-length))....... | 
| 1a100 |  20 20 60 28 3a 68 65 61 64 65 72 73 20 2c 68 65    61 64 65 72 73 20 3a 70 61 79 6c 6f 61 64 20 2c  | ..`(:headers.,headers.:payload., | 
| 1a120 |  70 61 79 6c 6f 61 64 29 29 29 29 29 0a 0a 28 64    65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f  | payload)))))..(defun.gptel-bedro | 
| 1a140 |  63 6b 2d 2d 70 61 72 73 65 2d 68 65 61 64 65 72    73 20 28 68 65 61 64 65 72 73 2d 64 61 74 61 29  | ck--parse-headers.(headers-data) | 
| 1a160 |  0a 20 20 22 50 61 72 73 65 20 48 45 41 44 45 52    53 2d 44 41 54 41 20 69 6e 74 6f 20 61 6c 69 73  | ..."Parse.HEADERS-DATA.into.alis | 
| 1a180 |  74 20 6f 66 20 28 4e 41 4d 45 20 2e 20 56 41 4c    55 45 29 2e 0a 4b 65 79 73 20 61 72 65 20 73 74  | t.of.(NAME...VALUE)..Keys.are.st | 
| 1a1a0 |  72 69 6e 67 2d 76 61 6c 75 65 64 2c 20 6c 6f 77    65 72 2d 63 61 73 65 64 20 6e 61 6d 65 73 2e 22  | ring-valued,.lower-cased.names." | 
| 1a1c0 |  0a 20 20 3b 3b 20 48 65 61 64 65 72 20 77 69 72    65 20 66 6f 72 6d 61 74 3a 0a 20 20 3b 3b 20 20  | ...;;.Header.wire.format:...;;.. | 
| 1a1e0 |  20 31 2e 20 48 65 61 64 65 72 20 4e 61 6d 65 20    42 79 74 65 20 4c 65 6e 67 74 68 20 28 31 20 62  | .1..Header.Name.Byte.Length.(1.b | 
| 1a200 |  79 74 65 29 3a 20 53 70 65 63 69 66 69 65 73 20    74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  | yte):.Specifies.the.length.of.th | 
| 1a220 |  65 20 68 65 61 64 65 72 20 6e 61 6d 65 2e 0a 20    20 3b 3b 20 20 20 32 2e 20 48 65 61 64 65 72 20  | e.header.name....;;...2..Header. | 
| 1a240 |  4e 61 6d 65 20 28 53 74 72 69 6e 67 29 20 28 56    61 72 69 61 62 6c 65 20 6c 65 6e 67 74 68 29 3a  | Name.(String).(Variable.length): | 
| 1a260 |  20 43 6f 6e 74 61 69 6e 73 20 74 68 65 20 6e 61    6d 65 20 6f 66 20 74 68 65 20 68 65 61 64 65 72  | .Contains.the.name.of.the.header | 
| 1a280 |  2e 0a 20 20 3b 3b 20 20 20 33 2e 20 48 65 61 64    65 72 20 56 61 6c 75 65 20 54 79 70 65 20 28 31  | ....;;...3..Header.Value.Type.(1 | 
| 1a2a0 |  20 62 79 74 65 29 3a 20 49 64 65 6e 74 69 66 69    65 73 20 74 68 65 20 74 79 70 65 20 6f 66 20 74  | .byte):.Identifies.the.type.of.t | 
| 1a2c0 |  68 65 20 68 65 61 64 65 72 20 76 61 6c 75 65 2e    0a 20 20 3b 3b 20 20 20 34 2e 20 56 61 6c 75 65  | he.header.value....;;...4..Value | 
| 1a2e0 |  20 53 74 72 69 6e 67 20 42 79 74 65 20 4c 65 6e    67 74 68 20 28 32 20 62 79 74 65 73 29 3a 20 49  | .String.Byte.Length.(2.bytes):.I | 
| 1a300 |  6e 64 69 63 61 74 65 73 20 74 68 65 20 6c 65 6e    67 74 68 20 6f 66 20 74 68 65 20 76 61 6c 75 65  | ndicates.the.length.of.the.value | 
| 1a320 |  20 73 74 72 69 6e 67 2e 0a 20 20 3b 3b 20 20 20    35 2e 20 56 61 6c 75 65 20 28 56 61 72 69 61 62  | .string....;;...5..Value.(Variab | 
| 1a340 |  6c 65 20 6c 65 6e 67 74 68 29 3a 20 48 6f 6c 64    73 20 74 68 65 20 61 63 74 75 61 6c 20 76 61 6c  | le.length):.Holds.the.actual.val | 
| 1a360 |  75 65 20 62 79 74 65 73 0a 20 20 28 6c 65 74 20    28 28 70 6f 73 20 30 29 20 28 6d 61 78 20 28 6c  | ue.bytes...(let.((pos.0).(max.(l | 
| 1a380 |  65 6e 67 74 68 20 68 65 61 64 65 72 73 2d 64 61    74 61 29 29 20 68 65 61 64 65 72 73 29 0a 20 20  | ength.headers-data)).headers)... | 
| 1a3a0 |  20 20 28 63 6c 2d 66 6c 65 74 20 28 28 70 6f 73    2b 2b 20 28 29 20 28 70 72 6f 67 31 20 70 6f 73  | ..(cl-flet.((pos++.().(prog1.pos | 
| 1a3c0 |  20 28 63 6c 2d 69 6e 63 66 20 70 6f 73 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | .(cl-incf.pos)))...............( | 
| 1a3e0 |  2b 2b 70 6f 73 20 28 6e 29 20 28 63 6c 2d 69 6e    63 66 20 70 6f 73 20 6e 29 29 0a 20 20 20 20 20  | ++pos.(n).(cl-incf.pos.n))...... | 
| 1a400 |  20 20 20 20 20 20 20 20 20 28 75 74 66 38 20 28    75 6e 69 62 79 74 65 2d 73 74 72 69 6e 67 29 20  | .........(utf8.(unibyte-string). | 
| 1a420 |  28 64 65 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73    74 72 69 6e 67 20 75 6e 69 62 79 74 65 2d 73 74  | (decode-coding-string.unibyte-st | 
| 1a440 |  72 69 6e 67 20 27 75 74 66 2d 38 20 74 29 29 29    0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 3c  | ring.'utf-8.t))).......(while.(< | 
| 1a460 |  20 70 6f 73 20 6d 61 78 29 0a 20 20 20 20 20 20    20 20 28 6c 65 74 2a 20 28 28 6e 61 6d 65 2d 6c  | .pos.max).........(let*.((name-l | 
| 1a480 |  65 6e 20 28 61 72 65 66 20 68 65 61 64 65 72 73    2d 64 61 74 61 20 28 70 6f 73 2b 2b 29 29 29 0a  | en.(aref.headers-data.(pos++))). | 
| 1a4a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6e 61 6d 65 20 28 73 75 62 73 74 72 69 6e 67 20  | ...............(name.(substring. | 
| 1a4c0 |  68 65 61 64 65 72 73 2d 64 61 74 61 20 70 6f 73    20 28 2b 2b 70 6f 73 20 6e 61 6d 65 2d 6c 65 6e  | headers-data.pos.(++pos.name-len | 
| 1a4e0 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 74 79 70 65 20 28 61 72 65 66 20 68  | )))................(type.(aref.h | 
| 1a500 |  65 61 64 65 72 73 2d 64 61 74 61 20 28 70 6f 73    2b 2b 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | eaders-data.(pos++)))........... | 
| 1a520 |  20 20 20 20 20 28 76 61 6c 75 65 2d 6c 65 6e 20    28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d  | .....(value-len.(gptel-bedrock-- | 
| 1a540 |  62 79 74 65 73 2d 74 6f 2d 69 6e 74 31 36 20 28    73 75 62 73 74 72 69 6e 67 20 68 65 61 64 65 72  | bytes-to-int16.(substring.header | 
| 1a560 |  73 2d 64 61 74 61 20 70 6f 73 20 28 2b 2b 70 6f    73 20 32 29 29 29 29 0a 20 20 20 20 20 20 20 20  | s-data.pos.(++pos.2))))......... | 
| 1a580 |  20 20 20 20 20 20 20 28 76 61 6c 75 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | .......(value.................(p | 
| 1a5a0 |  63 61 73 65 20 74 79 70 65 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48  | case.type...................;;.H | 
| 1a5c0 |  65 61 64 65 72 20 74 79 70 65 73 20 66 72 6f 6d    20 68 74 74 70 73 3a 2f 2f 61 77 73 6c 61 62 73  | eader.types.from.https://awslabs | 
| 1a5e0 |  2e 67 69 74 68 75 62 2e 69 6f 2f 61 77 73 2d 63    72 74 2d 70 79 74 68 6f 6e 2f 61 70 69 2f 65 76  | .github.io/aws-crt-python/api/ev | 
| 1a600 |  65 6e 74 73 74 72 65 61 6d 2e 68 74 6d 6c 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | entstream.html.................. | 
| 1a620 |  20 28 30 20 74 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 31 20 3a 6a 73 6f  | .(0.t)...................(1.:jso | 
| 1a640 |  6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 32 20 28 6c  | n-false)...................(2.(l | 
| 1a660 |  65 74 20 28 28 72 65 73 20 28 61 72 65 66 20 68    65 61 64 65 72 73 2d 64 61 74 61 20 28 70 6f 73  | et.((res.(aref.headers-data.(pos | 
| 1a680 |  2b 2b 29 29 29 29 20 3b 20 69 6e 74 38 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ++)))).;.int8................... | 
| 1a6a0 |  20 20 20 20 20 28 69 66 20 28 3e 20 72 65 73 20    31 32 37 29 20 28 2d 20 72 65 73 20 32 35 36 29  | .....(if.(>.res.127).(-.res.256) | 
| 1a6c0 |  20 72 65 73 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 33 20 28 67 70  | .res)))...................(3.(gp | 
| 1a6e0 |  74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 62 79 74    65 73 2d 74 6f 2d 69 6e 74 31 36 20 28 73 75 62  | tel-bedrock--bytes-to-int16.(sub | 
| 1a700 |  73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64    61 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 32  | string.headers-data.pos.(++pos.2 | 
| 1a720 |  29 29 29 29 20 3b 20 69 6e 74 31 36 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | )))).;.int16...................( | 
| 1a740 |  34 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b    2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 33 32  | 4.(gptel-bedrock--bytes-to-int32 | 
| 1a760 |  20 28 73 75 62 73 74 72 69 6e 67 20 68 65 61 64    65 72 73 2d 64 61 74 61 20 70 6f 73 20 28 2b 2b  | .(substring.headers-data.pos.(++ | 
| 1a780 |  70 6f 73 20 34 29 29 29 29 20 3b 20 69 6e 74 33    32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | pos.4)))).;.int32............... | 
| 1a7a0 |  20 20 20 20 28 35 20 28 67 70 74 65 6c 2d 62 65    64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d  | ....(5.(gptel-bedrock--bytes-to- | 
| 1a7c0 |  69 6e 74 36 34 20 28 73 75 62 73 74 72 69 6e 67    20 68 65 61 64 65 72 73 2d 64 61 74 61 20 70 6f  | int64.(substring.headers-data.po | 
| 1a7e0 |  73 20 28 2b 2b 70 6f 73 20 38 29 29 29 29 20 3b    20 69 6e 74 36 34 0a 20 20 20 20 20 20 20 20 20  | s.(++pos.8)))).;.int64.......... | 
| 1a800 |  20 20 20 20 20 20 20 20 20 28 36 20 28 73 75 62    73 74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64  | .........(6.(substring.headers-d | 
| 1a820 |  61 74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 76    61 6c 75 65 2d 6c 65 6e 29 29 29 20 20 20 20 20  | ata.pos.(++pos.value-len)))..... | 
| 1a840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3b 20 72 61 77 20 62 79 74 65 73 0a  | ....................;.raw.bytes. | 
| 1a860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 37 20 28 75 74 66 38 20 28 73 75 62 73  | ..................(7.(utf8.(subs | 
| 1a880 |  74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 61    74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 76 61  | tring.headers-data.pos.(++pos.va | 
| 1a8a0 |  6c 75 65 2d 6c 65 6e 29 29 29 29 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 75  | lue-len))))..................;.u | 
| 1a8c0 |  74 66 38 20 73 74 72 69 6e 67 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 38 20  | tf8.string...................(8. | 
| 1a8e0 |  28 64 65 63 6f 64 65 2d 74 69 6d 65 20 20 20 20    20 20 20 3b 20 36 34 20 62 69 74 20 69 6e 74 20  | (decode-time.......;.64.bit.int. | 
| 1a900 |  77 69 74 68 20 73 65 63 6f 6e 64 73 20 73 69 6e    63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63  | with.seconds.since.the.Unix.epoc | 
| 1a920 |  68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62  | h.......................(gptel-b | 
| 1a940 |  65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f    2d 69 6e 74 36 34 20 28 73 75 62 73 74 72 69 6e  | edrock--bytes-to-int64.(substrin | 
| 1a960 |  67 20 68 65 61 64 65 72 73 2d 64 61 74 61 20 70    6f 73 20 28 2b 2b 70 6f 73 20 38 29 29 29 20 74  | g.headers-data.pos.(++pos.8))).t | 
| 1a980 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 39 20 28 67 70 74 65 6c 2d 62  | ))...................(9.(gptel-b | 
| 1a9a0 |  65 64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f    2d 75 75 69 64 20 3b 20 31 36 20 62 79 74 65 20  | edrock--bytes-to-uuid.;.16.byte. | 
| 1a9c0 |  55 55 49 44 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73  | UUID.......................(subs | 
| 1a9e0 |  74 72 69 6e 67 20 68 65 61 64 65 72 73 2d 64 61    74 61 20 70 6f 73 20 28 2b 2b 70 6f 73 20 31 36  | tring.headers-data.pos.(++pos.16 | 
| 1aa00 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 5f 20 28 65 72 72 6f 72  | ))))...................(_.(error | 
| 1aa20 |  20 22 55 6e 6b 6e 6f 77 6e 20 68 65 61 64 65 72    20 74 79 70 65 3a 20 25 64 22 20 74 79 70 65 29  | ."Unknown.header.type:.%d".type) | 
| 1aa40 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    70 75 73 68 20 28 63 6f 6e 73 20 28 64 6f 77 6e  | ))))...........(push.(cons.(down | 
| 1aa60 |  63 61 73 65 20 28 75 74 66 38 20 6e 61 6d 65 29    29 20 76 61 6c 75 65 29 20 68 65 61 64 65 72 73  | case.(utf8.name)).value).headers | 
| 1aa80 |  29 29 29 0a 20 20 20 20 20 20 28 63 6c 2d 61 73    73 65 72 74 20 28 3d 20 70 6f 73 20 6d 61 78 29  | ))).......(cl-assert.(=.pos.max) | 
| 1aaa0 |  20 74 20 22 48 65 61 64 65 72 73 20 64 69 64 20    6e 6f 74 20 70 61 72 73 65 20 63 6c 65 61 6e 6c  | .t."Headers.did.not.parse.cleanl | 
| 1aac0 |  79 2e 20 70 6f 73 3d 25 64 20 20 68 65 61 64 65    72 2d 6c 65 6e 3d 25 64 22 29 0a 20 20 20 20 20  | y..pos=%d..header-len=%d")...... | 
| 1aae0 |  20 68 65 61 64 65 72 73 29 29 29 0a 0a 28 64 65    66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72 6f 63  | .headers)))..(defun.gptel-bedroc | 
| 1ab00 |  6b 2d 2d 62 79 74 65 73 2d 74 6f 2d 69 6e 74 31    36 20 28 62 79 74 65 73 29 0a 20 20 22 43 6f 6e  | k--bytes-to-int16.(bytes)..."Con | 
| 1ab20 |  76 65 72 74 20 32 2d 62 79 74 65 20 73 74 72 69    6e 67 20 42 59 54 45 53 20 74 6f 20 62 69 67 2d  | vert.2-byte.string.BYTES.to.big- | 
| 1ab40 |  65 6e 64 69 61 6e 20 73 69 67 6e 65 64 20 69 6e    74 65 67 65 72 2e 22 0a 20 20 28 6c 65 74 20 28  | endian.signed.integer."...(let.( | 
| 1ab60 |  28 62 30 20 28 6c 6f 67 61 6e 64 20 28 61 72 65    66 20 62 79 74 65 73 20 30 29 20 32 35 35 29 29  | (b0.(logand.(aref.bytes.0).255)) | 
| 1ab80 |  0a 20 20 20 20 20 20 20 20 28 62 31 20 28 6c 6f    67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73  | .........(b1.(logand.(aref.bytes | 
| 1aba0 |  20 31 29 20 32 35 35 29 29 29 0a 20 20 20 20 28    6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 2b 20  | .1).255))).....(let.((result.(+. | 
| 1abc0 |  28 61 73 68 20 62 30 20 38 29 20 62 31 29 29 29    0a 20 20 20 20 20 20 28 69 66 20 28 3e 3d 20 62  | (ash.b0.8).b1))).......(if.(>=.b | 
| 1abe0 |  30 20 23 78 38 30 29 20 28 2d 20 72 65 73 75 6c    74 20 28 61 73 68 20 31 20 31 36 29 29 20 72 65  | 0.#x80).(-.result.(ash.1.16)).re | 
| 1ac00 |  73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d  | sult))))..(defun.gptel-bedrock-- | 
| 1ac20 |  62 79 74 65 73 2d 74 6f 2d 69 6e 74 33 32 20 28    62 79 74 65 73 29 0a 20 20 22 43 6f 6e 76 65 72  | bytes-to-int32.(bytes)..."Conver | 
| 1ac40 |  74 20 34 2d 62 79 74 65 20 73 74 72 69 6e 67 20    42 59 54 45 53 20 74 6f 20 62 69 67 2d 65 6e 64  | t.4-byte.string.BYTES.to.big-end | 
| 1ac60 |  69 61 6e 20 73 69 67 6e 65 64 20 69 6e 74 65 67    65 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 30  | ian.signed.integer."...(let.((b0 | 
| 1ac80 |  20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62    79 74 65 73 20 30 29 20 32 35 35 29 29 0a 20 20  | .(logand.(aref.bytes.0).255))... | 
| 1aca0 |  20 20 20 20 20 20 28 62 31 20 28 6c 6f 67 61 6e    64 20 28 61 72 65 66 20 62 79 74 65 73 20 31 29  | ......(b1.(logand.(aref.bytes.1) | 
| 1acc0 |  20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28    62 32 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66  | .255)).........(b2.(logand.(aref | 
| 1ace0 |  20 62 79 74 65 73 20 32 29 20 32 35 35 29 29 0a    20 20 20 20 20 20 20 20 28 62 33 20 28 6c 6f 67  | .bytes.2).255)).........(b3.(log | 
| 1ad00 |  61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20    33 29 20 32 35 35 29 29 29 0a 20 20 20 20 28 6c  | and.(aref.bytes.3).255))).....(l | 
| 1ad20 |  65 74 20 28 28 72 65 73 75 6c 74 20 28 2b 20 28    61 73 68 20 62 30 20 32 34 29 20 28 61 73 68 20  | et.((result.(+.(ash.b0.24).(ash. | 
| 1ad40 |  62 31 20 31 36 29 20 28 61 73 68 20 62 32 20 38    29 20 62 33 29 29 29 0a 20 20 20 20 20 20 28 69  | b1.16).(ash.b2.8).b3))).......(i | 
| 1ad60 |  66 20 28 3e 3d 20 62 30 20 23 78 38 30 29 20 28    2d 20 72 65 73 75 6c 74 20 28 61 73 68 20 31 20  | f.(>=.b0.#x80).(-.result.(ash.1. | 
| 1ad80 |  33 32 29 29 20 72 65 73 75 6c 74 29 29 29 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65  | 32)).result))))..(defun.gptel-be | 
| 1ada0 |  64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d    69 6e 74 36 34 20 28 62 79 74 65 73 29 0a 20 20  | drock--bytes-to-int64.(bytes)... | 
| 1adc0 |  22 43 6f 6e 76 65 72 74 20 38 2d 62 79 74 65 20    73 74 72 69 6e 67 20 42 59 54 45 53 20 74 6f 20  | "Convert.8-byte.string.BYTES.to. | 
| 1ade0 |  62 69 67 2d 65 6e 64 69 61 6e 20 73 69 67 6e 65    64 20 69 6e 74 65 67 65 72 2e 22 0a 20 20 28 6c  | big-endian.signed.integer."...(l | 
| 1ae00 |  65 74 20 28 28 62 30 20 28 6c 6f 67 61 6e 64 20    28 61 72 65 66 20 62 79 74 65 73 20 30 29 20 32  | et.((b0.(logand.(aref.bytes.0).2 | 
| 1ae20 |  35 35 29 29 0a 20 20 20 20 20 20 20 20 28 62 31    20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66 20 62  | 55)).........(b1.(logand.(aref.b | 
| 1ae40 |  79 74 65 73 20 31 29 20 32 35 35 29 29 0a 20 20    20 20 20 20 20 20 28 62 32 20 28 6c 6f 67 61 6e  | ytes.1).255)).........(b2.(logan | 
| 1ae60 |  64 20 28 61 72 65 66 20 62 79 74 65 73 20 32 29    20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20 28  | d.(aref.bytes.2).255)).........( | 
| 1ae80 |  62 33 20 28 6c 6f 67 61 6e 64 20 28 61 72 65 66    20 62 79 74 65 73 20 33 29 20 32 35 35 29 29 0a  | b3.(logand.(aref.bytes.3).255)). | 
| 1aea0 |  20 20 20 20 20 20 20 20 28 62 34 20 28 6c 6f 67    61 6e 64 20 28 61 72 65 66 20 62 79 74 65 73 20  | ........(b4.(logand.(aref.bytes. | 
| 1aec0 |  34 29 20 32 35 35 29 29 0a 20 20 20 20 20 20 20    20 28 62 35 20 28 6c 6f 67 61 6e 64 20 28 61 72  | 4).255)).........(b5.(logand.(ar | 
| 1aee0 |  65 66 20 62 79 74 65 73 20 35 29 20 32 35 35 29    29 0a 20 20 20 20 20 20 20 20 28 62 36 20 28 6c  | ef.bytes.5).255)).........(b6.(l | 
| 1af00 |  6f 67 61 6e 64 20 28 61 72 65 66 20 62 79 74 65    73 20 36 29 20 32 35 35 29 29 0a 20 20 20 20 20  | ogand.(aref.bytes.6).255))...... | 
| 1af20 |  20 20 20 28 62 37 20 28 6c 6f 67 61 6e 64 20 28    61 72 65 66 20 62 79 74 65 73 20 37 29 20 32 35  | ...(b7.(logand.(aref.bytes.7).25 | 
| 1af40 |  35 29 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28    72 65 73 75 6c 74 2d 75 36 33 20 28 2b 20 28 61  | 5))).....(let.((result-u63.(+.(a | 
| 1af60 |  73 68 20 28 6c 6f 67 61 6e 64 20 62 30 20 23 78    37 66 29 20 35 36 29 20 28 61 73 68 20 62 31 20  | sh.(logand.b0.#x7f).56).(ash.b1. | 
| 1af80 |  34 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73  | 48)..........................(as | 
| 1afa0 |  68 20 62 32 20 34 30 29 20 28 61 73 68 20 62 33    20 33 32 29 20 28 61 73 68 20 62 34 20 32 34 29  | h.b2.40).(ash.b3.32).(ash.b4.24) | 
| 1afc0 |  20 28 61 73 68 20 62 35 20 31 36 29 20 28 61 73    68 20 62 36 20 38 29 20 62 37 29 29 29 0a 20 20  | .(ash.b5.16).(ash.b6.8).b7)))... | 
| 1afe0 |  20 20 20 20 28 69 66 20 28 3e 3d 20 62 30 20 23    78 38 30 29 0a 20 20 20 20 20 20 20 20 20 20 28  | ....(if.(>=.b0.#x80)...........( | 
| 1b000 |  2d 20 72 65 73 75 6c 74 2d 75 36 33 20 28 61 73    68 20 31 20 36 33 29 29 0a 20 20 20 20 20 20 20  | -.result-u63.(ash.1.63))........ | 
| 1b020 |  20 72 65 73 75 6c 74 2d 75 36 33 29 29 29 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65  | .result-u63))))..(defun.gptel-be | 
| 1b040 |  64 72 6f 63 6b 2d 2d 62 79 74 65 73 2d 74 6f 2d    75 75 69 64 20 28 62 79 74 65 73 29 0a 20 20 22  | drock--bytes-to-uuid.(bytes)..." | 
| 1b060 |  43 6f 6e 76 65 72 74 20 61 20 31 36 2d 62 79 74    65 20 75 6e 69 62 79 74 65 20 42 59 54 45 53 20  | Convert.a.16-byte.unibyte.BYTES. | 
| 1b080 |  74 6f 20 61 20 33 36 20 63 68 61 72 61 63 74 65    72 20 55 55 49 44 20 73 74 72 69 6e 67 2e 22 0a  | to.a.36.character.UUID.string.". | 
| 1b0a0 |  20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 28    73 74 72 69 6e 67 70 20 62 79 74 65 73 29 20 28  | ..(unless.(and.(stringp.bytes).( | 
| 1b0c0 |  3d 20 28 6c 65 6e 67 74 68 20 62 79 74 65 73 29    20 31 36 29 29 0a 20 20 20 20 28 65 72 72 6f 72  | =.(length.bytes).16)).....(error | 
| 1b0e0 |  20 22 49 6e 70 75 74 20 6d 75 73 74 20 62 65 20    61 20 31 36 2d 62 79 74 65 20 75 6e 69 62 79 74  | ."Input.must.be.a.16-byte.unibyt | 
| 1b100 |  65 20 73 74 72 69 6e 67 22 29 29 0a 20 20 28 6c    65 74 20 28 28 68 65 78 20 28 6d 61 70 63 6f 6e  | e.string"))...(let.((hex.(mapcon | 
| 1b120 |  63 61 74 20 28 6c 61 6d 62 64 61 20 28 69 29 20    28 66 6f 72 6d 61 74 20 22 25 30 32 78 22 20 28  | cat.(lambda.(i).(format."%02x".( | 
| 1b140 |  61 72 65 66 20 62 79 74 65 73 20 69 29 29 29 20    28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65  | aref.bytes.i))).(number-sequence | 
| 1b160 |  20 30 20 31 35 29 20 22 22 29 29 29 0a 20 20 20    20 28 66 6f 72 6d 61 74 20 22 25 73 2d 25 73 2d  | .0.15).""))).....(format."%s-%s- | 
| 1b180 |  25 73 2d 25 73 2d 25 73 22 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67  | %s-%s-%s".............(substring | 
| 1b1a0 |  20 68 65 78 20 30 20 38 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67  | .hex.0.8).............(substring | 
| 1b1c0 |  20 68 65 78 20 38 20 31 32 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e  | .hex.8.12).............(substrin | 
| 1b1e0 |  67 20 68 65 78 20 31 32 20 31 36 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72  | g.hex.12.16).............(substr | 
| 1b200 |  69 6e 67 20 68 65 78 20 31 36 20 32 30 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73  | ing.hex.16.20).............(subs | 
| 1b220 |  74 72 69 6e 67 20 68 65 78 20 32 30 20 33 32 29    29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65  | tring.hex.20.32))))..(defun.gpte | 
| 1b240 |  6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 73 73 65 6d    62 6c 65 2d 63 6f 6e 74 65 6e 74 2d 62 6c 6f 63  | l-bedrock--assemble-content-bloc | 
| 1b260 |  6b 73 20 28 65 76 65 6e 74 73 29 0a 20 20 22 42    75 69 6c 64 20 61 20 63 6f 6d 70 6c 65 74 65 64  | ks.(events)..."Build.a.completed | 
| 1b280 |  20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20 63    6f 6e 74 61 69 6e 65 64 20 66 72 6f 6d 20 45 56  | .prompt.object.contained.from.EV | 
| 1b2a0 |  45 4e 54 53 2e 0a 45 56 45 4e 54 53 20 73 68 6f    75 6c 64 20 62 65 20 61 20 6c 69 73 74 20 6f 66  | ENTS..EVENTS.should.be.a.list.of | 
| 1b2c0 |  20 6d 65 73 73 61 67 65 53 74 61 72 74 2c 20 63    6f 6e 74 65 6e 74 42 6c 6f 63 6b 53 74 61 72 74  | .messageStart,.contentBlockStart | 
| 1b2e0 |  2c 0a 63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 44 65    6c 74 61 2c 20 61 6e 64 20 63 6f 6e 74 65 6e 74  | ,.contentBlockDelta,.and.content | 
| 1b300 |  42 6c 6f 63 6b 53 74 6f 70 20 73 74 72 65 61 6d    20 6d 65 73 73 61 67 65 73 20 61 73 0a 72 65 74  | BlockStop.stream.messages.as.ret | 
| 1b320 |  75 72 6e 65 64 20 62 79 20 60 67 70 74 65 6c 2d    62 65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 73  | urned.by.`gptel-bedrock--parse-s | 
| 1b340 |  74 72 65 61 6d 2d 6d 65 73 73 61 67 65 27 2c 20    69 6e 20 74 68 65 20 6f 72 64 65 72 0a 72 65 63  | tream-message',.in.the.order.rec | 
| 1b360 |  65 69 76 65 64 2e 22 0a 20 20 28 6c 65 74 20 28    28 62 6c 6f 63 6b 73 20 28 6d 61 6b 65 2d 68 61  | eived."...(let.((blocks.(make-ha | 
| 1b380 |  73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 23    27 65 71 6c 29 29 0a 20 20 20 20 20 20 20 20 72  | sh-table.:test.#'eql)).........r | 
| 1b3a0 |  6f 6c 65 20 63 6f 6e 74 65 6e 74 73 29 0a 20 20    20 20 28 64 6f 6c 69 73 74 20 28 65 76 65 6e 74  | ole.contents).....(dolist.(event | 
| 1b3c0 |  20 65 76 65 6e 74 73 29 0a 20 20 20 20 20 20 28    6c 65 74 2a 20 28 28 68 65 61 64 65 72 73 20 28  | .events).......(let*.((headers.( | 
| 1b3e0 |  70 6c 69 73 74 2d 67 65 74 20 65 76 65 6e 74 20    3a 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 20  | plist-get.event.:headers))...... | 
| 1b400 |  20 20 20 20 20 20 20 20 28 70 61 79 6c 6f 61 64    20 28 70 6c 69 73 74 2d 67 65 74 20 65 76 65 6e  | ........(payload.(plist-get.even | 
| 1b420 |  74 20 3a 70 61 79 6c 6f 61 64 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 28 65 76 65 6e 74  | t.:payload))..............(event | 
| 1b440 |  2d 74 79 70 65 20 28 61 73 73 6f 63 2d 64 65 66    61 75 6c 74 20 22 3a 65 76 65 6e 74 2d 74 79 70  | -type.(assoc-default.":event-typ | 
| 1b460 |  65 22 20 68 65 61 64 65 72 73 29 29 29 0a 20 20    20 20 20 20 20 20 28 70 63 61 73 65 20 65 76 65  | e".headers))).........(pcase.eve | 
| 1b480 |  6e 74 2d 74 79 70 65 0a 20 20 20 20 20 20 20 20    20 20 28 22 6d 65 73 73 61 67 65 53 74 61 72 74  | nt-type...........("messageStart | 
| 1b4a0 |  22 20 28 73 65 74 71 20 72 6f 6c 65 20 28 70 6c    69 73 74 2d 67 65 74 20 70 61 79 6c 6f 61 64 20  | ".(setq.role.(plist-get.payload. | 
| 1b4c0 |  3a 72 6f 6c 65 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63  | :role)))...........("contentBloc | 
| 1b4e0 |  6b 53 74 61 72 74 22 0a 20 20 20 20 20 20 20 20    20 20 20 28 70 75 74 68 61 73 68 20 28 70 6c 69  | kStart"............(puthash.(pli | 
| 1b500 |  73 74 2d 67 65 74 20 70 61 79 6c 6f 61 64 20 3a    63 6f 6e 74 65 6e 74 42 6c 6f 63 6b 49 6e 64 65  | st-get.payload.:contentBlockInde | 
| 1b520 |  78 29 20 28 6c 69 73 74 20 65 76 65 6e 74 29 20    62 6c 6f 63 6b 73 29 29 0a 20 20 20 20 20 20 20  | x).(list.event).blocks))........ | 
| 1b540 |  20 20 20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63    6b 44 65 6c 74 61 22 0a 20 20 20 20 20 20 20 20  | ...("contentBlockDelta"......... | 
| 1b560 |  20 20 20 28 70 75 73 68 20 65 76 65 6e 74 20 28    67 65 74 68 61 73 68 20 28 70 6c 69 73 74 2d 67  | ...(push.event.(gethash.(plist-g | 
| 1b580 |  65 74 20 70 61 79 6c 6f 61 64 20 3a 63 6f 6e 74    65 6e 74 42 6c 6f 63 6b 49 6e 64 65 78 29 20 62  | et.payload.:contentBlockIndex).b | 
| 1b5a0 |  6c 6f 63 6b 73 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 28 22 63 6f 6e 74 65 6e 74 42 6c 6f 63  | locks)))...........("contentBloc | 
| 1b5c0 |  6b 53 74 6f 70 22 0a 20 20 20 20 20 20 20 20 20    20 20 28 6c 65 74 2a 20 28 28 62 6c 6f 63 6b 2d  | kStop"............(let*.((block- | 
| 1b5e0 |  69 6e 64 65 78 20 28 70 6c 69 73 74 2d 67 65 74    20 70 61 79 6c 6f 61 64 20 3a 63 6f 6e 74 65 6e  | index.(plist-get.payload.:conten | 
| 1b600 |  74 42 6c 6f 63 6b 49 6e 64 65 78 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tBlockIndex))................... | 
| 1b620 |  28 62 6c 6f 63 6b 2d 65 76 65 6e 74 73 20 28 6e    72 65 76 65 72 73 65 20 28 67 65 74 68 61 73 68  | (block-events.(nreverse.(gethash | 
| 1b640 |  20 62 6c 6f 63 6b 2d 69 6e 64 65 78 20 62 6c 6f    63 6b 73 29 29 29 0a 20 20 20 20 20 20 20 20 20  | .block-index.blocks))).......... | 
| 1b660 |  20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 20    28 63 61 72 20 62 6c 6f 63 6b 2d 65 76 65 6e 74  | .........(start.(car.block-event | 
| 1b680 |  73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 64 65 6c 74 61 73 20 28 63  | s))...................(deltas.(c | 
| 1b6a0 |  64 72 20 62 6c 6f 63 6b 2d 65 76 65 6e 74 73 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | dr.block-events))).............. | 
| 1b6c0 |  28 77 68 65 6e 2d 6c 65 74 20 28 28 74 6f 6f 6c    2d 75 73 65 20 28 6d 61 70 2d 6e 65 73 74 65 64  | (when-let.((tool-use.(map-nested | 
| 1b6e0 |  2d 65 6c 74 20 73 74 61 72 74 20 27 28 3a 70 61    79 6c 6f 61 64 20 3a 73 74 61 72 74 20 3a 74 6f  | -elt.start.'(:payload.:start.:to | 
| 1b700 |  6f 6c 55 73 65 29 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28  | olUse))))................(let.(( | 
| 1b720 |  69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f    6f 6c 2d 75 73 65 20 3a 74 6f 6f 6c 55 73 65 49  | id.(plist-get.tool-use.:toolUseI | 
| 1b740 |  64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28  | d))......................(name.( | 
| 1b760 |  70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 75    73 65 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20  | plist-get.tool-use.:name))...... | 
| 1b780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 69 6e 70 75 74 20 28 67 70 74 65 6c 2d 2d 6a  | ................(input.(gptel--j | 
| 1b7a0 |  73 6f 6e 2d 72 65 61 64 2d 73 74 72 69 6e 67 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | son-read-string................. | 
| 1b7c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61    70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20  | .............(mapconcat......... | 
| 1b7e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 64  | ......................(lambda.(d | 
| 1b800 |  65 6c 74 61 29 20 28 6d 61 70 2d 6e 65 73 74 65    64 2d 65 6c 74 20 64 65 6c 74 61 20 27 28 3a 70  | elta).(map-nested-elt.delta.'(:p | 
| 1b820 |  61 79 6c 6f 61 64 20 3a 64 65 6c 74 61 20 3a 74    6f 6f 6c 55 73 65 20 3a 69 6e 70 75 74 29 29 29  | ayload.:delta.:toolUse.:input))) | 
| 1b840 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64  | ...............................d | 
| 1b860 |  65 6c 74 61 73 29 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68  | eltas))))..................(push | 
| 1b880 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6c 69 73 74 20 3a 74 6f 6f 6c 55 73  | ...................(list.:toolUs | 
| 1b8a0 |  65 20 28 6c 69 73 74 20 3a 69 6e 70 75 74 20 69    6e 70 75 74 20 3a 6e 61 6d 65 20 6e 61 6d 65 20  | e.(list.:input.input.:name.name. | 
| 1b8c0 |  3a 74 6f 6f 6c 55 73 65 49 64 20 69 64 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :toolUseId.id))................. | 
| 1b8e0 |  20 20 63 6f 6e 74 65 6e 74 73 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e  | ..contents)))..............(when | 
| 1b900 |  2d 6c 65 74 20 28 28 74 65 78 74 73 20 28 64 65    6c 71 20 6e 69 6c 20 28 6d 61 70 63 61 72 20 28  | -let.((texts.(delq.nil.(mapcar.( | 
| 1b920 |  6c 61 6d 62 64 61 20 28 64 29 20 28 6d 61 70 2d    6e 65 73 74 65 64 2d 65 6c 74 20 64 20 27 28 3a  | lambda.(d).(map-nested-elt.d.'(: | 
| 1b940 |  70 61 79 6c 6f 61 64 20 3a 64 65 6c 74 61 20 3a    74 65 78 74 29 29 29 20 64 65 6c 74 61 73 29 29  | payload.:delta.:text))).deltas)) | 
| 1b960 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74  | ))................(push.(list.:t | 
| 1b980 |  65 78 74 20 28 61 70 70 6c 79 20 23 27 63 6f 6e    63 61 74 20 74 65 78 74 73 29 29 20 63 6f 6e 74  | ext.(apply.#'concat.texts)).cont | 
| 1b9a0 |  65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 3b 3b 20 43 75 72 72 65 6e 74 6c 79  | ents))..............;;.Currently | 
| 1b9c0 |  20 77 65 20 64 69 73 63 61 72 64 20 61 6e 79 20    72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e  | .we.discard.any.reasoning.conten | 
| 1b9e0 |  74 20 62 75 74 20 74 68 69 73 20 77 6f 75 6c 64    20 62 65 20 74 68 65 20 73 70 6f 74 20 74 6f 20  | t.but.this.would.be.the.spot.to. | 
| 1ba00 |  68 61 6e 64 6c 65 20 69 74 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 29 29 0a 20 20 20 20 20 20  | handle.it..............))....... | 
| 1ba20 |  20 20 20 20 28 5f 20 28 65 72 72 6f 72 20 22 55    6e 65 78 70 65 63 74 65 64 20 65 76 65 6e 74 2d  | ....(_.(error."Unexpected.event- | 
| 1ba40 |  74 79 70 65 20 25 53 22 20 65 76 65 6e 74 2d 74    79 70 65 29 29 29 29 29 0a 20 20 20 20 28 6c 69  | type.%S".event-type))))).....(li | 
| 1ba60 |  73 74 20 3a 72 6f 6c 65 20 72 6f 6c 65 20 3a 63    6f 6e 74 65 6e 74 20 28 76 63 6f 6e 63 61 74 20  | st.:role.role.:content.(vconcat. | 
| 1ba80 |  28 6e 72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e    74 73 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66  | (nreverse.contents)))))..(cl-def | 
| 1baa0 |  6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61    72 73 65 2d 62 75 66 66 65 72 20 28 28 5f 62 61  | method.gptel--parse-buffer.((_ba | 
| 1bac0 |  63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 65 64 72    6f 63 6b 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d  | ckend.gptel-bedrock).&optional.m | 
| 1bae0 |  61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 22 50    61 72 73 65 20 63 75 72 72 65 6e 74 20 62 75 66  | ax-entries)..."Parse.current.buf | 
| 1bb00 |  66 65 72 20 61 6e 64 20 72 65 74 75 72 6e 20 61    20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 20  | fer.and.return.a.list.of.prompt. | 
| 1bb20 |  6f 62 6a 65 63 74 73 20 66 6f 72 20 42 65 64 72    6f 63 6b 2e 0a 0a 4d 41 58 2d 45 4e 54 52 49 45  | objects.for.Bedrock...MAX-ENTRIE | 
| 1bb40 |  53 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d    20 6e 75 6d 62 65 72 20 6f 66 20 70 72 6f 6d 70  | S.is.the.maximum.number.of.promp | 
| 1bb60 |  74 73 20 74 6f 20 69 6e 63 6c 75 64 65 2e 22 0a    20 20 28 75 6e 6c 65 73 73 20 6d 61 78 2d 65 6e  | ts.to.include."...(unless.max-en | 
| 1bb80 |  74 72 69 65 73 20 28 73 65 74 71 20 6d 61 78 2d    65 6e 74 72 69 65 73 20 6d 6f 73 74 2d 70 6f 73  | tries.(setq.max-entries.most-pos | 
| 1bba0 |  69 74 69 76 65 2d 66 69 78 6e 75 6d 29 29 0a 20    20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 20  | itive-fixnum))...(let.((prompts. | 
| 1bbc0 |  6e 69 6c 29 20 28 70 72 65 76 2d 70 74 20 28 70    6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28  | nil).(prev-pt.(point)).........( | 
| 1bbe0 |  69 6e 63 6c 75 64 65 2d 6d 65 64 69 61 20 28 61    6e 64 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d  | include-media.(and.gptel-track-m | 
| 1bc00 |  65 64 69 61 20 28 67 70 74 65 6c 2d 2d 6d 6f 64    65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65  | edia.(gptel--model-capable-p.'me | 
| 1bc20 |  64 69 61 29 29 29 29 0a 20 20 20 20 28 63 6c 2d    66 6c 65 74 20 28 28 63 61 70 74 75 72 65 2d 70  | dia)))).....(cl-flet.((capture-p | 
| 1bc40 |  72 6f 6d 70 74 20 28 72 6f 6c 65 20 62 65 67 20    65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  | rompt.(role.beg.end)............ | 
| 1bc60 |  20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e    74 65 6e 74 20 28 69 66 20 69 6e 63 6c 75 64 65  | .....(let*.((content.(if.include | 
| 1bc80 |  2d 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -media.......................... | 
| 1bca0 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62    65 64 72 6f 63 6b 2d 2d 70 61 72 73 65 2d 6d 75  | ........(gptel-bedrock--parse-mu | 
| 1bcc0 |  6c 74 69 70 61 72 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ltipart......................... | 
| 1bce0 |  20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c    2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69  | ..........(gptel--parse-media-li | 
| 1bd00 |  6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 62    65 67 20 65 6e 64 29 29 0a 20 20 20 20 20 20 20  | nks.major-mode.beg.end))........ | 
| 1bd20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 60 5b 28 3a 74 65  | ..........................`[(:te | 
| 1bd40 |  78 74 20 2c 28 67 70 74 65 6c 2d 2d 74 72 69 6d    2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20 20  | xt.,(gptel--trim-prefixes....... | 
| 1bd60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 1bd80 |  20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62    73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72  | .....(buffer-substring-no-proper | 
| 1bda0 |  74 69 65 73 20 62 65 67 20 65 6e 64 29 29 29 5d    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ties.beg.end)))])).............. | 
| 1bdc0 |  20 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70    74 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 72 6f  | ..........(prompt.(list.:role.ro | 
| 1bde0 |  6c 65 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74    65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20  | le.:content.content))).......... | 
| 1be00 |  20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 70    72 6f 6d 70 74 20 70 72 6f 6d 70 74 73 29 29 29  | .........(push.prompt.prompts))) | 
| 1be20 |  29 0a 0a 20 20 20 20 20 20 28 69 66 20 28 6f 72    20 67 70 74 65 6c 2d 6d 6f 64 65 20 67 70 74 65  | )........(if.(or.gptel-mode.gpte | 
| 1be40 |  6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65    29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69  | l-track-response)...........(whi | 
| 1be60 |  6c 65 20 28 61 6e 64 20 28 3e 20 6d 61 78 2d 65    6e 74 72 69 65 73 20 30 29 0a 20 20 20 20 20 20  | le.(and.(>.max-entries.0)....... | 
| 1be80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 2f 3d 20 70 72 65 76 2d 70 74 20 28 70 6f 69  | ................(/=.prev-pt.(poi | 
| 1bea0 |  6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | nt-min)).......................( | 
| 1bec0 |  67 6f 74 6f 2d 63 68 61 72 20 28 70 72 65 76 69    6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65  | goto-char.(previous-single-prope | 
| 1bee0 |  72 74 79 2d 63 68 61 6e 67 65 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rty-change...................... | 
| 1bf00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f    69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20  | .............(point).'gptel.nil. | 
| 1bf20 |  28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 28 63 61 70 74  | (point-min)))).............(capt | 
| 1bf40 |  75 72 65 2d 70 72 6f 6d 70 74 20 28 70 63 61 73    65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70  | ure-prompt.(pcase.(get-char-prop | 
| 1bf60 |  65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70    74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20  | erty.(point).'gptel)............ | 
| 1bf80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 27 72 65 73 70 6f 6e 73 65 20 22 61  | ...................('response."a | 
| 1bfa0 |  73 73 69 73 74 61 6e 74 22 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ssistant")...................... | 
| 1bfc0 |  20 20 20 20 20 20 20 20 20 28 27 6e 69 6c 20 22    75 73 65 72 22 29 29 0a 20 20 20 20 20 20 20 20  | .........('nil."user"))......... | 
| 1bfe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76  | ....................(point).prev | 
| 1c000 |  2d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20 28  | -pt).............(setq.prev-pt.( | 
| 1c020 |  70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6c 2d 64 65 63 66 20 6d 61 78  | point)).............(cl-decf.max | 
| 1c040 |  2d 65 6e 74 72 69 65 73 29 29 0a 20 20 20 20 20    20 20 20 28 63 61 70 74 75 72 65 2d 70 72 6f 6d  | -entries)).........(capture-prom | 
| 1c060 |  70 74 20 22 75 73 65 72 22 20 28 70 6f 69 6e 74    2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78  | pt."user".(point-min).(point-max | 
| 1c080 |  29 29 29 0a 20 20 20 20 20 20 70 72 6f 6d 70 74    73 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20  | ))).......prompts)))..(defconst. | 
| 1c0a0 |  67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69    6d 61 67 65 2d 66 6f 72 6d 61 74 73 0a 20 20 27  | gptel-bedrock--image-formats...' | 
| 1c0c0 |  28 28 22 69 6d 61 67 65 2f 6a 70 67 22 20 2e 20    22 6a 70 65 67 22 29 0a 20 20 20 20 28 22 69 6d  | (("image/jpg"..."jpeg").....("im | 
| 1c0e0 |  61 67 65 2f 6a 70 65 67 22 20 2e 20 22 6a 70 65    67 22 29 0a 20 20 20 20 28 22 69 6d 61 67 65 2f  | age/jpeg"..."jpeg").....("image/ | 
| 1c100 |  70 6e 67 22 20 2e 20 22 70 6e 67 22 29 0a 20 20    20 20 28 22 69 6d 61 67 65 2f 67 69 66 22 20 2e  | png"..."png").....("image/gif".. | 
| 1c120 |  20 22 67 69 66 22 29 0a 20 20 20 20 28 22 69 6d    61 67 65 2f 77 65 62 70 22 20 2e 20 22 77 65 62  | ."gif").....("image/webp"..."web | 
| 1c140 |  70 22 29 29 0a 20 20 22 4d 61 70 20 6f 66 20 6d    69 6d 65 20 74 79 70 65 20 74 6f 20 69 6d 61 67  | p"))..."Map.of.mime.type.to.imag | 
| 1c160 |  65 20 66 6f 72 6d 61 74 73 20 61 73 20 75 73 65    64 20 69 6e 20 41 57 53 27 73 20 49 6d 61 67 65  | e.formats.as.used.in.AWS's.Image | 
| 1c180 |  42 6c 6f 63 6b 2e 22 29 0a 0a 28 64 65 66 63 6f    6e 73 74 20 67 70 74 65 6c 2d 62 65 64 72 6f 63  | Block.")..(defconst.gptel-bedroc | 
| 1c1a0 |  6b 2d 2d 64 6f 63 2d 66 6f 72 6d 61 74 73 0a 20    20 27 28 28 22 61 70 70 6c 69 63 61 74 69 6f 6e  | k--doc-formats...'(("application | 
| 1c1c0 |  2f 70 64 66 22 20 2e 20 22 70 64 66 22 29 0a 20    20 20 20 28 22 74 65 78 74 2f 63 73 76 22 20 2e  | /pdf"..."pdf").....("text/csv".. | 
| 1c1e0 |  20 22 63 73 76 22 29 0a 20 20 20 20 28 22 61 70    70 6c 69 63 61 74 69 6f 6e 2f 6d 73 77 6f 72 64  | ."csv").....("application/msword | 
| 1c200 |  22 20 2e 20 22 64 6f 63 22 29 0a 20 20 20 20 28    22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64  | "..."doc").....("application/vnd | 
| 1c220 |  2e 6f 70 65 6e 78 6d 6c 66 6f 72 6d 61 74 73 2d    6f 66 66 69 63 65 64 6f 63 75 6d 65 6e 74 2e 77  | .openxmlformats-officedocument.w | 
| 1c240 |  6f 72 64 70 72 6f 63 65 73 73 69 6e 67 6d 6c 2e    64 6f 63 75 6d 65 6e 74 22 20 2e 20 22 64 6f 63  | ordprocessingml.document"..."doc | 
| 1c260 |  78 22 29 0a 20 20 20 20 28 22 61 70 70 6c 69 63    61 74 69 6f 6e 2f 76 6e 64 2e 6d 73 2d 65 78 63  | x").....("application/vnd.ms-exc | 
| 1c280 |  65 6c 22 20 2e 20 22 78 6c 73 22 29 0a 20 20 20    20 28 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76  | el"..."xls").....("application/v | 
| 1c2a0 |  6e 64 2e 6f 70 65 6e 78 6d 6c 66 6f 72 6d 61 74    73 2d 6f 66 66 69 63 65 64 6f 63 75 6d 65 6e 74  | nd.openxmlformats-officedocument | 
| 1c2c0 |  2e 73 70 72 65 61 64 73 68 65 65 74 6d 6c 2e 73    68 65 65 74 22 20 2e 20 22 78 6c 73 78 22 29 0a  | .spreadsheetml.sheet"..."xlsx"). | 
| 1c2e0 |  20 20 20 20 28 22 74 65 78 74 2f 68 74 6d 6c 22    20 2e 20 22 68 74 6d 6c 22 29 0a 20 20 20 20 28  | ....("text/html"..."html").....( | 
| 1c300 |  22 74 65 78 74 2f 70 6c 61 69 6e 22 20 2e 20 22    74 78 74 22 29 0a 20 20 20 20 28 22 74 65 78 74  | "text/plain"..."txt").....("text | 
| 1c320 |  2f 6d 61 72 6b 64 6f 77 6e 22 20 2e 20 22 6d 64    22 29 29 0a 20 20 22 4d 61 70 20 6f 66 20 6d 69  | /markdown"..."md"))..."Map.of.mi | 
| 1c340 |  6d 65 20 74 79 70 65 20 74 6f 20 64 6f 63 75 6d    65 6e 74 20 66 6f 72 6d 61 74 73 20 61 73 20 75  | me.type.to.document.formats.as.u | 
| 1c360 |  73 65 64 20 69 6e 20 41 57 53 27 73 20 44 6f 63    75 6d 65 6e 74 42 6c 6f 63 6b 2e 22 29 0a 0a 28  | sed.in.AWS's.DocumentBlock.")..( | 
| 1c380 |  64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72    6f 63 6b 2d 2d 70 61 72 73 65 2d 6d 75 6c 74 69  | defun.gptel-bedrock--parse-multi | 
| 1c3a0 |  70 61 72 74 20 28 70 61 72 74 73 29 0a 20 20 22    43 6f 6e 76 65 72 74 20 61 20 6d 75 6c 74 69 70  | part.(parts)..."Convert.a.multip | 
| 1c3c0 |  61 72 74 20 70 72 6f 6d 70 74 20 50 41 52 54 53    20 74 6f 20 74 68 65 20 41 57 53 20 42 65 64 72  | art.prompt.PARTS.to.the.AWS.Bedr | 
| 1c3e0 |  6f 63 6b 20 41 50 49 20 66 6f 72 6d 61 74 2e 0a    0a 54 68 65 20 69 6e 70 75 74 20 69 73 20 61 20  | ock.API.format...The.input.is.a. | 
| 1c400 |  6c 69 73 74 20 6f 66 20 74 65 78 74 20 61 6e 64    20 6d 65 64 69 61 20 70 6c 69 73 74 73 20 6f 66  | list.of.text.and.media.plists.of | 
| 1c420 |  20 74 68 65 20 66 6f 72 6d 3a 0a 20 28 28 3a 74    65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c  | .the.form:..((:text.\"some.text\ | 
| 1c440 |  22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f    70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e  | ")...(:media.\"/path/to/media.pn | 
| 1c460 |  67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67    65 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 65 78  | g\".:mime.\"image/png\")...(:tex | 
| 1c480 |  74 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29    29 2e 0a 0a 54 68 65 20 6f 75 74 70 75 74 20 69  | t.\"More.text\"))...The.output.i | 
| 1c4a0 |  73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e    74 72 69 65 73 20 69 6e 20 42 65 64 72 6f 63 6b  | s.a.vector.of.entries.in.Bedrock | 
| 1c4c0 |  20 41 50 49 20 66 6f 72 6d 61 74 2e 22 0a 20 20    28 74 68 72 65 61 64 2d 6c 61 73 74 20 70 61 72  | .API.format."...(thread-last.par | 
| 1c4e0 |  74 73 0a 20 20 20 20 28 63 6c 2d 6d 61 70 6c 69    73 74 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20  | ts.....(cl-maplist......(lambda. | 
| 1c500 |  28 74 61 69 6c 29 0a 20 20 20 20 20 20 20 28 6c    65 74 2a 20 28 28 70 61 72 74 20 28 63 61 72 20  | (tail)........(let*.((part.(car. | 
| 1c520 |  74 61 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 74 65 78 74 20 28 70 6c 69 73  | tail))...............(text.(plis | 
| 1c540 |  74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-get.part.:text)).............. | 
| 1c560 |  20 28 6d 69 6d 65 20 28 70 6c 69 73 74 2d 67 65    74 20 70 61 72 74 20 3a 6d 69 6d 65 29 29 0a 20  | .(mime.(plist-get.part.:mime)).. | 
| 1c580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65    64 69 61 20 28 70 6c 69 73 74 2d 67 65 74 20 70  | .............(media.(plist-get.p | 
| 1c5a0 |  61 72 74 20 3a 6d 65 64 69 61 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74  | art.:media))...............(text | 
| 1c5c0 |  66 69 6c 65 20 28 70 6c 69 73 74 2d 67 65 74 20    70 61 72 74 20 3a 74 65 78 74 66 69 6c 65 29 29  | file.(plist-get.part.:textfile)) | 
| 1c5e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66    6f 72 6d 61 74 29 0a 20 20 20 20 20 20 20 20 20  | ...............format).......... | 
| 1c600 |  28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20    28 74 65 78 74 20 28 77 68 65 6e 20 28 6f 72 20  | (cond...........(text.(when.(or. | 
| 1c620 |  28 65 71 20 70 61 72 74 20 28 63 61 72 20 70 61    72 74 73 29 29 20 28 6e 75 6c 6c 20 28 63 64 72  | (eq.part.(car.parts)).(null.(cdr | 
| 1c640 |  20 74 61 69 6c 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71  | .tail)))...................(setq | 
| 1c660 |  20 74 65 78 74 20 28 67 70 74 65 6c 2d 2d 74 72    69 6d 2d 70 72 65 66 69 78 65 73 20 74 65 78 74  | .text.(gptel--trim-prefixes.text | 
| 1c680 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72  | ))).................(unless.(str | 
| 1c6a0 |  69 6e 67 2d 65 6d 70 74 79 2d 70 20 74 65 78 74    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ing-empty-p.text)............... | 
| 1c6c0 |  20 20 20 20 60 28 3a 74 65 78 74 20 2c 74 65 78    74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28  | ....`(:text.,text)))...........( | 
| 1c6e0 |  6d 65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20  | media............(cond.......... | 
| 1c700 |  20 20 20 28 28 73 65 74 71 20 66 6f 72 6d 61 74    20 28 61 73 73 6f 63 20 6d 69 6d 65 20 67 70 74  | ...((setq.format.(assoc.mime.gpt | 
| 1c720 |  65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 69 6d 61 67    65 2d 66 6f 72 6d 61 74 73 29 29 0a 20 20 20 20  | el-bedrock--image-formats))..... | 
| 1c740 |  20 20 20 20 20 20 20 20 20 60 28 3a 69 6d 61 67    65 20 28 3a 66 6f 72 6d 61 74 20 2c 28 63 64 72  | .........`(:image.(:format.,(cdr | 
| 1c760 |  20 66 6f 72 6d 61 74 29 20 3a 73 6f 75 72 63 65    20 28 3a 62 79 74 65 73 20 2c 28 67 70 74 65 6c  | .format).:source.(:bytes.,(gptel | 
| 1c780 |  2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20    6d 65 64 69 61 29 29 29 29 29 0a 20 20 20 20 20  | --base64-encode.media)))))...... | 
| 1c7a0 |  20 20 20 20 20 20 20 28 28 73 65 74 71 20 66 6f    72 6d 61 74 20 28 61 73 73 6f 63 20 6d 69 6d 65  | .......((setq.format.(assoc.mime | 
| 1c7c0 |  20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d    64 6f 63 2d 66 6f 72 6d 61 74 73 29 29 0a 20 20  | .gptel-bedrock--doc-formats))... | 
| 1c7e0 |  20 20 20 20 20 20 20 20 20 20 20 60 28 3a 64 6f    63 75 6d 65 6e 74 20 28 3a 66 6f 72 6d 61 74 20  | ...........`(:document.(:format. | 
| 1c800 |  2c 28 63 64 72 20 66 6f 72 6d 61 74 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ,(cdr.format)................... | 
| 1c820 |  20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 2c 28    66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72  | ........:name.,(file-name-nondir | 
| 1c840 |  65 63 74 6f 72 79 20 6d 65 64 69 61 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ectory.media)................... | 
| 1c860 |  20 20 20 20 20 20 20 20 3a 73 6f 75 72 63 65 20    28 3a 62 79 74 65 73 20 2c 28 67 70 74 65 6c 2d  | ........:source.(:bytes.,(gptel- | 
| 1c880 |  2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 20 6d    65 64 69 61 29 29 29 29 29 0a 20 20 20 20 20 20  | -base64-encode.media)))))....... | 
| 1c8a0 |  20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20    22 55 6e 73 75 70 70 6f 72 74 65 64 20 4d 49 4d  | ......(t.(error."Unsupported.MIM | 
| 1c8c0 |  45 20 74 79 70 65 20 25 73 20 66 6f 72 20 41 57    53 20 42 65 64 72 6f 63 6b 22 20 6d 69 6d 65 29  | E.type.%s.for.AWS.Bedrock".mime) | 
| 1c8e0 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 74    65 78 74 66 69 6c 65 20 60 28 3a 74 65 78 74 20  | )))...........(textfile.`(:text. | 
| 1c900 |  2c 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66    65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ,(with-temp-buffer.............. | 
| 1c920 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74  | ..................(gptel--insert | 
| 1c940 |  2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 74 65 78    74 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20  | -file-string.textfile).......... | 
| 1c960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 74  | ......................(buffer-st | 
| 1c980 |  72 69 6e 67 29 29 29 29 29 29 29 29 0a 20 20 20    20 28 64 65 6c 71 20 6e 69 6c 29 0a 20 20 20 20  | ring)))))))).....(delq.nil)..... | 
| 1c9a0 |  28 76 63 6f 6e 63 61 74 29 29 29 0a 0a 3b 3b 20    67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72  | (vconcat)))..;;.gptel--inject-pr | 
| 1c9c0 |  6f 6d 70 74 20 6e 6f 74 20 6e 65 65 64 65 64 20    73 69 6e 63 65 20 74 68 65 20 64 65 66 61 75 6c  | ompt.not.needed.since.the.defaul | 
| 1c9e0 |  74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e    20 77 6f 72 6b 73 20 68 65 72 65 0a 0a 28 63 6c  | t.implementation.works.here..(cl | 
| 1ca00 |  2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c    2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73  | -defmethod.gptel--parse-tool-res | 
| 1ca20 |  75 6c 74 73 20 28 28 5f 62 61 63 6b 65 6e 64 20    67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 29 20 74  | ults.((_backend.gptel-bedrock).t | 
| 1ca40 |  6f 6f 6c 2d 75 73 65 2d 72 65 71 75 65 73 74 73    29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 62 61  | ool-use-requests)..."Return.a.ba | 
| 1ca60 |  63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69 61 74    65 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e  | ckend-appropriate.prompt.contain | 
| 1ca80 |  69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65    73 75 6c 74 73 2e 0a 0a 54 4f 4f 4c 2d 55 53 45  | ing.tool.call.results...TOOL-USE | 
| 1caa0 |  2d 52 45 51 55 45 53 54 53 20 69 73 20 61 20 6c    69 73 74 20 6f 66 20 72 65 71 75 65 73 74 20 70  | -REQUESTS.is.a.list.of.request.p | 
| 1cac0 |  6c 69 73 74 73 20 74 68 61 74 20 68 61 76 65 20    62 65 65 6e 0a 63 6f 6d 70 6c 65 74 65 64 2e 20  | lists.that.have.been.completed.. | 
| 1cae0 |  20 52 65 74 75 72 6e 73 20 61 20 73 69 6e 67 6c    65 20 70 72 6f 6d 70 74 20 6f 62 6a 65 63 74 20  | .Returns.a.single.prompt.object. | 
| 1cb00 |  74 6f 20 69 6e 6a 65 63 74 20 69 6e 74 6f 20 74    68 65 0a 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e  | to.inject.into.the.conversation. | 
| 1cb20 |  22 0a 20 20 28 6c 69 73 74 0a 20 20 20 3a 72 6f    6c 65 20 22 75 73 65 72 22 0a 20 20 20 3a 63 6f  | "...(list....:role."user"....:co | 
| 1cb40 |  6e 74 65 6e 74 0a 20 20 20 28 76 63 6f 6e 63 61    74 0a 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20  | ntent....(vconcat.....(mapcar... | 
| 1cb60 |  20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c    2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 60 28  | ...(lambda.(tool-call)........`( | 
| 1cb80 |  3a 74 6f 6f 6c 52 65 73 75 6c 74 20 28 3a 74 6f    6f 6c 55 73 65 49 64 20 2c 28 70 6c 69 73 74 2d  | :toolResult.(:toolUseId.,(plist- | 
| 1cba0 |  67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69    64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | get.tool-call.:id).............. | 
| 1cbc0 |  20 20 20 20 20 20 20 20 20 3a 73 74 61 74 75 73    20 22 73 75 63 63 65 73 73 22 0a 20 20 20 20 20  | .........:status."success"...... | 
| 1cbe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 63 6f 6e 74 65 6e 74 20 5b 28 3a 74 65 78  | .................:content.[(:tex | 
| 1cc00 |  74 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 74 6f    6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29  | t.,(plist-get.tool-call.:result) | 
| 1cc20 |  29 5d 29 29 29 0a 20 20 20 20 20 74 6f 6f 6c 2d    75 73 65 2d 72 65 71 75 65 73 74 73 29 29 29 29  | )])))......tool-use-requests)))) | 
| 1cc40 |  0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d    62 65 64 72 6f 63 6b 2d 2d 61 77 73 2d 70 72 6f  | ..(defvar.gptel-bedrock--aws-pro | 
| 1cc60 |  66 69 6c 65 2d 63 61 63 68 65 20 6e 69 6c 0a 20    20 22 43 61 63 68 65 20 66 6f 72 20 41 57 53 20  | file-cache.nil..."Cache.for.AWS. | 
| 1cc80 |  70 72 6f 66 69 6c 65 20 63 72 65 64 65 6e 74 69    61 6c 73 20 69 6e 20 74 68 65 20 66 6f 72 6d 20  | profile.credentials.in.the.form. | 
| 1cca0 |  6f 66 20 28 50 52 4f 46 49 4c 45 20 2e 20 43 52    45 44 53 29 2e 22 29 0a 0a 28 64 65 66 75 6e 20  | of.(PROFILE...CREDS).")..(defun. | 
| 1ccc0 |  67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 66    65 74 63 68 2d 61 77 73 2d 70 72 6f 66 69 6c 65  | gptel-bedrock--fetch-aws-profile | 
| 1cce0 |  2d 63 72 65 64 65 6e 74 69 61 6c 73 20 28 70 72    6f 66 69 6c 65 20 26 6f 70 74 69 6f 6e 61 6c 20  | -credentials.(profile.&optional. | 
| 1cd00 |  63 6c 65 61 72 2d 63 61 63 68 65 29 0a 20 20 22    46 65 74 63 68 20 26 20 63 61 63 68 65 20 41 57  | clear-cache)..."Fetch.&.cache.AW | 
| 1cd20 |  53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 66 6f    72 20 50 52 4f 46 49 4c 45 20 75 73 69 6e 67 20  | S.credentials.for.PROFILE.using. | 
| 1cd40 |  61 77 73 2d 63 6c 69 2e 0a 0a 4e 6f 6e 2d 6e 69    6c 20 43 4c 45 41 52 2d 43 41 43 48 45 20 77 69  | aws-cli...Non-nil.CLEAR-CACHE.wi | 
| 1cd60 |  6c 6c 20 72 65 66 72 65 73 68 20 63 72 65 64 65    6e 74 69 61 6c 73 2e 22 0a 20 20 28 6c 65 74 2a  | ll.refresh.credentials."...(let* | 
| 1cd80 |  20 28 28 63 72 65 64 73 2d 6a 73 6f 6e 0a 20 20    20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28  | .((creds-json............(let.(( | 
| 1cda0 |  63 65 6c 6c 20 28 6f 72 20 28 61 73 73 6f 63 20    70 72 6f 66 69 6c 65 20 67 70 74 65 6c 2d 62 65  | cell.(or.(assoc.profile.gptel-be | 
| 1cdc0 |  64 72 6f 63 6b 2d 2d 61 77 73 2d 70 72 6f 66 69    6c 65 2d 63 61 63 68 65 20 23 27 73 74 72 69 6e  | drock--aws-profile-cache.#'strin | 
| 1cde0 |  67 3d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | g=)............................( | 
| 1ce00 |  63 61 72 20 28 70 75 73 68 20 28 63 6f 6e 73 20    70 72 6f 66 69 6c 65 20 6e 69 6c 29 20 67 70 74  | car.(push.(cons.profile.nil).gpt | 
| 1ce20 |  65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 61 77 73 2d    70 72 6f 66 69 6c 65 2d 63 61 63 68 65 29 29 29  | el-bedrock--aws-profile-cache))) | 
| 1ce40 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6f 72 20 28 61 6e 64 20 28 6e 6f 74 20 63 6c  | ))..............(or.(and.(not.cl | 
| 1ce60 |  65 61 72 2d 63 61 63 68 65 29 20 28 63 64 72 20    63 65 6c 6c 29 29 0a 20 20 20 20 20 20 20 20 20  | ear-cache).(cdr.cell)).......... | 
| 1ce80 |  20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63    64 72 20 63 65 6c 6c 29 0a 20 20 20 20 20 20 20  | ........(setf.(cdr.cell)........ | 
| 1cea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65  | ................(with-temp-buffe | 
| 1cec0 |  72 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 28    75 6e 6c 65 73 73 20 28 7a 65 72 6f 70 20 28 63  | r..............(unless.(zerop.(c | 
| 1cee0 |  61 6c 6c 2d 70 72 6f 63 65 73 73 20 22 61 77 73    22 20 6e 69 6c 20 74 20 6e 69 6c 20 22 63 6f 6e  | all-process."aws".nil.t.nil."con | 
| 1cf00 |  66 69 67 75 72 65 22 20 22 65 78 70 6f 72 74 2d    63 72 65 64 65 6e 74 69 61 6c 73 22 0a 09 09 09  | figure"."export-credentials".... | 
| 1cf20 |  09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 66 6f 72 6d 61 74 20 22 2d 2d 70 72 6f  | ..................(format."--pro | 
| 1cf40 |  66 69 6c 65 3d 25 73 22 20 70 72 6f 66 69 6c 65    29 29 29 0a 09 09 20 20 20 20 20 20 20 20 20 20  | file=%s".profile)))............. | 
| 1cf60 |  20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22    46 61 69 6c 65 64 20 74 6f 20 67 65 74 20 41 57  | ...(user-error."Failed.to.get.AW | 
| 1cf80 |  53 20 63 72 65 64 65 6e 74 69 61 6c 73 20 66 72    6f 6d 20 70 72 6f 66 69 6c 65 22 29 29 0a 09 09  | S.credentials.from.profile"))... | 
| 1cfa0 |  20 20 20 20 20 20 20 20 20 28 6a 73 6f 6e 2d 70    61 72 73 65 2d 73 74 72 69 6e 67 20 28 62 75 66  | .........(json-parse-string.(buf | 
| 1cfc0 |  66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 29    29 0a 09 20 28 65 78 70 69 72 61 74 69 6f 6e 20  | fer-string)))))))...(expiration. | 
| 1cfe0 |  28 69 66 2d 6c 65 74 20 28 65 78 70 20 28 67 65    74 68 61 73 68 20 22 45 78 70 69 72 61 74 69 6f  | (if-let.(exp.(gethash."Expiratio | 
| 1d000 |  6e 22 20 63 72 65 64 73 2d 6a 73 6f 6e 29 29 0a    09 09 09 20 20 20 20 20 28 64 61 74 65 2d 74 6f  | n".creds-json)).........(date-to | 
| 1d020 |  2d 74 69 6d 65 20 65 78 70 29 29 29 29 0a 20 20    20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28  | -time.exp)))).....(cond.......(( | 
| 1d040 |  74 69 6d 65 2d 6c 65 73 73 2d 70 20 28 63 75 72    72 65 6e 74 2d 74 69 6d 65 29 20 65 78 70 69 72  | time-less-p.(current-time).expir | 
| 1d060 |  61 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 28 6c    65 74 20 28 28 61 63 63 65 73 73 2d 6b 65 79 20  | ation)........(let.((access-key. | 
| 1d080 |  28 67 65 74 68 61 73 68 20 22 41 63 63 65 73 73    4b 65 79 49 64 22 20 63 72 65 64 73 2d 6a 73 6f  | (gethash."AccessKeyId".creds-jso | 
| 1d0a0 |  6e 29 29 0a 09 20 20 20 20 20 28 73 65 63 72 65    74 2d 6b 65 79 20 28 67 65 74 68 61 73 68 20 22  | n)).......(secret-key.(gethash." | 
| 1d0c0 |  53 65 63 72 65 74 41 63 63 65 73 73 4b 65 79 22    20 63 72 65 64 73 2d 6a 73 6f 6e 29 29 0a 09 20  | SecretAccessKey".creds-json))... | 
| 1d0e0 |  20 20 20 20 28 73 65 73 73 69 6f 6e 2d 74 6f 6b    65 6e 20 28 67 65 74 68 61 73 68 20 22 53 65 73  | ....(session-token.(gethash."Ses | 
| 1d100 |  73 69 6f 6e 54 6f 6b 65 6e 22 20 63 72 65 64 73    2d 6a 73 6f 6e 29 29 29 0a 09 20 28 63 6c 2d 76  | sionToken".creds-json)))...(cl-v | 
| 1d120 |  61 6c 75 65 73 20 61 63 63 65 73 73 2d 6b 65 79    20 73 65 63 72 65 74 2d 6b 65 79 20 73 65 73 73  | alues.access-key.secret-key.sess | 
| 1d140 |  69 6f 6e 2d 74 6f 6b 65 6e 29 29 29 0a 20 20 20    20 20 20 28 28 6e 6f 74 20 63 6c 65 61 72 2d 63  | ion-token))).......((not.clear-c | 
| 1d160 |  61 63 68 65 29 0a 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 66 65 74  | ache)........(gptel-bedrock--fet | 
| 1d180 |  63 68 2d 61 77 73 2d 70 72 6f 66 69 6c 65 2d 63    72 65 64 65 6e 74 69 61 6c 73 20 70 72 6f 66 69  | ch-aws-profile-credentials.profi | 
| 1d1a0 |  6c 65 20 74 29 29 0a 20 20 20 20 20 20 28 74 20    28 75 73 65 72 2d 65 72 72 6f 72 20 22 41 57 53  | le.t)).......(t.(user-error."AWS | 
| 1d1c0 |  20 63 72 65 64 65 6e 74 69 61 6c 73 20 65 78 70    69 72 65 64 20 66 6f 72 20 70 72 6f 66 69 6c 65  | .credentials.expired.for.profile | 
| 1d1e0 |  3a 20 25 73 22 20 70 72 6f 66 69 6c 65 29 29 29    29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c  | :.%s".profile)))))..(defun.gptel | 
| 1d200 |  2d 62 65 64 72 6f 63 6b 2d 2d 67 65 74 2d 63 72    65 64 65 6e 74 69 61 6c 73 20 28 29 0a 20 20 22  | -bedrock--get-credentials.()..." | 
| 1d220 |  52 65 74 75 72 6e 20 74 68 65 20 41 57 53 20 63    72 65 64 65 6e 74 69 61 6c 73 20 74 6f 20 75 73  | Return.the.AWS.credentials.to.us | 
| 1d240 |  65 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73    74 2e 0a 0a 52 65 74 75 72 6e 73 20 61 20 6c 69  | e.for.the.request...Returns.a.li | 
| 1d260 |  73 74 20 6f 66 20 32 2d 33 20 65 6c 65 6d 65 6e    74 73 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  | st.of.2-3.elements,.depending.on | 
| 1d280 |  20 77 68 65 74 68 65 72 20 61 20 73 65 73 73 69    6f 6e 0a 74 6f 6b 65 6e 20 69 73 20 6e 65 65 64  | .whether.a.session.token.is.need | 
| 1d2a0 |  65 64 2c 20 77 69 74 68 20 74 68 69 73 20 66 6f    72 6d 3a 20 28 41 57 53 5f 41 43 43 45 53 53 5f  | ed,.with.this.form:.(AWS_ACCESS_ | 
| 1d2c0 |  4b 45 59 5f 49 44 20 41 57 53 5f 53 45 43 52 45    54 5f 41 43 43 45 53 53 5f 4b 45 59 0a 41 57 53  | KEY_ID.AWS_SECRET_ACCESS_KEY.AWS | 
| 1d2e0 |  5f 53 45 53 53 49 4f 4e 5f 54 4f 4b 45 4e 29 2e    0a 0a 43 6f 6e 76 65 6e 69 65 6e 74 20 74 6f 20  | _SESSION_TOKEN)...Convenient.to. | 
| 1d300 |  75 73 65 20 77 69 74 68 20 60 63 6c 2d 6d 75 6c    74 69 70 6c 65 2d 76 61 6c 75 65 2d 62 69 6e 64  | use.with.`cl-multiple-value-bind | 
| 1d320 |  27 22 0a 20 20 28 6c 65 74 20 28 28 6b 65 79 2d    69 64 20 28 67 65 74 65 6e 76 20 22 41 57 53 5f  | '"...(let.((key-id.(getenv."AWS_ | 
| 1d340 |  41 43 43 45 53 53 5f 4b 45 59 5f 49 44 22 29 29    0a 20 20 20 20 20 20 20 20 28 73 65 63 72 65 74  | ACCESS_KEY_ID")).........(secret | 
| 1d360 |  2d 6b 65 79 20 28 67 65 74 65 6e 76 20 22 41 57    53 5f 53 45 43 52 45 54 5f 41 43 43 45 53 53 5f  | -key.(getenv."AWS_SECRET_ACCESS_ | 
| 1d380 |  4b 45 59 22 29 29 0a 20 20 20 20 20 20 20 20 28    74 6f 6b 65 6e 20 28 67 65 74 65 6e 76 20 22 41  | KEY")).........(token.(getenv."A | 
| 1d3a0 |  57 53 5f 53 45 53 53 49 4f 4e 5f 54 4f 4b 45 4e    22 29 29 0a 09 28 70 72 6f 66 69 6c 65 20 28 67  | WS_SESSION_TOKEN"))..(profile.(g | 
| 1d3c0 |  65 74 65 6e 76 20 22 41 57 53 5f 50 52 4f 46 49    4c 45 22 29 29 29 0a 20 20 20 20 28 63 6f 6e 64  | etenv."AWS_PROFILE"))).....(cond | 
| 1d3e0 |  0a 20 20 20 20 20 20 28 28 61 6e 64 20 6b 65 79    2d 69 64 20 73 65 63 72 65 74 2d 6b 65 79 29 20  | .......((and.key-id.secret-key). | 
| 1d400 |  28 63 6c 2d 76 61 6c 75 65 73 20 6b 65 79 2d 69    64 20 73 65 63 72 65 74 2d 6b 65 79 20 74 6f 6b  | (cl-values.key-id.secret-key.tok | 
| 1d420 |  65 6e 29 29 0a 20 20 20 20 20 20 28 28 61 6e 64    20 70 72 6f 66 69 6c 65 29 20 28 67 70 74 65 6c  | en)).......((and.profile).(gptel | 
| 1d440 |  2d 62 65 64 72 6f 63 6b 2d 2d 66 65 74 63 68 2d    61 77 73 2d 70 72 6f 66 69 6c 65 2d 63 72 65 64  | -bedrock--fetch-aws-profile-cred | 
| 1d460 |  65 6e 74 69 61 6c 73 20 70 72 6f 66 69 6c 65 29    29 0a 20 20 20 20 20 20 28 74 20 28 75 73 65 72  | entials.profile)).......(t.(user | 
| 1d480 |  2d 65 72 72 6f 72 20 22 4d 69 73 73 69 6e 67 20    41 57 53 20 63 72 65 64 65 6e 74 69 61 6c 73 3b  | -error."Missing.AWS.credentials; | 
| 1d4a0 |  20 63 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20    65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  | .currently.only.environment.vari | 
| 1d4c0 |  61 62 6c 65 73 20 61 72 65 20 73 75 70 70 6f 72    74 65 64 22 29 29 29 29 29 0a 0a 28 64 65 66 76  | ables.are.supported")))))..(defv | 
| 1d4e0 |  61 72 20 67 70 74 65 6c 2d 62 65 64 72 6f 63 6b    2d 2d 6d 6f 64 65 6c 2d 69 64 73 0a 20 20 3b 3b  | ar.gptel-bedrock--model-ids...;; | 
| 1d500 |  20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 61 77    73 2e 61 6d 61 7a 6f 6e 2e 63 6f 6d 2f 62 65 64  | .https://docs.aws.amazon.com/bed | 
| 1d520 |  72 6f 63 6b 2f 6c 61 74 65 73 74 2f 75 73 65 72    67 75 69 64 65 2f 6d 6f 64 65 6c 73 2d 73 75 70  | rock/latest/userguide/models-sup | 
| 1d540 |  70 6f 72 74 65 64 2e 68 74 6d 6c 0a 20 20 27 28    28 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34  | ported.html...'((claude-sonnet-4 | 
| 1d560 |  2d 32 30 32 35 30 35 31 34 20 20 20 20 2e 20 22    61 6e 74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65  | -20250514......"anthropic.claude | 
| 1d580 |  2d 73 6f 6e 6e 65 74 2d 34 2d 32 30 32 35 30 35    31 34 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 63  | -sonnet-4-20250514-v1:0").....(c | 
| 1d5a0 |  6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 32 30 32    35 30 35 31 34 20 20 20 20 20 20 2e 20 22 61 6e  | laude-opus-4-20250514........"an | 
| 1d5c0 |  74 68 72 6f 70 69 63 2e 63 6c 61 75 64 65 2d 6f    70 75 73 2d 34 2d 32 30 32 35 30 35 31 34 2d 76  | thropic.claude-opus-4-20250514-v | 
| 1d5e0 |  31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64    65 2d 33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32  | 1:0").....(claude-3-7-sonnet-202 | 
| 1d600 |  35 30 32 31 39 20 20 2e 20 22 61 6e 74 68 72 6f    70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 37 2d 73  | 50219...."anthropic.claude-3-7-s | 
| 1d620 |  6f 6e 6e 65 74 2d 32 30 32 35 30 32 31 39 2d 76    31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64  | onnet-20250219-v1:0").....(claud | 
| 1d640 |  65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32    34 31 30 32 32 20 20 2e 20 22 61 6e 74 68 72 6f  | e-3-5-sonnet-20241022...."anthro | 
| 1d660 |  70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 35 2d 73    6f 6e 6e 65 74 2d 32 30 32 34 31 30 32 32 2d 76  | pic.claude-3-5-sonnet-20241022-v | 
| 1d680 |  32 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64    65 2d 33 2d 35 2d 73 6f 6e 6e 65 74 2d 32 30 32  | 2:0").....(claude-3-5-sonnet-202 | 
| 1d6a0 |  34 30 36 32 30 20 20 2e 20 22 61 6e 74 68 72 6f    70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 35 2d 73  | 40620...."anthropic.claude-3-5-s | 
| 1d6c0 |  6f 6e 6e 65 74 2d 32 30 32 34 30 36 32 30 2d 76    31 3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64  | onnet-20240620-v1:0").....(claud | 
| 1d6e0 |  65 2d 33 2d 35 2d 68 61 69 6b 75 2d 32 30 32 34    31 30 32 32 20 20 20 2e 20 22 61 6e 74 68 72 6f  | e-3-5-haiku-20241022....."anthro | 
| 1d700 |  70 69 63 2e 63 6c 61 75 64 65 2d 33 2d 35 2d 68    61 69 6b 75 2d 32 30 32 34 31 30 32 32 2d 76 31  | pic.claude-3-5-haiku-20241022-v1 | 
| 1d720 |  3a 30 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65    2d 33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39  | :0").....(claude-3-opus-20240229 | 
| 1d740 |  20 20 20 20 20 20 2e 20 22 61 6e 74 68 72 6f 70    69 63 2e 63 6c 61 75 64 65 2d 33 2d 6f 70 75 73  | ........"anthropic.claude-3-opus | 
| 1d760 |  2d 32 30 32 34 30 32 32 39 2d 76 31 3a 30 22 29    0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2d 73  | -20240229-v1:0").....(claude-3-s | 
| 1d780 |  6f 6e 6e 65 74 2d 32 30 32 34 30 32 32 39 20 20    20 20 2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63  | onnet-20240229......"anthropic.c | 
| 1d7a0 |  6c 61 75 64 65 2d 33 2d 73 6f 6e 6e 65 74 2d 32    30 32 34 30 32 32 39 2d 76 31 3a 30 22 29 0a 20  | laude-3-sonnet-20240229-v1:0").. | 
| 1d7c0 |  20 20 20 28 63 6c 61 75 64 65 2d 33 2d 68 61 69    6b 75 2d 32 30 32 34 30 33 30 37 20 20 20 20 20  | ...(claude-3-haiku-20240307..... | 
| 1d7e0 |  2e 20 22 61 6e 74 68 72 6f 70 69 63 2e 63 6c 61    75 64 65 2d 33 2d 68 61 69 6b 75 2d 32 30 32 34  | .."anthropic.claude-3-haiku-2024 | 
| 1d800 |  30 33 30 37 2d 76 31 3a 30 22 29 0a 20 20 20 20    28 6d 69 73 74 72 61 6c 2d 37 62 20 20 20 20 20  | 0307-v1:0").....(mistral-7b..... | 
| 1d820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22    6d 69 73 74 72 61 6c 2e 6d 69 73 74 72 61 6c 2d  | ..............."mistral.mistral- | 
| 1d840 |  37 62 2d 69 6e 73 74 72 75 63 74 2d 76 30 3a 32    22 29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d  | 7b-instruct-v0:2").....(mistral- | 
| 1d860 |  38 78 37 62 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 2e 20 22 6d 69 73 74 72 61 6c 2e 6d  | 8x7b.................."mistral.m | 
| 1d880 |  69 78 74 72 61 6c 2d 38 78 37 62 2d 69 6e 73 74    72 75 63 74 2d 76 30 3a 31 22 29 0a 20 20 20 20  | ixtral-8x7b-instruct-v0:1")..... | 
| 1d8a0 |  28 6d 69 73 74 72 61 6c 2d 6c 61 72 67 65 2d 32    34 30 32 20 20 20 20 20 20 20 20 20 20 2e 20 22  | (mistral-large-2402............" | 
| 1d8c0 |  6d 69 73 74 72 61 6c 2e 6d 69 73 74 72 61 6c 2d    6c 61 72 67 65 2d 32 34 30 32 2d 76 31 3a 30 22  | mistral.mistral-large-2402-v1:0" | 
| 1d8e0 |  29 0a 20 20 20 20 28 6d 69 73 74 72 61 6c 2d 6c    61 72 67 65 2d 32 34 30 37 20 20 20 20 20 20 20  | ).....(mistral-large-2407....... | 
| 1d900 |  20 20 20 2e 20 22 6d 69 73 74 72 61 6c 2e 6d 69    73 74 72 61 6c 2d 6c 61 72 67 65 2d 32 34 30 37  | ....."mistral.mistral-large-2407 | 
| 1d920 |  2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6d 69 73    74 72 61 6c 2d 73 6d 61 6c 6c 2d 32 34 30 32 20  | -v1:0").....(mistral-small-2402. | 
| 1d940 |  20 20 20 20 20 20 20 20 20 2e 20 22 6d 69 73 74    72 61 6c 2e 6d 69 73 74 72 61 6c 2d 73 6d 61 6c  | ..........."mistral.mistral-smal | 
| 1d960 |  6c 2d 32 34 30 32 2d 76 31 3a 30 22 29 0a 20 20    20 20 28 6c 6c 61 6d 61 2d 33 2d 38 62 20 20 20  | l-2402-v1:0").....(llama-3-8b... | 
| 1d980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e    20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 38 62  | ................."meta.llama3-8b | 
| 1d9a0 |  2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29    0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 37 30  | -instruct-v1:0").....(llama-3-70 | 
| 1d9c0 |  62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33  | b..................."meta.llama3 | 
| 1d9e0 |  2d 37 30 62 2d 69 6e 73 74 72 75 63 74 2d 76 31    3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d 61 2d  | -70b-instruct-v1:0").....(llama- | 
| 1da00 |  33 2d 31 2d 38 62 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e 6c 6c  | 3-1-8b.................."meta.ll | 
| 1da20 |  61 6d 61 33 2d 31 2d 38 62 2d 69 6e 73 74 72 75    63 74 2d 76 31 3a 30 22 29 0a 20 20 20 20 28 6c  | ama3-1-8b-instruct-v1:0").....(l | 
| 1da40 |  6c 61 6d 61 2d 33 2d 31 2d 37 30 62 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 2e 20 22 6d 65  | lama-3-1-70b................."me | 
| 1da60 |  74 61 2e 6c 6c 61 6d 61 33 2d 31 2d 37 30 62 2d    69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29 0a  | ta.llama3-1-70b-instruct-v1:0"). | 
| 1da80 |  20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 31 2d 34    30 35 62 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....(llama-3-1-405b............. | 
| 1daa0 |  20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d    31 2d 34 30 35 62 2d 69 6e 73 74 72 75 63 74 2d  | ..."meta.llama3-1-405b-instruct- | 
| 1dac0 |  76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d    61 2d 33 2d 32 2d 31 62 20 20 20 20 20 20 20 20  | v1:0").....(llama-3-2-1b........ | 
| 1dae0 |  20 20 20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e    6c 6c 61 6d 61 33 2d 32 2d 31 62 2d 69 6e 73 74  | .........."meta.llama3-2-1b-inst | 
| 1db00 |  72 75 63 74 2d 76 31 3a 30 22 29 0a 20 20 20 20    28 6c 6c 61 6d 61 2d 33 2d 32 2d 33 62 20 20 20  | ruct-v1:0").....(llama-3-2-3b... | 
| 1db20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 22    6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 32 2d 33 62  | ..............."meta.llama3-2-3b | 
| 1db40 |  2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30 22 29    0a 20 20 20 20 28 6c 6c 61 6d 61 2d 33 2d 32 2d  | -instruct-v1:0").....(llama-3-2- | 
| 1db60 |  31 31 62 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 2e 20 22 6d 65 74 61 2e 6c 6c 61 6d 61 33  | 11b................."meta.llama3 | 
| 1db80 |  2d 32 2d 31 31 62 2d 69 6e 73 74 72 75 63 74 2d    76 31 3a 30 22 29 0a 20 20 20 20 28 6c 6c 61 6d  | -2-11b-instruct-v1:0").....(llam | 
| 1dba0 |  61 2d 33 2d 32 2d 39 30 62 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 2e 20 22 6d 65 74 61 2e  | a-3-2-90b................."meta. | 
| 1dbc0 |  6c 6c 61 6d 61 33 2d 32 2d 39 30 62 2d 69 6e 73    74 72 75 63 74 2d 76 31 3a 30 22 29 0a 20 20 20  | llama3-2-90b-instruct-v1:0").... | 
| 1dbe0 |  20 28 6c 6c 61 6d 61 2d 33 2d 33 2d 37 30 62 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20  | .(llama-3-3-70b................. | 
| 1dc00 |  22 6d 65 74 61 2e 6c 6c 61 6d 61 33 2d 33 2d 37    30 62 2d 69 6e 73 74 72 75 63 74 2d 76 31 3a 30  | "meta.llama3-3-70b-instruct-v1:0 | 
| 1dc20 |  22 29 29 0a 20 20 22 4d 61 70 20 6f 66 20 6d 6f    64 65 6c 20 6e 61 6d 65 20 74 6f 20 62 65 64 72  | "))..."Map.of.model.name.to.bedr | 
| 1dc40 |  6f 63 6b 20 69 64 2e 0a 0a 49 44 73 20 63 61 6e    20 62 65 20 61 64 64 65 64 20 6f 72 20 72 65 70  | ock.id...IDs.can.be.added.or.rep | 
| 1dc60 |  6c 61 63 65 64 20 62 79 20 63 61 6c 6c 69 6e 67    0a 5c 28 70 75 73 68 20 28 6d 6f 64 65 6c 2d 6e  | laced.by.calling.\(push.(model-n | 
| 1dc80 |  61 6d 65 20 2e 20 5c 22 6d 6f 64 65 6c 2d 69 64    5c 22 29 20 67 70 74 65 6c 2d 62 65 64 72 6f 63  | ame...\"model-id\").gptel-bedroc | 
| 1dca0 |  6b 2d 2d 6d 6f 64 65 6c 2d 69 64 73 29 2e 22 29    0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d  | k--model-ids).")..(defvar.gptel- | 
| 1dcc0 |  2d 62 65 64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 0a    20 20 28 6d 61 70 63 61 72 20 23 27 63 61 72 20  | -bedrock-models...(mapcar.#'car. | 
| 1dce0 |  67 70 74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 6d    6f 64 65 6c 2d 69 64 73 29 0a 20 20 22 4c 69 73  | gptel-bedrock--model-ids)..."Lis | 
| 1dd00 |  74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 41    57 53 20 42 65 64 72 6f 63 6b 20 6d 6f 64 65 6c  | t.of.available.AWS.Bedrock.model | 
| 1dd20 |  73 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64    20 70 72 6f 70 65 72 74 69 65 73 2e 22 29 0a 0a  | s.and.associated.properties.").. | 
| 1dd40 |  28 64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64    72 6f 63 6b 2d 2d 67 65 74 2d 6d 6f 64 65 6c 2d  | (defun.gptel-bedrock--get-model- | 
| 1dd60 |  69 64 20 28 6d 6f 64 65 6c 20 26 6f 70 74 69 6f    6e 61 6c 20 72 65 67 69 6f 6e 29 0a 20 20 22 52  | id.(model.&optional.region)..."R | 
| 1dd80 |  65 74 75 72 6e 20 74 68 65 20 42 65 64 72 6f 63    6b 20 6d 6f 64 65 6c 20 49 44 20 66 6f 72 20 4d  | eturn.the.Bedrock.model.ID.for.M | 
| 1dda0 |  4f 44 45 4c 2e 0a 0a 52 45 47 49 4f 4e 20 69 73    20 6f 6e 65 20 6f 66 20 61 70 61 63 2c 20 65 75  | ODEL...REGION.is.one.of.apac,.eu | 
| 1ddc0 |  20 6f 72 20 75 73 2e 22 0a 20 20 28 63 6f 6e 63    61 74 0a 20 20 20 28 77 68 65 6e 20 72 65 67 69  | .or.us."...(concat....(when.regi | 
| 1dde0 |  6f 6e 0a 20 20 20 20 20 28 6f 72 20 28 6d 65 6d    62 65 72 20 72 65 67 69 6f 6e 20 27 28 61 70 61  | on......(or.(member.region.'(apa | 
| 1de00 |  63 20 65 75 20 75 73 29 29 0a 09 20 28 65 72 72    6f 72 20 22 55 6e 6b 6e 6f 77 6e 20 42 65 64 72  | c.eu.us))...(error."Unknown.Bedr | 
| 1de20 |  6f 63 6b 20 72 65 67 69 6f 6e 20 25 73 22 20 72    65 67 69 6f 6e 29 29 0a 20 20 20 20 20 28 63 6f  | ock.region.%s".region))......(co | 
| 1de40 |  6e 63 61 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d    65 20 72 65 67 69 6f 6e 29 20 22 2e 22 29 29 0a  | ncat.(symbol-name.region).".")). | 
| 1de60 |  20 20 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65    74 20 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 62 65  | ...(or.(alist-get.model.gptel-be | 
| 1de80 |  64 72 6f 63 6b 2d 2d 6d 6f 64 65 6c 2d 69 64 73    20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 29 0a 20  | drock--model-ids.nil.nil.#'eq).. | 
| 1dea0 |  20 20 20 20 20 20 28 65 72 72 6f 72 20 22 55 6e    6b 6e 6f 77 6e 20 42 65 64 72 6f 63 6b 20 6d 6f  | ......(error."Unknown.Bedrock.mo | 
| 1dec0 |  64 65 6c 3a 20 25 73 22 20 6d 6f 64 65 6c 29 29    29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c  | del:.%s".model))))..(defun.gptel | 
| 1dee0 |  2d 62 65 64 72 6f 63 6b 2d 2d 63 75 72 6c 2d 61    72 67 73 20 28 72 65 67 69 6f 6e 29 0a 20 20 22  | -bedrock--curl-args.(region)..." | 
| 1df00 |  47 65 6e 65 72 61 74 65 20 74 68 65 20 63 75 72    6c 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 67  | Generate.the.curl.arguments.to.g | 
| 1df20 |  65 74 20 61 20 62 65 64 72 6f 63 6b 20 72 65 71    75 65 73 74 20 73 69 67 6e 65 64 20 66 6f 72 20  | et.a.bedrock.request.signed.for. | 
| 1df40 |  75 73 65 20 69 6e 20 52 45 47 49 4f 4e 2e 22 0a    20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 63 75 72  | use.in.REGION."...;;.https://cur | 
| 1df60 |  6c 2e 73 65 2f 64 6f 63 73 2f 6d 61 6e 70 61 67    65 2e 68 74 6d 6c 23 2d 2d 61 77 73 2d 73 69 67  | l.se/docs/manpage.html#--aws-sig | 
| 1df80 |  76 34 0a 20 20 28 63 6c 2d 6d 75 6c 74 69 70 6c    65 2d 76 61 6c 75 65 2d 62 69 6e 64 20 28 6b 65  | v4...(cl-multiple-value-bind.(ke | 
| 1dfa0 |  79 2d 69 64 20 73 65 63 72 65 74 20 74 6f 6b 65    6e 29 20 28 67 70 74 65 6c 2d 62 65 64 72 6f 63  | y-id.secret.token).(gptel-bedroc | 
| 1dfc0 |  6b 2d 2d 67 65 74 2d 63 72 65 64 65 6e 74 69 61    6c 73 29 0a 20 20 20 20 28 6e 63 6f 6e 63 0a 20  | k--get-credentials).....(nconc.. | 
| 1dfe0 |  20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20    22 2d 2d 75 73 65 72 22 20 28 66 6f 72 6d 61 74  | ....(list......."--user".(format | 
| 1e000 |  20 22 25 73 3a 25 73 22 20 6b 65 79 2d 69 64 20    73 65 63 72 65 74 29 0a 20 20 20 20 20 20 22 2d  | ."%s:%s".key-id.secret)......."- | 
| 1e020 |  2d 61 77 73 2d 73 69 67 76 34 22 20 28 66 6f 72    6d 61 74 20 22 61 77 73 3a 61 6d 7a 3a 25 73 3a  | -aws-sigv4".(format."aws:amz:%s: | 
| 1e040 |  62 65 64 72 6f 63 6b 22 20 72 65 67 69 6f 6e 29    29 0a 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28  | bedrock".region))......(unless.( | 
| 1e060 |  6d 65 6d 71 20 73 79 73 74 65 6d 2d 74 79 70 65    20 27 28 77 69 6e 64 6f 77 73 2d 6e 74 20 6d 73  | memq.system-type.'(windows-nt.ms | 
| 1e080 |  2d 64 6f 73 29 29 0a 20 20 20 20 20 20 20 3b 3b    20 57 69 74 68 6f 75 74 20 74 68 69 73 20 63 75  | -dos))........;;.Without.this.cu | 
| 1e0a0 |  72 6c 20 73 77 61 6c 6c 6f 77 73 20 74 68 65 20    6f 75 74 70 75 74 0a 20 20 20 20 20 20 20 28 6c  | rl.swallows.the.output........(l | 
| 1e0c0 |  69 73 74 20 22 2d 2d 6f 75 74 70 75 74 22 20 22    2f 64 65 76 2f 73 74 64 6f 75 74 22 29 29 0a 20  | ist."--output"."/dev/stdout")).. | 
| 1e0e0 |  20 20 20 20 28 77 68 65 6e 20 74 6f 6b 65 6e 0a    20 20 20 20 20 20 20 28 6c 69 73 74 20 28 66 6f  | ....(when.token........(list.(fo | 
| 1e100 |  72 6d 61 74 20 22 2d 48 78 2d 61 6d 7a 2d 73 65    63 75 72 69 74 79 2d 74 6f 6b 65 6e 3a 20 25 73  | rmat."-Hx-amz-security-token:.%s | 
| 1e120 |  22 20 74 6f 6b 65 6e 29 29 29 29 29 29 0a 0a 28    64 65 66 75 6e 20 67 70 74 65 6c 2d 62 65 64 72  | ".token))))))..(defun.gptel-bedr | 
| 1e140 |  6f 63 6b 2d 2d 63 75 72 6c 2d 76 65 72 73 69 6f    6e 20 28 29 0a 20 20 22 43 68 65 63 6b 20 43 75  | ock--curl-version.()..."Check.Cu | 
| 1e160 |  72 6c 20 76 65 72 73 69 6f 6e 20 72 65 71 75 69    72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 62 65  | rl.version.required.for.gptel-be | 
| 1e180 |  64 72 6f 63 6b 2e 22 0a 20 20 28 6c 65 74 2a 20    28 28 6f 75 74 70 75 74 20 28 73 68 65 6c 6c 2d  | drock."...(let*.((output.(shell- | 
| 1e1a0 |  63 6f 6d 6d 61 6e 64 2d 74 6f 2d 73 74 72 69 6e    67 20 22 63 75 72 6c 20 2d 2d 76 65 72 73 69 6f  | command-to-string."curl.--versio | 
| 1e1c0 |  6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 76    65 72 73 69 6f 6e 20 28 61 6e 64 20 28 73 74 72  | n"))..........(version.(and.(str | 
| 1e1e0 |  69 6e 67 2d 6d 61 74 63 68 20 22 5e 63 75 72 6c    20 5c 5c 28 5b 30 2d 39 2e 5d 2b 5c 5c 29 22 20  | ing-match."^curl.\\([0-9.]+\\)". | 
| 1e200 |  6f 75 74 70 75 74 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | output)........................( | 
| 1e220 |  6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 6f    75 74 70 75 74 29 29 29 29 0a 20 20 20 20 76 65  | match-string.1.output)))).....ve | 
| 1e240 |  72 73 69 6f 6e 29 29 0a 0a 3b 3b 3b 23 23 23 61    75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75  | rsion))..;;;###autoload.(cl-defu | 
| 1e260 |  6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 62 65 64    72 6f 63 6b 0a 20 20 20 20 28 6e 61 6d 65 20 26  | n.gptel-make-bedrock.....(name.& | 
| 1e280 |  6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 72 65    67 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28  | key...........region...........( | 
| 1e2a0 |  6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d 62 65    64 72 6f 63 6b 2d 6d 6f 64 65 6c 73 29 0a 09 20  | models.gptel--bedrock-models)... | 
| 1e2c0 |  20 28 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20 6e    69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 73  | .(model-region.nil)...........(s | 
| 1e2e0 |  74 72 65 61 6d 20 6e 69 6c 29 0a 09 20 20 63 75    72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20  | tream.nil)....curl-args......... | 
| 1e300 |  20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74    70 73 22 29 29 0a 20 20 22 52 65 67 69 73 74 65  | ..(protocol."https"))..."Registe | 
| 1e320 |  72 20 61 6e 20 41 57 53 20 42 65 64 72 6f 63 6b    20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74  | r.an.AWS.Bedrock.backend.for.gpt | 
| 1e340 |  65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b    65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73  | el.with.NAME...Keyword.arguments | 
| 1e360 |  3a 0a 0a 52 45 47 49 4f 4e 20 2d 20 41 57 53 20    72 65 67 69 6f 6e 20 6e 61 6d 65 20 28 65 2e 67  | :..REGION.-.AWS.region.name.(e.g | 
| 1e380 |  2e 20 5c 22 75 73 2d 65 61 73 74 2d 31 5c 22 29    0a 4d 4f 44 45 4c 53 20 2d 20 54 68 65 20 6c 69  | ..\"us-east-1\").MODELS.-.The.li | 
| 1e3a0 |  73 74 20 6f 66 20 6d 6f 64 65 6c 73 20 73 75 70    70 6f 72 74 65 64 20 62 79 20 74 68 69 73 20 62  | st.of.models.supported.by.this.b | 
| 1e3c0 |  61 63 6b 65 6e 64 0a 4d 4f 44 45 4c 2d 52 45 47    49 4f 4e 20 2d 20 6f 6e 65 20 6f 66 20 61 70 61  | ackend.MODEL-REGION.-.one.of.apa | 
| 1e3e0 |  63 2c 20 65 75 2c 20 75 73 20 6f 72 20 6e 69 6c    0a 43 55 52 4c 2d 41 52 47 53 20 2d 20 61 64 64  | c,.eu,.us.or.nil.CURL-ARGS.-.add | 
| 1e400 |  69 74 69 6f 6e 61 6c 20 63 75 72 6c 20 61 72 67    73 0a 53 54 52 45 41 4d 20 2d 20 57 68 65 74 68  | itional.curl.args.STREAM.-.Wheth | 
| 1e420 |  65 72 20 74 6f 20 75 73 65 20 73 74 72 65 61 6d    69 6e 67 20 72 65 73 70 6f 6e 73 65 73 20 6f 72  | er.to.use.streaming.responses.or | 
| 1e440 |  20 6e 6f 74 2e 22 0a 20 20 28 64 65 63 6c 61 72    65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20  | .not."...(declare.(indent.1))... | 
| 1e460 |  28 75 6e 6c 65 73 73 20 28 61 6e 64 20 67 70 74    65 6c 2d 75 73 65 2d 63 75 72 6c 20 28 76 65 72  | (unless.(and.gptel-use-curl.(ver | 
| 1e480 |  73 69 6f 6e 3c 3d 20 22 38 2e 35 22 20 28 67 70    74 65 6c 2d 62 65 64 72 6f 63 6b 2d 2d 63 75 72  | sion<=."8.5".(gptel-bedrock--cur | 
| 1e4a0 |  6c 2d 76 65 72 73 69 6f 6e 29 29 29 0a 20 20 20    20 28 65 72 72 6f 72 20 22 42 65 64 72 6f 63 6b  | l-version))).....(error."Bedrock | 
| 1e4c0 |  2d 62 61 63 6b 65 6e 64 20 72 65 71 75 69 72 65    73 20 63 75 72 6c 20 3e 3d 20 38 2e 35 2c 20 62  | -backend.requires.curl.>=.8.5,.b | 
| 1e4e0 |  75 74 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72    6c 20 3a 3d 20 25 73 2c 20 63 75 72 6c 2d 76 65  | ut.gptel-use-curl.:=.%s,.curl-ve | 
| 1e500 |  72 73 69 6f 6e 20 3a 3d 20 25 73 22 0a 20 20 20    20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 75 73  | rsion.:=.%s"............gptel-us | 
| 1e520 |  65 2d 63 75 72 6c 20 28 67 70 74 65 6c 2d 62 65    64 72 6f 63 6b 2d 2d 63 75 72 6c 2d 76 65 72 73  | e-curl.(gptel-bedrock--curl-vers | 
| 1e540 |  69 6f 6e 29 29 29 0a 20 20 28 6c 65 74 20 28 28    68 6f 73 74 20 28 66 6f 72 6d 61 74 20 22 62 65  | ion)))...(let.((host.(format."be | 
| 1e560 |  64 72 6f 63 6b 2d 72 75 6e 74 69 6d 65 2e 25 73    2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 22 20  | drock-runtime.%s.amazonaws.com". | 
| 1e580 |  72 65 67 69 6f 6e 29 29 29 0a 20 20 20 20 28 73    65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e  | region))).....(setf.(alist-get.n | 
| 1e5a0 |  61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e    2d 62 61 63 6b 65 6e 64 73 20 6e 69 6c 20 6e 69  | ame.gptel--known-backends.nil.ni | 
| 1e5c0 |  6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20    20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 61 6b  | l.#'equal)...........(gptel--mak | 
| 1e5e0 |  65 2d 62 65 64 72 6f 63 6b 0a 20 20 20 20 20 20    20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a  | e-bedrock............:name.name. | 
| 1e600 |  20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74    20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20  | ...........:host.host........... | 
| 1e620 |  20 3a 68 65 61 64 65 72 20 6e 69 6c 20 20 20 20    20 20 20 20 20 20 20 3b 20 78 2d 61 6d 7a 2d 73  | .:header.nil...........;.x-amz-s | 
| 1e640 |  65 63 75 72 69 74 79 2d 74 6f 6b 65 6e 20 69 73    20 73 65 74 20 69 6e 20 63 75 72 6c 2d 61 72 67  | ecurity-token.is.set.in.curl-arg | 
| 1e660 |  73 20 69 66 20 6e 65 65 64 65 64 0a 20 20 20 20    20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 28  | s.if.needed............:models.( | 
| 1e680 |  67 70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d    6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a 09 20  | gptel--process-models.models)... | 
| 1e6a0 |  20 20 3a 6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 20    6d 6f 64 65 6c 2d 72 65 67 69 6f 6e 0a 20 20 20  | ..:model-region.model-region.... | 
| 1e6c0 |  20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f    6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20  | ........:protocol.protocol...... | 
| 1e6e0 |  20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20    22 22 20 3b 20 55 72 6c 20 69 73 20 64 79 6e 61  | ......:endpoint."".;.Url.is.dyna | 
| 1e700 |  6d 69 63 61 6c 6c 79 20 63 6f 6e 73 74 72 75 63    74 65 64 20 62 61 73 65 64 20 6f 6e 20 6f 74 68  | mically.constructed.based.on.oth | 
| 1e720 |  65 72 20 61 72 67 73 0a 20 20 20 20 20 20 20 20    20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61  | er.args............:stream.strea | 
| 1e740 |  6d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f    64 69 6e 67 2d 73 79 73 74 65 6d 20 28 61 6e 64  | m............:coding-system.(and | 
| 1e760 |  20 73 74 72 65 61 6d 20 27 62 69 6e 61 72 79 29    0a 20 20 20 20 20 20 20 20 20 20 20 3a 63 75 72  | .stream.'binary)............:cur | 
| 1e780 |  6c 2d 61 72 67 73 20 28 6c 61 6d 62 64 61 20 28    29 20 28 61 70 70 65 6e 64 20 63 75 72 6c 2d 61  | l-args.(lambda.().(append.curl-a | 
| 1e7a0 |  72 67 73 20 28 67 70 74 65 6c 2d 62 65 64 72 6f    63 6b 2d 2d 63 75 72 6c 2d 61 72 67 73 20 72 65  | rgs.(gptel-bedrock--curl-args.re | 
| 1e7c0 |  67 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 3a 75 72 6c 0a 20 20 20 20 20 20 20 20  | gion)))............:url......... | 
| 1e7e0 |  20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63  | ...(lambda.()..............(conc | 
| 1e800 |  61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f    22 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20  | at.protocol."://".host.......... | 
| 1e820 |  20 20 20 20 20 20 20 20 20 20 20 20 22 2f 6d 6f    64 65 6c 2f 22 20 28 67 70 74 65 6c 2d 62 65 64  | ............"/model/".(gptel-bed | 
| 1e840 |  72 6f 63 6b 2d 2d 67 65 74 2d 6d 6f 64 65 6c 2d    69 64 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 6d  | rock--get-model-id.gptel-model.m | 
| 1e860 |  6f 64 65 6c 2d 72 65 67 69 6f 6e 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | odel-region).................... | 
| 1e880 |  20 20 22 2f 22 20 28 69 66 20 73 74 72 65 61 6d    20 22 63 6f 6e 76 65 72 73 65 2d 73 74 72 65 61  | .."/".(if.stream."converse-strea | 
| 1e8a0 |  6d 22 20 22 63 6f 6e 76 65 72 73 65 22 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 29 29 29 29  | m"."converse")))............)))) | 
| 1e8c0 |  0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65    6c 2d 62 65 64 72 6f 63 6b 29 0a 3b 3b 3b 20 67  | ..(provide.'gptel-bedrock).;;;.g | 
| 1e8e0 |  70 74 65 6c 2d 62 65 64 72 6f 63 6b 2e 65 6c 20    65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00  | ptel-bedrock.el.ends.here....... | 
| 1e900 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1e920 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1e940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1e960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1e980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1e9a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1e9c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1e9e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ea00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 6f 6c 6c 61 6d 61 2e 65 6c 00 00 00  | gptel-0.9.8.5/gptel-ollama.el... | 
| 1ea20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ea40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ea60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 1ea80 |  30 30 33 33 37 30 32 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 33 35 32 00 20 30 00 00 00  | 0033702.00000000000.014352..0... | 
| 1eaa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1eac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1eae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1eb00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 1eb20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 1eb40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1eb60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1eb80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1eba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ebc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ebe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ec00 |  3b 3b 3b 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61    2e 65 6c 20 2d 2d 2d 20 4f 6c 6c 61 6d 61 20 73  | ;;;.gptel-ollama.el.---.Ollama.s | 
| 1ec20 |  75 70 70 6f 72 74 20 66 6f 72 20 67 70 74 65 6c    20 20 20 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c  | upport.for.gptel.....-*-.lexical | 
| 1ec40 |  2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d    0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28  | -binding:.t;.-*-..;;.Copyright.( | 
| 1ec60 |  43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | C).2023-2025..Karthik.Chikmagalu | 
| 1ec80 |  72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | r..;;.Author:.Karthik.Chikmagalu | 
| 1eca0 |  72 20 3c 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61    67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e  | r.<karthikchikmagalur@gmail.com> | 
| 1ecc0 |  0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 68 79    70 65 72 6d 65 64 69 61 0a 0a 3b 3b 20 54 68 69  | .;;.Keywords:.hypermedia..;;.Thi | 
| 1ece0 |  73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65    65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20  | s.program.is.free.software;.you. | 
| 1ed00 |  63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65    20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66  | can.redistribute.it.and/or.modif | 
| 1ed20 |  79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68    65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47  | y.;;.it.under.the.terms.of.the.G | 
| 1ed40 |  4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69    63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62  | NU.General.Public.License.as.pub | 
| 1ed60 |  6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65    20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46  | lished.by.;;.the.Free.Software.F | 
| 1ed80 |  6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65    72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74  | oundation,.either.version.3.of.t | 
| 1eda0 |  68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b    3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f  | he.License,.or.;;.(at.your.optio | 
| 1edc0 |  6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72    73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70  | n).any.later.version...;;.This.p | 
| 1ede0 |  72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69    62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70  | rogram.is.distributed.in.the.hop | 
| 1ee00 |  65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62    65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74  | e.that.it.will.be.useful,.;;.but | 
| 1ee20 |  20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52    52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65  | .WITHOUT.ANY.WARRANTY;.without.e | 
| 1ee40 |  76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20    77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d  | ven.the.implied.warranty.of.;;.M | 
| 1ee60 |  45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f    72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20  | ERCHANTABILITY.or.FITNESS.FOR.A. | 
| 1ee80 |  50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f    53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20  | PARTICULAR.PURPOSE...See.the.;;. | 
| 1eea0 |  47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c    69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d  | GNU.General.Public.License.for.m | 
| 1eec0 |  6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b    20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65  | ore.details...;;.You.should.have | 
| 1eee0 |  20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79    20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65  | .received.a.copy.of.the.GNU.Gene | 
| 1ef00 |  72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e    73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68  | ral.Public.License.;;.along.with | 
| 1ef20 |  20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20    49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74  | .this.program...If.not,.see.<htt | 
| 1ef40 |  70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67    2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b  | ps://www.gnu.org/licenses/>...;; | 
| 1ef60 |  3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b    3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 64 73  | ;.Commentary:..;;.This.file.adds | 
| 1ef80 |  20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65    20 4f 6c 6c 61 6d 61 20 4c 4c 4d 20 41 50 49 20  | .support.for.the.Ollama.LLM.API. | 
| 1efa0 |  74 6f 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f    64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 67 70  | to.gptel..;;;.Code:.(require.'gp | 
| 1efc0 |  74 65 6c 29 0a 28 72 65 71 75 69 72 65 20 27 63    6c 2d 67 65 6e 65 72 69 63 29 0a 0a 28 64 65 63  | tel).(require.'cl-generic)..(dec | 
| 1efe0 |  6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73    6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 20 28  | lare-function.json-read."json".( | 
| 1f000 |  29 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63    74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65  | )).(declare-function.gptel-conte | 
| 1f020 |  78 74 2d 2d 77 72 61 70 20 22 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61  | xt--wrap."gptel-context").(decla | 
| 1f040 |  72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65    6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65  | re-function.gptel-context--colle | 
| 1f060 |  63 74 2d 6d 65 64 69 61 20 22 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 22 29 0a 28 64 65 66 76 61  | ct-media."gptel-context").(defva | 
| 1f080 |  72 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79    70 65 29 0a 0a 3b 3b 3b 20 4f 6c 6c 61 6d 61 0a  | r.json-object-type)..;;;.Ollama. | 
| 1f0a0 |  28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67    70 74 65 6c 2d 6f 6c 6c 61 6d 61 20 28 3a 63 6f  | (cl-defstruct.(gptel-ollama.(:co | 
| 1f0c0 |  6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d    2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 29 0a 20 20  | nstructor.gptel--make-ollama)... | 
| 1f0e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69  | ..........................(:copi | 
| 1f100 |  65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | er.nil)......................... | 
| 1f120 |  20 20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70    74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 0a  | ....(:include.gptel-backend))).. | 
| 1f140 |  3b 3b 20 46 49 58 4d 45 28 66 73 6d 29 20 52 65    6d 6f 76 65 20 74 68 69 73 20 76 61 72 69 61 62  | ;;.FIXME(fsm).Remove.this.variab | 
| 1f160 |  6c 65 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c    20 67 70 74 65 6c 2d 2d 6f 6c 6c 61 6d 61 2d 74  | le.(defvar-local.gptel--ollama-t | 
| 1f180 |  6f 6b 65 6e 2d 63 6f 75 6e 74 20 30 0a 20 20 22    54 6f 6b 65 6e 20 63 6f 75 6e 74 20 66 6f 72 20  | oken-count.0..."Token.count.for. | 
| 1f1a0 |  6f 6c 6c 61 6d 61 20 63 6f 6e 76 65 72 73 61 74    69 6f 6e 73 2e 0a 0a 54 68 69 73 20 76 61 72 69  | ollama.conversations...This.vari | 
| 1f1c0 |  61 62 6c 65 20 68 6f 6c 64 73 20 74 68 65 20 74    6f 74 61 6c 20 74 6f 6b 65 6e 20 63 6f 75 6e 74  | able.holds.the.total.token.count | 
| 1f1e0 |  20 66 6f 72 20 63 6f 6e 76 65 72 73 61 74 69 6f    6e 73 20 77 69 74 68 0a 4f 6c 6c 61 6d 61 20 6d  | .for.conversations.with.Ollama.m | 
| 1f200 |  6f 64 65 6c 73 2e 0a 0a 49 6e 74 65 6e 64 65 64    20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73  | odels...Intended.for.internal.us | 
| 1f220 |  65 20 6f 6e 6c 79 2e 22 29 0a 0a 28 63 6c 2d 64    65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 63  | e.only.")..(cl-defmethod.gptel-c | 
| 1f240 |  75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61    6d 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74  | url--parse-stream.((_backend.gpt | 
| 1f260 |  65 6c 2d 6f 6c 6c 61 6d 61 29 20 69 6e 66 6f 29    0a 20 20 22 50 61 72 73 65 20 72 65 73 70 6f 6e  | el-ollama).info)..."Parse.respon | 
| 1f280 |  73 65 20 73 74 72 65 61 6d 20 66 6f 72 20 74 68    65 20 4f 6c 6c 61 6d 61 20 41 50 49 2e 22 0a 20  | se.stream.for.the.Ollama.API.".. | 
| 1f2a0 |  20 28 77 68 65 6e 20 28 61 6e 64 20 28 62 6f 62    70 29 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f  | .(when.(and.(bobp).(re-search-fo | 
| 1f2c0 |  72 77 61 72 64 20 22 5e 7b 22 20 6e 69 6c 20 74    29 29 0a 20 20 20 20 28 66 6f 72 77 61 72 64 2d  | rward."^{".nil.t)).....(forward- | 
| 1f2e0 |  6c 69 6e 65 20 30 29 29 0a 20 20 28 6c 65 74 2a    20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29  | line.0))...(let*.((content-strs) | 
| 1f300 |  20 28 63 6f 6e 74 65 6e 74 29 20 28 70 74 20 28    70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 63 6f  | .(content).(pt.(point))).....(co | 
| 1f320 |  6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c    0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20  | ndition-case.nil.........(while. | 
| 1f340 |  28 73 65 74 71 20 63 6f 6e 74 65 6e 74 20 28 67    70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29  | (setq.content.(gptel--json-read) | 
| 1f360 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74    71 20 70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20  | )...........(setq.pt.(point))... | 
| 1f380 |  20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64    6f 6e 65 20 28 6d 61 70 2d 65 6c 74 20 63 6f 6e  | ........(let.((done.(map-elt.con | 
| 1f3a0 |  74 65 6e 74 20 3a 64 6f 6e 65 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65  | tent.:done)).................(re | 
| 1f3c0 |  73 70 6f 6e 73 65 20 28 6d 61 70 2d 6e 65 73 74    65 64 2d 65 6c 74 20 63 6f 6e 74 65 6e 74 20 27  | sponse.(map-nested-elt.content.' | 
| 1f3e0 |  28 3a 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65    6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | (:message.:content)))).......... | 
| 1f400 |  20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 72 65    73 70 6f 6e 73 65 20 28 6e 6f 74 20 28 65 71 20  | ...(when.(and.response.(not.(eq. | 
| 1f420 |  72 65 73 70 6f 6e 73 65 20 3a 6e 75 6c 6c 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | response.:null)))............... | 
| 1f440 |  28 70 75 73 68 20 72 65 73 70 6f 6e 73 65 20 63    6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 0a 20 20  | (push.response.content-strs))... | 
| 1f460 |  20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73    73 20 28 65 71 20 64 6f 6e 65 20 3a 6a 73 6f 6e  | ..........(unless.(eq.done.:json | 
| 1f480 |  2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72  | -false)...............(with-curr | 
| 1f4a0 |  65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73    74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66  | ent-buffer.(plist-get.info.:buff | 
| 1f4c0 |  65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6c 2d 69 6e 63 66 20 67 70 74  | er).................(cl-incf.gpt | 
| 1f4e0 |  65 6c 2d 2d 6f 6c 6c 61 6d 61 2d 74 6f 6b 65 6e    2d 63 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 20  | el--ollama-token-count.......... | 
| 1f500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 2b 20 28 6f 72 20 28 6d 61 70 2d 65 6c 74 20  | ................(+.(or.(map-elt. | 
| 1f520 |  63 6f 6e 74 65 6e 74 20 3a 70 72 6f 6d 70 74 5f    65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 0a 20  | content.:prompt_eval_count).0).. | 
| 1f540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28  | ...........................(or.( | 
| 1f560 |  6d 61 70 2d 65 6c 74 20 63 6f 6e 74 65 6e 74 20    3a 65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 29  | map-elt.content.:eval_count).0)) | 
| 1f580 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69  | ))...............(goto-char.(poi | 
| 1f5a0 |  6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20    20 20 28 65 72 72 6f 72 20 28 67 6f 74 6f 2d 63  | nt-max))))).......(error.(goto-c | 
| 1f5c0 |  68 61 72 20 70 74 29 29 29 0a 20 20 20 20 28 61    70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e  | har.pt))).....(apply.#'concat.(n | 
| 1f5e0 |  72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e 74 2d    73 74 72 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65  | reverse.content-strs))))..(cl-de | 
| 1f600 |  66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70    61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 28  | fmethod.gptel--parse-response.(( | 
| 1f620 |  5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f    6c 6c 61 6d 61 29 20 72 65 73 70 6f 6e 73 65 20  | _backend.gptel-ollama).response. | 
| 1f640 |  69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61    20 6f 6e 65 2d 73 68 6f 74 20 52 45 53 50 4f 4e  | info)..."Parse.a.one-shot.RESPON | 
| 1f660 |  53 45 20 66 72 6f 6d 20 74 68 65 20 4f 6c 6c 61    6d 61 20 41 50 49 20 61 6e 64 20 72 65 74 75 72  | SE.from.the.Ollama.API.and.retur | 
| 1f680 |  6e 20 74 65 78 74 2e 0a 0a 53 74 6f 72 65 20 72    65 73 70 6f 6e 73 65 20 6d 65 74 61 64 61 74 61  | n.text...Store.response.metadata | 
| 1f6a0 |  20 69 6e 20 73 74 61 74 65 20 49 4e 46 4f 2e 22    0a 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e  | .in.state.INFO."...(plist-put.in | 
| 1f6c0 |  66 6f 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 20    28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f  | fo.:stop-reason.(plist-get.respo | 
| 1f6e0 |  6e 73 65 20 3a 64 6f 6e 65 5f 72 65 61 73 6f 6e    29 29 0a 20 20 28 70 6c 69 73 74 2d 70 75 74 20  | nse.:done_reason))...(plist-put. | 
| 1f700 |  69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d 74 6f 6b    65 6e 73 20 28 70 6c 69 73 74 2d 67 65 74 20 72  | info.:output-tokens.(plist-get.r | 
| 1f720 |  65 73 70 6f 6e 73 65 20 3a 65 76 61 6c 5f 63 6f    75 6e 74 29 29 0a 20 20 28 6c 65 74 2a 20 28 28  | esponse.:eval_count))...(let*.(( | 
| 1f740 |  6d 65 73 73 61 67 65 20 28 70 6c 69 73 74 2d 67    65 74 20 72 65 73 70 6f 6e 73 65 20 3a 6d 65 73  | message.(plist-get.response.:mes | 
| 1f760 |  73 61 67 65 29 29 0a 20 20 20 20 20 20 20 20 20    28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d  | sage))..........(content.(plist- | 
| 1f780 |  67 65 74 20 6d 65 73 73 61 67 65 20 3a 63 6f 6e    74 65 6e 74 29 29 29 0a 20 20 20 20 28 69 66 20  | get.message.:content))).....(if. | 
| 1f7a0 |  28 61 6e 64 20 63 6f 6e 74 65 6e 74 20 28 6e 6f    74 20 28 6f 72 20 28 65 71 20 63 6f 6e 74 65 6e  | (and.content.(not.(or.(eq.conten | 
| 1f7c0 |  74 20 3a 6e 75 6c 6c 29 20 28 73 74 72 69 6e 67    2d 65 6d 70 74 79 2d 70 20 63 6f 6e 74 65 6e 74  | t.:null).(string-empty-p.content | 
| 1f7e0 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 63 6f 6e    74 65 6e 74 0a 20 20 20 20 20 20 28 70 72 6f 67  | )))).........content.......(prog | 
| 1f800 |  31 20 6e 69 6c 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 4c  | 1.nil........................;.L | 
| 1f820 |  6f 6f 6b 20 66 6f 72 20 74 6f 6f 6c 20 63 61 6c    6c 73 20 6f 6e 6c 79 20 69 66 20 6e 6f 20 63 6f  | ook.for.tool.calls.only.if.no.co | 
| 1f840 |  6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 28 77    68 65 6e 2d 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d  | ntent.........(when-let*.((tool- | 
| 1f860 |  63 61 6c 6c 73 20 28 70 6c 69 73 74 2d 67 65 74    20 6d 65 73 73 61 67 65 20 3a 74 6f 6f 6c 5f 63  | calls.(plist-get.message.:tool_c | 
| 1f880 |  61 6c 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 3b 3b 20 46 69 72 73 74 20 61 64 64 20 74  | alls)))...........;;.First.add.t | 
| 1f8a0 |  68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20 74 6f 20    74 68 65 20 70 72 6f 6d 70 74 73 20 6c 69 73 74  | he.tool.call.to.the.prompts.list | 
| 1f8c0 |  0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a    20 28 28 64 61 74 61 20 28 70 6c 69 73 74 2d 67  | ...........(let*.((data.(plist-g | 
| 1f8e0 |  65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | et.info.:data))................. | 
| 1f900 |  20 28 70 72 6f 6d 70 74 73 20 28 70 6c 69 73 74    2d 67 65 74 20 64 61 74 61 20 3a 6d 65 73 73 61  | .(prompts.(plist-get.data.:messa | 
| 1f920 |  67 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 64 61  | ges))).............(plist-put.da | 
| 1f940 |  74 61 20 3a 6d 65 73 73 61 67 65 73 20 28 76 63    6f 6e 63 61 74 20 70 72 6f 6d 70 74 73 20 60 28  | ta.:messages.(vconcat.prompts.`( | 
| 1f960 |  2c 6d 65 73 73 61 67 65 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 3b 3b 20 54 68 65 6e 20 63  | ,message))))...........;;.Then.c | 
| 1f980 |  61 70 74 75 72 65 20 74 68 65 20 74 6f 6f 6c 20    63 61 6c 6c 20 64 61 74 61 20 66 6f 72 20 72 75  | apture.the.tool.call.data.for.ru | 
| 1f9a0 |  6e 6e 69 6e 67 20 74 68 65 20 74 6f 6f 6c 0a 20    20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f  | nning.the.tool...........(cl-loo | 
| 1f9c0 |  70 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72    20 74 6f 6f 6c 2d 63 61 6c 6c 20 61 63 72 6f 73  | p............for.tool-call.acros | 
| 1f9e0 |  73 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 3b 72 65    70 6c 61 63 65 20 22 3a 61 72 67 75 6d 65 6e 74  | s.tool-calls.;replace.":argument | 
| 1fa00 |  73 22 20 77 69 74 68 20 22 3a 61 72 67 73 22 0a    20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 63  | s".with.":args"............for.c | 
| 1fa20 |  61 6c 6c 2d 73 70 65 63 20 3d 20 28 63 6f 70 79    2d 73 65 71 75 65 6e 63 65 20 28 70 6c 69 73 74  | all-spec.=.(copy-sequence.(plist | 
| 1fa40 |  2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a    66 75 6e 63 74 69 6f 6e 29 29 0a 20 20 20 20 20  | -get.tool-call.:function))...... | 
| 1fa60 |  20 20 20 20 20 20 64 6f 20 28 70 6c 69 73 74 2d    70 75 74 20 63 61 6c 6c 2d 73 70 65 63 20 3a 61  | ......do.(plist-put.call-spec.:a | 
| 1fa80 |  72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c  | rgs..........................(pl | 
| 1faa0 |  69 73 74 2d 67 65 74 20 63 61 6c 6c 2d 73 70 65    63 20 3a 61 72 67 75 6d 65 6e 74 73 29 29 0a 20  | ist-get.call-spec.:arguments)).. | 
| 1fac0 |  20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74    2d 70 75 74 20 63 61 6c 6c 2d 73 70 65 63 20 3a  | ..........(plist-put.call-spec.: | 
| 1fae0 |  61 72 67 75 6d 65 6e 74 73 20 6e 69 6c 29 0a 20    20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63  | arguments.nil)............collec | 
| 1fb00 |  74 20 63 61 6c 6c 2d 73 70 65 63 20 69 6e 74 6f    20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20  | t.call-spec.into.tool-use....... | 
| 1fb20 |  20 20 20 20 20 66 69 6e 61 6c 6c 79 20 28 70 6c    69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f  | .....finally.(plist-put.info.:to | 
| 1fb40 |  6f 6c 2d 75 73 65 20 74 6f 6f 6c 2d 75 73 65 29    29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d  | ol-use.tool-use)))))))..(cl-defm | 
| 1fb60 |  65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 71    75 65 73 74 2d 64 61 74 61 20 28 28 62 61 63 6b  | ethod.gptel--request-data.((back | 
| 1fb80 |  65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61    29 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 4a 53  | end.gptel-ollama).prompts)..."JS | 
| 1fba0 |  4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54    53 20 66 6f 72 20 73 65 6e 64 69 6e 67 20 74 6f  | ON.encode.PROMPTS.for.sending.to | 
| 1fbc0 |  20 4f 6c 6c 61 6d 61 2e 22 0a 20 20 28 77 68 65    6e 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d  | .Ollama."...(when.gptel--system- | 
| 1fbe0 |  6d 65 73 73 61 67 65 0a 20 20 20 20 28 70 75 73    68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 73  | message.....(push.(list.:role."s | 
| 1fc00 |  79 73 74 65 6d 22 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20  | ystem".................:content. | 
| 1fc20 |  67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65    73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20  | gptel--system-message).......... | 
| 1fc40 |  20 70 72 6f 6d 70 74 73 29 29 0a 20 20 28 6c 65    74 2a 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c 69  | .prompts))...(let*.((prompts-pli | 
| 1fc60 |  73 74 0a 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74  | st...........(gptel--merge-plist | 
| 1fc80 |  73 0a 20 20 20 20 20 20 20 20 20 20 20 60 28 3a    6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d  | s............`(:model.,(gptel--m | 
| 1fca0 |  6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d    6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20  | odel-name.gptel-model).......... | 
| 1fcc0 |  20 20 20 20 3a 6d 65 73 73 61 67 65 73 20 5b 2c    40 70 72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20  | ....:messages.[,@prompts]....... | 
| 1fce0 |  20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 2c    28 6f 72 20 67 70 74 65 6c 2d 73 74 72 65 61 6d  | .......:stream.,(or.gptel-stream | 
| 1fd00 |  20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c  | .:json-false))............(gptel | 
| 1fd20 |  2d 62 61 63 6b 65 6e 64 2d 72 65 71 75 65 73 74    2d 70 61 72 61 6d 73 20 67 70 74 65 6c 2d 62 61  | -backend-request-params.gptel-ba | 
| 1fd40 |  63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d  | ckend)............(gptel--model- | 
| 1fd60 |  72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 20    67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 0a 20  | request-params..gptel-model))).. | 
| 1fd80 |  20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 20 69    6e 69 74 69 61 6c 20 6f 70 74 69 6f 6e 73 20 28  | ........;;.the.initial.options.( | 
| 1fda0 |  69 66 20 61 6e 79 29 20 66 72 6f 6d 20 72 65 71    75 65 73 74 20 70 61 72 61 6d 73 0a 20 20 20 20  | if.any).from.request.params..... | 
| 1fdc0 |  20 20 20 20 20 28 6f 70 74 69 6f 6e 73 2d 70 6c    69 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 70  | .....(options-plist.(plist-get.p | 
| 1fde0 |  72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 6f 70    74 69 6f 6e 73 29 29 29 0a 0a 20 20 20 20 28 77  | rompts-plist.:options)))......(w | 
| 1fe00 |  68 65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 75    73 65 2d 74 6f 6f 6c 73 20 67 70 74 65 6c 2d 74  | hen.(and.gptel-use-tools.gptel-t | 
| 1fe20 |  6f 6f 6c 73 29 0a 20 20 20 20 20 20 3b 3b 20 54    4f 44 4f 28 74 6f 6f 6c 29 3a 20 46 69 6e 64 20  | ools).......;;.TODO(tool):.Find. | 
| 1fe40 |  6f 75 74 20 68 6f 77 20 74 6f 20 66 6f 72 63 65    20 74 6f 6f 6c 20 75 73 65 20 66 6f 72 20 4f 6c  | out.how.to.force.tool.use.for.Ol | 
| 1fe60 |  6c 61 6d 61 0a 20 20 20 20 20 20 28 70 6c 69 73    74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c  | lama.......(plist-put.prompts-pl | 
| 1fe80 |  69 73 74 20 3a 74 6f 6f 6c 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74  | ist.:tools..................(gpt | 
| 1fea0 |  65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20    62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 74 6f  | el--parse-tools.backend.gptel-to | 
| 1fec0 |  6f 6c 73 29 29 0a 20 20 20 20 20 20 28 70 6c 69    73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70  | ols)).......(plist-put.prompts-p | 
| 1fee0 |  6c 69 73 74 20 3a 73 74 72 65 61 6d 20 3a 6a 73    6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 3b  | list.:stream.:json-false)).....; | 
| 1ff00 |  3b 20 69 66 20 74 68 65 20 74 65 6d 70 65 72 61    74 75 72 65 20 61 6e 64 20 6d 61 78 2d 74 6f 6b  | ;.if.the.temperature.and.max-tok | 
| 1ff20 |  65 6e 73 20 61 72 65 6e 27 74 20 73 65 74 20 61    73 0a 20 20 20 20 3b 3b 20 62 61 63 6b 65 6e 64  | ens.aren't.set.as.....;;.backend | 
| 1ff40 |  2f 6d 6f 64 65 6c 2d 73 70 65 63 69 66 69 63 2c    20 75 73 65 20 74 68 65 20 67 6c 6f 62 61 6c 20  | /model-specific,.use.the.global. | 
| 1ff60 |  73 65 74 74 69 6e 67 73 0a 20 20 20 20 28 77 68    65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 65  | settings.....(when.(and.gptel-te | 
| 1ff80 |  6d 70 65 72 61 74 75 72 65 20 28 6e 6f 74 20 28    70 6c 69 73 74 2d 67 65 74 20 6f 70 74 69 6f 6e  | mperature.(not.(plist-get.option | 
| 1ffa0 |  73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61    74 75 72 65 29 29 29 0a 20 20 20 20 20 20 28 73  | s-plist.:temperature))).......(s | 
| 1ffc0 |  65 74 71 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | etq.options-plist.............(p | 
| 1ffe0 |  6c 69 73 74 2d 70 75 74 20 6f 70 74 69 6f 6e 73    2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61 74  | list-put.options-plist.:temperat | 
| 20000 |  75 72 65 20 67 70 74 65 6c 2d 74 65 6d 70 65 72    61 74 75 72 65 29 29 29 0a 20 20 20 20 28 77 68  | ure.gptel-temperature))).....(wh | 
| 20020 |  65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 6d 61    78 2d 74 6f 6b 65 6e 73 20 28 6e 6f 74 20 28 70  | en.(and.gptel-max-tokens.(not.(p | 
| 20040 |  6c 69 73 74 2d 67 65 74 20 6f 70 74 69 6f 6e 73    2d 70 6c 69 73 74 20 3a 6e 75 6d 5f 70 72 65 64  | list-get.options-plist.:num_pred | 
| 20060 |  69 63 74 29 29 29 0a 20 20 20 20 20 20 28 73 65    74 71 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74  | ict))).......(setq.options-plist | 
| 20080 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c    69 73 74 2d 70 75 74 20 6f 70 74 69 6f 6e 73 2d  | .............(plist-put.options- | 
| 200a0 |  70 6c 69 73 74 20 3a 6e 75 6d 5f 70 72 65 64 69    63 74 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b  | plist.:num_predict.gptel-max-tok | 
| 200c0 |  65 6e 73 29 29 29 0a 20 20 20 20 28 70 6c 69 73    74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c  | ens))).....(plist-put.prompts-pl | 
| 200e0 |  69 73 74 20 3a 6f 70 74 69 6f 6e 73 20 6f 70 74    69 6f 6e 73 2d 70 6c 69 73 74 29 29 29 0a 0a 3b  | ist.:options.options-plist)))..; | 
| 20100 |  3b 20 4e 4f 54 45 3a 20 4e 6f 20 60 67 70 74 65    6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73 27 20  | ;.NOTE:.No.`gptel--parse-tools'. | 
| 20120 |  6d 65 74 68 6f 64 20 72 65 71 75 69 72 65 64 20    66 6f 72 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61  | method.required.for.gptel-ollama | 
| 20140 |  2c 20 73 69 6e 63 65 20 74 68 69 73 20 69 73 0a    3b 3b 20 68 61 6e 64 6c 65 64 20 62 79 20 69 74  | ,.since.this.is.;;.handled.by.it | 
| 20160 |  73 20 64 65 66 67 65 6e 65 72 69 63 20 69 6d 70    6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 28 63 6c  | s.defgeneric.implementation..(cl | 
| 20180 |  2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c    2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73  | -defmethod.gptel--parse-tool-res | 
| 201a0 |  75 6c 74 73 20 28 28 5f 62 61 63 6b 65 6e 64 20    67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 74 6f  | ults.((_backend.gptel-ollama).to | 
| 201c0 |  6f 6c 2d 75 73 65 29 0a 20 20 22 52 65 74 75 72    6e 20 61 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61  | ol-use)..."Return.a.prompt.conta | 
| 201e0 |  69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20    72 65 73 75 6c 74 73 20 69 6e 20 54 4f 4f 4c 2d  | ining.tool.call.results.in.TOOL- | 
| 20200 |  55 53 45 2e 22 0a 20 20 28 6d 61 70 63 61 72 20    28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61  | USE."...(mapcar.(lambda.(tool-ca | 
| 20220 |  6c 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 74 6f 6f  | ll).............(list.:role."too | 
| 20240 |  6c 22 20 3a 63 6f 6e 74 65 6e 74 20 28 70 6c 69    73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c  | l".:content.(plist-get.tool-call | 
| 20260 |  20 3a 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29  | .:result)))...........tool-use)) | 
| 20280 |  0a 0a 3b 3b 20 4e 4f 54 45 3a 20 4e 6f 20 60 67    70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f  | ..;;.NOTE:.No.`gptel--inject-pro | 
| 202a0 |  6d 70 74 27 20 6d 65 74 68 6f 64 20 72 65 71 75    69 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d 6f  | mpt'.method.required.for.gptel-o | 
| 202c0 |  6c 6c 61 6d 61 2c 20 73 69 6e 63 65 20 74 68 69    73 20 69 73 0a 3b 3b 20 68 61 6e 64 6c 65 64 20  | llama,.since.this.is.;;.handled. | 
| 202e0 |  62 79 20 69 74 73 20 64 65 66 67 65 6e 65 72 69    63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  | by.its.defgeneric.implementation | 
| 20300 |  0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20    67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73  | ..(cl-defmethod.gptel--parse-lis | 
| 20320 |  74 20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65    6c 2d 6f 6c 6c 61 6d 61 29 20 70 72 6f 6d 70 74  | t.((backend.gptel-ollama).prompt | 
| 20340 |  2d 6c 69 73 74 29 0a 20 20 28 69 66 20 28 63 6f    6e 73 70 20 28 63 61 72 20 70 72 6f 6d 70 74 2d  | -list)...(if.(consp.(car.prompt- | 
| 20360 |  6c 69 73 74 29 29 0a 20 20 20 20 20 20 28 6c 65    74 20 28 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 29  | list)).......(let.((full-prompt) | 
| 20380 |  29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b    20 41 64 76 61 6e 63 65 64 20 66 6f 72 6d 61 74  | )..............;.Advanced.format | 
| 203a0 |  2c 20 6c 69 73 74 20 6f 66 20 6c 69 73 74 73 0a    20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20  | ,.list.of.lists.........(dolist. | 
| 203c0 |  28 65 6e 74 72 79 20 70 72 6f 6d 70 74 2d 6c 69    73 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 70  | (entry.prompt-list)...........(p | 
| 203e0 |  63 61 73 65 20 65 6e 74 72 79 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 60 28 70 72 6f 6d 70 74  | case.entry.............(`(prompt | 
| 20400 |  20 2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73  | ...,msg)..............(push.(lis | 
| 20420 |  74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a    63 6f 6e 74 65 6e 74 20 28 6f 72 20 28 63 61 72  | t.:role."user".:content.(or.(car | 
| 20440 |  2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -safe.msg).msg))................ | 
| 20460 |  20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60  | ....full-prompt)).............(` | 
| 20480 |  28 72 65 73 70 6f 6e 73 65 20 2e 20 2c 6d 73 67    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | (response...,msg)..............( | 
| 204a0 |  70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65    20 22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f  | push.(list.:role."assistant".:co | 
| 204c0 |  6e 74 65 6e 74 20 28 6f 72 20 28 63 61 72 2d 73    61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 0a 20  | ntent.(or.(car-safe.msg).msg)).. | 
| 204e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a  | ..................full-prompt)). | 
| 20500 |  20 20 20 20 20 20 20 20 20 20 20 20 28 60 28 74    6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20 20 20  | ............(`(tool...,call).... | 
| 20520 |  20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20    28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73  | ..........(push.(list.:role."ass | 
| 20540 |  69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | istant"......................... | 
| 20560 |  20 3a 63 6f 6e 74 65 6e 74 20 22 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .:content."".................... | 
| 20580 |  20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63 61 6c 6c    73 20 60 5b 28 3a 66 75 6e 63 74 69 6f 6e 20 28  | ......:tool_calls.`[(:function.( | 
| 205a0 |  3a 6e 61 6d 65 20 2c 28 70 6c 69 73 74 2d 67 65    74 20 63 61 6c 6c 20 3a 6e 61 6d 65 29 0a 20 20  | :name.,(plist-get.call.:name)... | 
| 205c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 205e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 61 72 67 75 6d 65 6e 74 73 20 2c 28 70 6c  | .................:arguments.,(pl | 
| 20600 |  69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 61 72    67 73 29 29 29 5d 29 0a 20 20 20 20 20 20 20 20  | ist-get.call.:args)))])......... | 
| 20620 |  20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c 2d    70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20  | ...........full-prompt)......... | 
| 20640 |  20 20 20 20 20 28 70 75 73 68 20 28 63 61 72 20    28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f  | .....(push.(car.(gptel--parse-to | 
| 20660 |  6f 6c 2d 72 65 73 75 6c 74 73 20 62 61 63 6b 65    6e 64 20 28 6c 69 73 74 20 28 63 64 72 20 65 6e  | ol-results.backend.(list.(cdr.en | 
| 20680 |  74 72 79 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c 2d  | try))))....................full- | 
| 206a0 |  70 72 6f 6d 70 74 29 29 29 29 0a 20 20 20 20 20    20 20 20 28 6e 72 65 76 65 72 73 65 20 66 75 6c  | prompt)))).........(nreverse.ful | 
| 206c0 |  6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 28    63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74  | l-prompt)).....(cl-loop.for.text | 
| 206e0 |  20 69 6e 20 70 72 6f 6d 70 74 2d 6c 69 73 74 20    20 20 20 3b 20 53 69 6d 70 6c 65 20 66 6f 72 6d  | .in.prompt-list....;.Simple.form | 
| 20700 |  61 74 2c 20 6c 69 73 74 20 6f 66 20 73 74 72 69    6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | at,.list.of.strings............. | 
| 20720 |  20 66 6f 72 20 72 6f 6c 65 20 3d 20 74 20 74 68    65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29 0a 20 20  | .for.role.=.t.then.(not.role)... | 
| 20740 |  20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 65    78 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20  | ...........if.text.collect...... | 
| 20760 |  20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 72    6f 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73  | ........(list.:role.(if.role."us | 
| 20780 |  65 72 22 20 22 61 73 73 69 73 74 61 6e 74 22 29    20 3a 63 6f 6e 74 65 6e 74 20 74 65 78 74 29 29  | er"."assistant").:content.text)) | 
| 207a0 |  29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f    64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62  | ))..(cl-defmethod.gptel--parse-b | 
| 207c0 |  75 66 66 65 72 20 28 28 62 61 63 6b 65 6e 64 20    67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 26 6f  | uffer.((backend.gptel-ollama).&o | 
| 207e0 |  70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72    69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72  | ptional.max-entries)...(let.((pr | 
| 20800 |  6f 6d 70 74 73 29 20 28 70 72 65 76 2d 70 74 20    28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 69  | ompts).(prev-pt.(point))).....(i | 
| 20820 |  66 20 28 6f 72 20 67 70 74 65 6c 2d 6d 6f 64 65    20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73  | f.(or.gptel-mode.gptel-track-res | 
| 20840 |  70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 28    77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 20 28  | ponse).........(while.(and.(or.( | 
| 20860 |  6e 6f 74 20 6d 61 78 2d 65 6e 74 72 69 65 73 29    20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73  | not.max-entries).(>=.max-entries | 
| 20880 |  20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63  | .0)).....................(goto-c | 
| 208a0 |  68 61 72 20 28 70 72 65 76 69 6f 75 73 2d 73 69    6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d 63 68  | har.(previous-single-property-ch | 
| 208c0 |  61 6e 67 65 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ange............................ | 
| 208e0 |  20 20 20 20 20 28 70 6f 69 6e 74 29 20 27 67 70    74 65 6c 20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d  | .....(point).'gptel.nil.(point-m | 
| 20900 |  69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28  | in))).....................(not.( | 
| 20920 |  3d 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70    74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28  | =.(point).prev-pt)))...........( | 
| 20940 |  70 63 61 73 65 20 28 67 65 74 2d 63 68 61 72 2d    70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29  | pcase.(get-char-property.(point) | 
| 20960 |  20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 28 27 72 65 73 70 6f 6e 73 65 0a  | .'gptel).............('response. | 
| 20980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68    65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e  | .............(when-let*.((conten | 
| 209a0 |  74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70    72 65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20  | t.(gptel--trim-prefixes......... | 
| 209c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66  | ...........................(buff | 
| 209e0 |  65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d    70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e  | er-substring-no-properties.(poin | 
| 20a00 |  74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | t).prev-pt))))................(p | 
| 20a20 |  75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20    22 61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e  | ush.(list.:role."assistant".:con | 
| 20a40 |  74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72    6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20  | tent.content).prompts)))........ | 
| 20a60 |  20 20 20 20 20 28 60 28 74 6f 6f 6c 20 2e 20 2c    5f 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .....(`(tool...,_id)............ | 
| 20a80 |  20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f    6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(save-excursion............... | 
| 20aa0 |  20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65    20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20  | .(condition-case.nil............ | 
| 20ac0 |  20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28    74 6f 6f 6c 2d 63 61 6c 6c 20 28 72 65 61 64 20  | ........(let*.((tool-call.(read. | 
| 20ae0 |  28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | (current-buffer))).............. | 
| 20b00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61    6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f  | .............(name.(plist-get.to | 
| 20b20 |  6f 6c 2d 63 61 6c 6c 20 3a 6e 61 6d 65 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ol-call.:name))................. | 
| 20b40 |  20 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d    65 6e 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20  | ..........(arguments.(plist-get. | 
| 20b60 |  74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67 73 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | tool-call.:args))).............. | 
| 20b80 |  20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70    75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65  | ........(plist-put.tool-call.:re | 
| 20ba0 |  73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | sult............................ | 
| 20bc0 |  20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69    6d 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72  | .....(string-trim.(buffer-substr | 
| 20be0 |  69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ing-no-properties............... | 
| 20c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 20c20 |  28 70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | (point).prev-pt))).............. | 
| 20c40 |  20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63    61 72 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65  | ........(push.(car.(gptel--parse | 
| 20c60 |  2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 62 61    63 6b 65 6e 64 20 28 6c 69 73 74 20 74 6f 6f 6c  | -tool-results.backend.(list.tool | 
| 20c80 |  2d 63 61 6c 6c 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -call)))........................ | 
| 20ca0 |  20 20 20 20 70 72 6f 6d 70 74 73 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....prompts).................... | 
| 20cc0 |  20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72    6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22 0a  | ..(push.(list.:role."assistant". | 
| 20ce0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 20d00 |  20 3a 63 6f 6e 74 65 6e 74 20 22 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .:content."".................... | 
| 20d20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74    6f 6f 6c 5f 63 61 6c 6c 73 20 60 5b 28 3a 66 75  | ..............:tool_calls.`[(:fu | 
| 20d40 |  6e 63 74 69 6f 6e 20 28 3a 6e 61 6d 65 20 2c 6e    61 6d 65 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c  | nction.(:name.,name.:arguments., | 
| 20d60 |  61 72 67 75 6d 65 6e 74 73 29 29 5d 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | arguments))])................... | 
| 20d80 |  20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .........prompts)).............. | 
| 20da0 |  20 20 20 20 28 28 65 6e 64 2d 6f 66 2d 66 69 6c    65 20 69 6e 76 61 6c 69 64 2d 72 65 61 64 2d 73  | ....((end-of-file.invalid-read-s | 
| 20dc0 |  79 6e 74 61 78 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67  | yntax)...................(messag | 
| 20de0 |  65 20 28 66 6f 72 6d 61 74 20 22 43 6f 75 6c 64    20 6e 6f 74 20 70 61 72 73 65 20 74 6f 6f 6c 2d  | e.(format."Could.not.parse.tool- | 
| 20e00 |  63 61 6c 6c 20 6f 6e 20 6c 69 6e 65 20 25 73 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | call.on.line.%s"................ | 
| 20e20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72  | ....................(line-number | 
| 20e40 |  2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29    29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | -at-pos.(point)))))))).......... | 
| 20e60 |  20 20 20 28 27 69 67 6e 6f 72 65 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 27 6e 69 6c 0a 20  | ...('ignore).............('nil.. | 
| 20e80 |  20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20    67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69  | ............(if.gptel-track-medi | 
| 20ea0 |  61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28  | a..................(when-let*.(( | 
| 20ec0 |  63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d    6f 6c 6c 61 6d 61 2d 70 61 72 73 65 2d 6d 75 6c  | content.(gptel--ollama-parse-mul | 
| 20ee0 |  74 69 70 61 72 74 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tipart.......................... | 
| 20f00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67    70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69  | ..............(gptel--parse-medi | 
| 20f20 |  61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72 2d 6d 6f    64 65 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d  | a-links.major-mode.(point).prev- | 
| 20f40 |  70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20  | pt))))....................(when. | 
| 20f60 |  28 3e 20 28 6c 65 6e 67 74 68 20 63 6f 6e 74 65    6e 74 29 20 30 29 0a 20 20 20 20 20 20 20 20 20  | (>.(length.content).0).......... | 
| 20f80 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73    68 20 28 61 70 70 65 6e 64 20 27 28 3a 72 6f 6c  | ............(push.(append.'(:rol | 
| 20fa0 |  65 20 22 75 73 65 72 22 29 20 63 6f 6e 74 65 6e    74 29 20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20  | e."user").content).prompts)))... | 
| 20fc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68    65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e  | .............(when-let*.((conten | 
| 20fe0 |  74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70    72 65 66 69 78 65 73 20 28 62 75 66 66 65 72 2d  | t.(gptel--trim-prefixes.(buffer- | 
| 21000 |  73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f    70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20  | substring-no-properties......... | 
| 21020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 21040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d  | ...................(point).prev- | 
| 21060 |  70 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c  | pt))))..................(push.(l | 
| 21080 |  69 73 74 20 3a 72 6f 6c 65 20 22 75 73 65 72 22    20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e  | ist.:role."user".:content.conten | 
| 210a0 |  74 29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20  | t).prompts)))))...........(setq. | 
| 210c0 |  70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20  | prev-pt.(point))...........(and. | 
| 210e0 |  6d 61 78 2d 65 6e 74 72 69 65 73 20 28 63 6c 2d    64 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73  | max-entries.(cl-decf.max-entries | 
| 21100 |  29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28    28 63 6f 6e 74 65 6e 74 20 28 73 74 72 69 6e 67  | ))).......(let.((content.(string | 
| 21120 |  2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75    62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65  | -trim.(buffer-substring-no-prope | 
| 21140 |  72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rties........................... | 
| 21160 |  20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d    6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29  | .........(point-min).(point-max) | 
| 21180 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 75    73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22  | )))).........(push.(list.:role." | 
| 211a0 |  75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 63    6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29  | user".:content.content).prompts) | 
| 211c0 |  29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29    0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d  | )).....prompts))..(defun.gptel-- | 
| 211e0 |  6f 6c 6c 61 6d 61 2d 70 61 72 73 65 2d 6d 75 6c    74 69 70 61 72 74 20 28 70 61 72 74 73 29 0a 20  | ollama-parse-multipart.(parts).. | 
| 21200 |  20 22 43 6f 6e 76 65 72 74 20 61 20 6d 75 6c 74    69 70 61 72 74 20 70 72 6f 6d 70 74 20 50 41 52  | ."Convert.a.multipart.prompt.PAR | 
| 21220 |  54 53 20 74 6f 20 74 68 65 20 4f 6c 6c 61 6d 61    20 41 50 49 20 66 6f 72 6d 61 74 2e 0a 0a 54 68  | TS.to.the.Ollama.API.format...Th | 
| 21240 |  65 20 69 6e 70 75 74 20 69 73 20 61 6e 20 61 6c    69 73 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a  | e.input.is.an.alist.of.the.form. | 
| 21260 |  20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20    74 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69  | .((:text.\"some.text\")...(:medi | 
| 21280 |  61 20 5c 22 2f 70 61 74 68 2f 74 6f 2f 6d 65 64    69 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c  | a.\"/path/to/media.png\".:mime.\ | 
| 212a0 |  22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 0a 20 20    28 3a 74 65 78 74 20 5c 22 4d 6f 72 65 20 74 65  | "image/png\")...(:text.\"More.te | 
| 212c0 |  78 74 5c 22 29 29 2e 0a 0a 54 68 65 20 6f 75 74    70 75 74 20 69 73 20 61 20 76 65 63 74 6f 72 20  | xt\"))...The.output.is.a.vector. | 
| 212e0 |  6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 20    62 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69  | of.entries.in.a.backend-appropri | 
| 21300 |  61 74 65 0a 66 6f 72 6d 61 74 2e 22 0a 20 20 28    63 6c 2d 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 70  | ate.format."...(cl-loop....for.p | 
| 21320 |  61 72 74 20 69 6e 20 70 61 72 74 73 0a 20 20 20    66 6f 72 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20  | art.in.parts....for.n.upfrom.1.. | 
| 21340 |  20 20 77 69 74 68 20 6c 61 73 74 20 3d 20 28 6c    65 6e 67 74 68 20 70 61 72 74 73 29 0a 20 20 20  | ..with.last.=.(length.parts).... | 
| 21360 |  66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c 69 73    74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74  | for.text.=.(plist-get.part.:text | 
| 21380 |  29 0a 20 20 20 66 6f 72 20 6d 65 64 69 61 20 3d    20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74  | )....for.media.=.(plist-get.part | 
| 213a0 |  20 3a 6d 65 64 69 61 29 0a 20 20 20 69 66 20 74    65 78 74 20 64 6f 0a 20 20 20 28 61 6e 64 20 28  | .:media)....if.text.do....(and.( | 
| 213c0 |  6f 72 20 28 3d 20 6e 20 31 29 20 28 3d 20 6e 20    6c 61 73 74 29 29 20 28 73 65 74 71 20 74 65 78  | or.(=.n.1).(=.n.last)).(setq.tex | 
| 213e0 |  74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70    72 65 66 69 78 65 73 20 74 65 78 74 29 29 29 20  | t.(gptel--trim-prefixes.text))). | 
| 21400 |  61 6e 64 0a 20 20 20 69 66 20 74 65 78 74 0a 20    20 20 63 6f 6c 6c 65 63 74 20 74 65 78 74 20 69  | and....if.text....collect.text.i | 
| 21420 |  6e 74 6f 20 74 65 78 74 2d 61 72 72 61 79 20 65    6e 64 0a 20 20 20 65 6c 73 65 20 69 66 20 6d 65  | nto.text-array.end....else.if.me | 
| 21440 |  64 69 61 0a 20 20 20 63 6f 6c 6c 65 63 74 20 28    67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e  | dia....collect.(gptel--base64-en | 
| 21460 |  63 6f 64 65 20 6d 65 64 69 61 29 20 69 6e 74 6f    20 6d 65 64 69 61 2d 61 72 72 61 79 0a 20 20 20  | code.media).into.media-array.... | 
| 21480 |  65 6c 73 65 20 69 66 20 28 70 6c 69 73 74 2d 67    65 74 20 70 61 72 74 20 3a 74 65 78 74 66 69 6c  | else.if.(plist-get.part.:textfil | 
| 214a0 |  65 29 0a 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20    20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66  | e)....collect....(with-temp-buff | 
| 214c0 |  65 72 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d    69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69  | er......(gptel--insert-file-stri | 
| 214e0 |  6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61    72 74 20 3a 74 65 78 74 66 69 6c 65 29 29 0a 20  | ng.(plist-get.part.:textfile)).. | 
| 21500 |  20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69    6e 67 29 29 0a 20 20 20 69 6e 74 6f 20 74 65 78  | ....(buffer-string))....into.tex | 
| 21520 |  74 2d 61 72 72 61 79 0a 20 20 20 66 69 6e 61 6c    6c 79 20 72 65 74 75 72 6e 0a 20 20 20 60 28 2c  | t-array....finally.return....`(, | 
| 21540 |  40 28 61 6e 64 20 74 65 78 74 2d 61 72 72 61 79    20 20 28 6c 69 73 74 20 3a 63 6f 6e 74 65 6e 74  | @(and.text-array..(list.:content | 
| 21560 |  20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 69 64    65 6e 74 69 74 79 20 74 65 78 74 2d 61 72 72 61  | .(mapconcat.#'identity.text-arra | 
| 21580 |  79 20 22 20 22 29 29 29 0a 20 20 20 20 20 2c 40    28 61 6e 64 20 6d 65 64 69 61 2d 61 72 72 61 79  | y.".")))......,@(and.media-array | 
| 215a0 |  20 28 6c 69 73 74 20 3a 69 6d 61 67 65 73 20 20    28 76 63 6f 6e 63 61 74 20 6d 65 64 69 61 2d 61  | .(list.:images..(vconcat.media-a | 
| 215c0 |  72 72 61 79 29 29 29 29 29 29 0a 0a 28 63 6c 2d    64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d  | rray))))))..(cl-defmethod.gptel- | 
| 215e0 |  2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70    74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74  | -wrap-user-prompt.((_backend.gpt | 
| 21600 |  65 6c 2d 6f 6c 6c 61 6d 61 29 20 70 72 6f 6d 70    74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | el-ollama).prompts.............. | 
| 21620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f  | ..........................&optio | 
| 21640 |  6e 61 6c 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61    29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c 61  | nal.inject-media)..."Wrap.the.la | 
| 21660 |  73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 69    6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20 74  | st.user.prompt.in.PROMPTS.with.t | 
| 21680 |  68 65 20 63 6f 6e 74 65 78 74 20 73 74 72 69 6e    67 2e 0a 0a 49 66 20 49 4e 4a 45 43 54 2d 4d 45  | he.context.string...If.INJECT-ME | 
| 216a0 |  44 49 41 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20 77    72 61 70 20 69 74 20 77 69 74 68 20 62 61 73 65  | DIA.is.non-nil.wrap.it.with.base | 
| 216c0 |  36 34 2d 65 6e 63 6f 64 65 64 20 6d 65 64 69 61    0a 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63 6f  | 64-encoded.media.files.in.the.co | 
| 216e0 |  6e 74 65 78 74 2e 22 0a 20 20 28 69 66 20 69 6e    6a 65 63 74 2d 6d 65 64 69 61 0a 20 20 20 20 20  | ntext."...(if.inject-media...... | 
| 21700 |  20 3b 3b 20 57 72 61 70 20 74 68 65 20 66 69 72    73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77  | .;;.Wrap.the.first.user.prompt.w | 
| 21720 |  69 74 68 20 69 6e 63 6c 75 64 65 64 20 6d 65 64    69 61 20 66 69 6c 65 73 2f 63 6f 6e 74 65 78 74  | ith.included.media.files/context | 
| 21740 |  73 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65    74 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74 20  | s.......(when-let*.((media-list. | 
| 21760 |  28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d    63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29 0a  | (gptel-context--collect-media)). | 
| 21780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6d 65 64 69 61 2d 70 72 6f 63 65 73 73  | ..................(media-process | 
| 217a0 |  65 64 20 28 67 70 74 65 6c 2d 2d 6f 6c 6c 61 6d    61 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72  | ed.(gptel--ollama-parse-multipar | 
| 217c0 |  74 20 6d 65 64 69 61 2d 6c 69 73 74 29 29 29 0a    20 20 20 20 20 20 20 20 28 63 6c 2d 63 61 6c 6c  | t.media-list))).........(cl-call | 
| 217e0 |  66 20 28 6c 61 6d 62 64 61 20 28 69 6d 61 67 65    73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | f.(lambda.(images).............. | 
| 21800 |  20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20    28 70 6c 69 73 74 2d 67 65 74 20 6d 65 64 69 61  | .......(vconcat.(plist-get.media | 
| 21820 |  2d 70 72 6f 63 65 73 73 65 64 20 3a 69 6d 61 67    65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | -processed.:images)............. | 
| 21840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 69 6d 61 67 65 73 29 29 0a 20 20 20 20 20 20  | .................images))....... | 
| 21860 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74    20 28 63 61 72 20 70 72 6f 6d 70 74 73 29 20 3a  | ......(plist-get.(car.prompts).: | 
| 21880 |  69 6d 61 67 65 73 29 29 29 0a 20 20 20 20 3b 3b    20 57 72 61 70 20 74 68 65 20 6c 61 73 74 20 75  | images))).....;;.Wrap.the.last.u | 
| 218a0 |  73 65 72 20 70 72 6f 6d 70 74 20 77 69 74 68 20    69 6e 63 6c 75 64 65 64 20 74 65 78 74 20 63 6f  | ser.prompt.with.included.text.co | 
| 218c0 |  6e 74 65 78 74 73 0a 20 20 20 20 28 63 6c 2d 63    61 6c 6c 66 20 67 70 74 65 6c 2d 63 6f 6e 74 65  | ntexts.....(cl-callf.gptel-conte | 
| 218e0 |  78 74 2d 2d 77 72 61 70 20 28 70 6c 69 73 74 2d    67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20 70  | xt--wrap.(plist-get.(car.(last.p | 
| 21900 |  72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65 6e    74 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74  | rompts)).:content))))..;;;###aut | 
| 21920 |  6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20    67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d  | oload.(cl-defun.gptel-make-ollam | 
| 21940 |  61 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79    20 63 75 72 6c 2d 61 72 67 73 20 68 65 61 64 65  | a.....(name.&key.curl-args.heade | 
| 21960 |  72 20 6b 65 79 20 6d 6f 64 65 6c 73 20 73 74 72    65 61 6d 20 72 65 71 75 65 73 74 2d 70 61 72 61  | r.key.models.stream.request-para | 
| 21980 |  6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f    73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 31 31  | ms...........(host."localhost:11 | 
| 219a0 |  34 33 34 22 29 0a 20 20 20 20 20 20 20 20 20 20    28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22  | 434")...........(protocol."http" | 
| 219c0 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64    70 6f 69 6e 74 20 22 2f 61 70 69 2f 63 68 61 74  | )...........(endpoint."/api/chat | 
| 219e0 |  22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20    61 6e 20 4f 6c 6c 61 6d 61 20 62 61 63 6b 65 6e  | "))..."Register.an.Ollama.backen | 
| 21a00 |  64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68    20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20  | d.for.gptel.with.NAME...Keyword. | 
| 21a20 |  61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c    2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29  | arguments:..CURL-ARGS.(optional) | 
| 21a40 |  20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64    64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72  | .is.a.list.of.additional.Curl.ar | 
| 21a60 |  67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69    73 20 77 68 65 72 65 20 4f 6c 6c 61 6d 61 20 72  | guments...HOST.is.where.Ollama.r | 
| 21a80 |  75 6e 73 20 28 77 69 74 68 20 70 6f 72 74 29 2c    20 64 65 66 61 75 6c 74 73 20 74 6f 20 6c 6f 63  | uns.(with.port),.defaults.to.loc | 
| 21aa0 |  61 6c 68 6f 73 74 3a 31 31 34 33 34 0a 0a 4d 4f    44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 20 6f  | alhost:11434..MODELS.is.a.list.o | 
| 21ac0 |  66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65    6c 20 6e 61 6d 65 73 2c 20 61 73 20 73 79 6d 62  | f.available.model.names,.as.symb | 
| 21ae0 |  6f 6c 73 2e 0a 41 64 64 69 74 69 6f 6e 61 6c 6c    79 2c 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69  | ols..Additionally,.you.can.speci | 
| 21b00 |  66 79 20 73 75 70 70 6f 72 74 65 64 20 4c 4c 4d    20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6c 69  | fy.supported.LLM.capabilities.li | 
| 21b20 |  6b 65 0a 76 69 73 69 6f 6e 20 6f 72 20 74 6f 6f    6c 2d 75 73 65 20 62 79 20 61 70 70 65 6e 64 69  | ke.vision.or.tool-use.by.appendi | 
| 21b40 |  6e 67 20 61 20 70 6c 69 73 74 20 74 6f 20 74 68    65 20 6d 6f 64 65 6c 20 77 69 74 68 20 6d 6f 72  | ng.a.plist.to.the.model.with.mor | 
| 21b60 |  65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 69    6e 20 74 68 65 20 66 6f 72 6d 0a 0a 20 28 6d 6f  | e.information,.in.the.form...(mo | 
| 21b80 |  64 65 6c 2d 6e 61 6d 65 20 2e 20 70 6c 69 73 74    29 0a 0a 43 75 72 72 65 6e 74 6c 79 20 72 65 63  | del-name...plist)..Currently.rec | 
| 21ba0 |  6f 67 6e 69 7a 65 64 20 70 6c 69 73 74 20 6b 65    79 73 20 61 72 65 20 3a 64 65 73 63 72 69 70 74  | ognized.plist.keys.are.:descript | 
| 21bc0 |  69 6f 6e 2c 20 3a 63 61 70 61 62 69 6c 69 74 69    65 73 0a 61 6e 64 20 3a 6d 69 6d 65 2d 74 79 70  | ion,.:capabilities.and.:mime-typ | 
| 21be0 |  65 73 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20    6f 66 20 61 20 6d 6f 64 65 6c 20 73 70 65 63 69  | es...An.example.of.a.model.speci | 
| 21c00 |  66 69 63 61 74 69 6f 6e 20 69 6e 63 6c 75 64 69    6e 67 0a 62 6f 74 68 20 6b 69 6e 64 73 20 6f 66  | fication.including.both.kinds.of | 
| 21c20 |  20 73 70 65 63 73 3a 0a 0a 3a 6d 6f 64 65 6c 73    0a 5c 5c 3d 27 28 6d 69 73 74 72 61 6c 3a 6c 61  | .specs:..:models.\\='(mistral:la | 
| 21c40 |  74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6d  | test........................;Sim | 
| 21c60 |  70 6c 65 20 73 70 65 63 73 0a 20 20 6f 70 65 6e    68 65 72 6d 65 73 3a 6c 61 74 65 73 74 0a 20 20  | ple.specs...openhermes:latest... | 
| 21c80 |  28 6c 6c 61 76 61 3a 31 33 62 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (llava:13b...................... | 
| 21ca0 |  20 20 20 20 20 20 3b 46 75 6c 6c 20 73 70 65 63    0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e  | ......;Full.spec....:description | 
| 21cc0 |  0a 20 20 20 5c 22 4c 6c 61 76 61 20 31 2e 36 3a    20 4c 61 72 67 65 20 4c 61 6e 75 61 67 65 20 61  | ....\"Llava.1.6:.Large.Lanuage.a | 
| 21ce0 |  6e 64 20 56 69 73 69 6f 6e 20 41 73 73 69 73 74    61 6e 74 5c 22 0a 20 20 20 3a 63 61 70 61 62 69  | nd.Vision.Assistant\"....:capabi | 
| 21d00 |  6c 69 74 69 65 73 20 28 6d 65 64 69 61 29 0a 20    20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 5c  | lities.(media)....:mime-types.(\ | 
| 21d20 |  22 69 6d 61 67 65 2f 6a 70 65 67 5c 22 20 5c 22    69 6d 61 67 65 2f 70 6e 67 5c 22 29 29 29 0a 0a  | "image/jpeg\".\"image/png\"))).. | 
| 21d40 |  0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f    6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c 65 20 73  | .STREAM.is.a.boolean.to.toggle.s | 
| 21d60 |  74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73    65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a  | treaming.responses,.defaults.to. | 
| 21d80 |  66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c    20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70 65 63  | false...PROTOCOL.(optional).spec | 
| 21da0 |  69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63    6f 6c 2c 20 68 74 74 70 20 62 79 20 64 65 66 61  | ifies.the.protocol,.http.by.defa | 
| 21dc0 |  75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28    6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65  | ult...ENDPOINT.(optional).is.the | 
| 21de0 |  20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f    72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64  | .API.endpoint.for.completions,.d | 
| 21e00 |  65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70    69 2f 67 65 6e 65 72 61 74 65 5c 22 2e 0a 0a 48  | efaults.to.\"/api/generate\"...H | 
| 21e20 |  45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29    20 69 73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  | EADER.(optional).is.for.addition | 
| 21e40 |  61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65    6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 71  | al.headers.to.send.with.each.req | 
| 21e60 |  75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64    20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f 72 20  | uest...It.should.be.an.alist.or. | 
| 21e80 |  61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20    72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 2c  | a.function.that.retuns.an.alist, | 
| 21ea0 |  20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74    65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61  | .like:..((\"Content-Type\"...\"a | 
| 21ec0 |  70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c    22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f 6e  | pplication/json\"))..KEY.(option | 
| 21ee0 |  61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c    65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73  | al).is.a.variable.whose.value.is | 
| 21f00 |  20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72    0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72  | .the.API.key,.or.function.that.r | 
| 21f20 |  65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20    20 54 68 69 73 20 69 73 20 74 79 70 69 63 61 6c  | eturns.the.key...This.is.typical | 
| 21f40 |  6c 79 20 6e 6f 74 20 72 65 71 75 69 72 65 64 0a    66 6f 72 20 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73  | ly.not.required.for.local.models | 
| 21f60 |  20 6c 69 6b 65 20 4f 6c 6c 61 6d 61 2e 0a 0a 52    45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 28 6f  | .like.Ollama...REQUEST-PARAMS.(o | 
| 21f80 |  70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c    69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61  | ptional).is.a.plist.of.additiona | 
| 21fa0 |  6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70    61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70 6c  | l.HTTP.request.parameters.(as.pl | 
| 21fc0 |  69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61    6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62  | ist.keys).and.values.supported.b | 
| 21fe0 |  79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a    74 68 65 73 65 20 74 6f 20 73 65 74 20 70 61 72  | y.the.API...Use.these.to.set.par | 
| 22000 |  61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74    65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76  | ameters.that.gptel.does.not.prov | 
| 22020 |  69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73    0a 66 6f 72 2e 0a 0a 45 78 61 6d 70 6c 65 3a 0a  | ide.user.options.for...Example:. | 
| 22040 |  2d 2d 2d 2d 2d 2d 2d 0a 0a 20 28 67 70 74 65 6c    2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20  | -------...(gptel-make-ollama.... | 
| 22060 |  5c 22 4f 6c 6c 61 6d 61 5c 22 0a 20 20 20 3a 68    6f 73 74 20 5c 22 6c 6f 63 61 6c 68 6f 73 74 3a  | \"Ollama\"....:host.\"localhost: | 
| 22080 |  31 31 34 33 34 5c 22 0a 20 20 20 3a 6d 6f 64 65    6c 73 20 5c 5c 3d 27 28 6d 69 73 74 72 61 6c 3a  | 11434\"....:models.\\='(mistral: | 
| 220a0 |  6c 61 74 65 73 74 29 0a 20 20 20 3a 73 74 72 65    61 6d 20 74 29 22 0a 20 20 28 64 65 63 6c 61 72  | latest)....:stream.t)"...(declar | 
| 220c0 |  65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20    28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28  | e.(indent.1))...(let.((backend.( | 
| 220e0 |  67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 6c 6c 61    6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | gptel--make-ollama.............. | 
| 22100 |  20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20    63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20  | .....:curl-args.curl-args....... | 
| 22120 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d    65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20  | ............:name.name.......... | 
| 22140 |  20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68    6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .........:host.host............. | 
| 22160 |  20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65    61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20  | ......:header.header............ | 
| 22180 |  20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .......:key.key................. | 
| 221a0 |  20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c    2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73  | ..:models.(gptel--process-models | 
| 221c0 |  20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74  | .models)...................:prot | 
| 221e0 |  6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ocol.protocol................... | 
| 22200 |  3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69    6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | :endpoint.endpoint.............. | 
| 22220 |  20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72    65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .....:stream.stream............. | 
| 22240 |  20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70    61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61  | ......:request-params.request-pa | 
| 22260 |  72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20  | rams...................:url.(if. | 
| 22280 |  70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | protocol........................ | 
| 222a0 |  20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74    6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20  | ....(concat.protocol."://".host. | 
| 222c0 |  65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | endpoint)....................... | 
| 222e0 |  20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20    65 6e 64 70 6f 69 6e 74 29 29 29 29 29 0a 20 20  | ...(concat.host.endpoint)))))... | 
| 22300 |  20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64    0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c  | ..(prog1.backend.......(setf.(al | 
| 22320 |  69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74    65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e  | ist-get.name.gptel--known-backen | 
| 22340 |  64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69  | ds........................nil.ni | 
| 22360 |  6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63  | l.#'equal)...................bac | 
| 22380 |  6b 65 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69    64 65 20 27 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61  | kend))))..(provide.'gptel-ollama | 
| 223a0 |  29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 6c 6c 61    6d 61 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a  | ).;;;.gptel-ollama.el.ends.here. | 
| 223c0 |  0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 223e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22400 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 63 75 72 6c 2e 65 6c 00 00 00 00 00  | gptel-0.9.8.5/gptel-curl.el..... | 
| 22420 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22440 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22460 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 22480 |  30 30 35 33 33 36 31 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 30 35 35 00 20 30 00 00 00  | 0053361.00000000000.014055..0... | 
| 224a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 224c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 224e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22500 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 22520 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 22540 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22560 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22580 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 225a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 225c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 225e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22600 |  3b 3b 3b 20 67 70 74 65 6c 2d 63 75 72 6c 2e 65    6c 20 2d 2d 2d 20 43 75 72 6c 20 73 75 70 70 6f  | ;;;.gptel-curl.el.---.Curl.suppo | 
| 22620 |  72 74 20 66 6f 72 20 67 70 74 65 6c 20 20 20 20    20 20 20 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c  | rt.for.gptel.........-*-.lexical | 
| 22640 |  2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d    0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28  | -binding:.t;.-*-..;;.Copyright.( | 
| 22660 |  43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | C).2023-2025..Karthik.Chikmagalu | 
| 22680 |  72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | r..;;.Author:.Karthik.Chikmagalu | 
| 226a0 |  72 3b 3b 20 3c 6b 61 72 74 68 69 6b 63 68 69 6b    6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f  | r;;.<karthikchikmagalur@gmail.co | 
| 226c0 |  6d 3e 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20    63 6f 6e 76 65 6e 69 65 6e 63 65 0a 0a 3b 3b 20  | m>.;;.Keywords:.convenience..;;. | 
| 226e0 |  53 50 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65    6e 74 69 66 69 65 72 3a 20 47 50 4c 2d 33 2e 30  | SPDX-License-Identifier:.GPL-3.0 | 
| 22700 |  2d 6f 72 2d 6c 61 74 65 72 0a 0a 3b 3b 20 54 68    69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72  | -or-later..;;.This.program.is.fr | 
| 22720 |  65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75    20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74  | ee.software;.you.can.redistribut | 
| 22740 |  65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69    66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74  | e.it.and/or.modify.;;.it.under.t | 
| 22760 |  68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20    47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c  | he.terms.of.the.GNU.General.Publ | 
| 22780 |  69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75    62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68  | ic.License.as.published.by.;;.th | 
| 227a0 |  65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20    46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68  | e.Free.Software.Foundation,.eith | 
| 227c0 |  65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20    74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a  | er.version.3.of.the.License,.or. | 
| 227e0 |  3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69    6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65  | ;;.(at.your.option).any.later.ve | 
| 22800 |  72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20    70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72  | rsion...;;.This.program.is.distr | 
| 22820 |  69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f    70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20  | ibuted.in.the.hope.that.it.will. | 
| 22840 |  62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75    74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41  | be.useful,.;;.but.WITHOUT.ANY.WA | 
| 22860 |  52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20    65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64  | RRANTY;.without.even.the.implied | 
| 22880 |  20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20    4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20  | .warranty.of.;;.MERCHANTABILITY. | 
| 228a0 |  6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41    20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50  | or.FITNESS.FOR.A.PARTICULAR.PURP | 
| 228c0 |  4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b    20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62  | OSE...See.the.;;.GNU.General.Pub | 
| 228e0 |  6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20    6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b  | lic.License.for.more.details...; | 
| 22900 |  3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76    65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70  | ;.You.should.have.received.a.cop | 
| 22920 |  79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e    65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65  | y.of.the.GNU.General.Public.Lice | 
| 22940 |  6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74    68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20  | nse.;;.along.with.this.program.. | 
| 22960 |  20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74    74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72  | .If.not,.see.<https://www.gnu.or | 
| 22980 |  67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b    3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a  | g/licenses/>...;;;.Commentary:.. | 
| 229a0 |  3b 3b 20 43 75 72 6c 20 73 75 70 70 6f 72 74 20    66 6f 72 20 67 70 74 65 6c 2e 20 20 55 74 69 6c  | ;;.Curl.support.for.gptel...Util | 
| 229c0 |  69 74 79 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a    3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75  | ity.functions...;;;.Code:..(requ | 
| 229e0 |  69 72 65 20 27 67 70 74 65 6c 29 0a 0a 28 65 76    61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a  | ire.'gptel)..(eval-when-compile. | 
| 22a00 |  20 20 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c    69 62 29 0a 20 20 28 72 65 71 75 69 72 65 20 27  | ..(require.'cl-lib)...(require.' | 
| 22a20 |  73 75 62 72 2d 78 29 29 0a 28 72 65 71 75 69 72    65 20 27 6d 61 70 29 0a 0a 28 64 65 63 6c 61 72  | subr-x)).(require.'map)..(declar | 
| 22a40 |  65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d    72 65 61 64 20 22 6a 73 6f 6e 22 20 28 29 29 0a  | e-function.json-read."json".()). | 
| 22a60 |  28 64 65 66 76 61 72 20 6a 73 6f 6e 2d 6f 62 6a    65 63 74 2d 74 79 70 65 29 0a 0a 28 64 65 63 6c  | (defvar.json-object-type)..(decl | 
| 22a80 |  61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74    65 6c 2d 2d 73 74 72 65 61 6d 2d 63 6f 6e 76 65  | are-function.gptel--stream-conve | 
| 22aa0 |  72 74 2d 6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67    20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 0a 28  | rt-markdown->org."gptel-org")..( | 
| 22ac0 |  64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d    63 75 72 6c 2d 65 78 74 72 61 2d 61 72 67 73 20  | defcustom.gptel-curl-extra-args. | 
| 22ae0 |  6e 69 6c 0a 20 20 22 45 78 74 72 61 20 61 72 67    75 6d 65 6e 74 73 20 74 6f 20 70 61 73 73 20 74  | nil..."Extra.arguments.to.pass.t | 
| 22b00 |  6f 20 43 75 72 6c 20 77 68 65 6e 20 73 65 6e 64    69 6e 67 20 71 75 65 72 69 65 73 2e 0a 0a 54 68  | o.Curl.when.sending.queries...Th | 
| 22b20 |  69 73 20 73 68 6f 75 6c 64 20 62 65 20 61 20 6c    69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 20  | is.should.be.a.list.of.strings,. | 
| 22b40 |  65 61 63 68 20 6f 6e 65 20 61 20 43 75 72 6c 20    63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0a 61 72 67  | each.one.a.Curl.command.line.arg | 
| 22b60 |  75 6d 65 6e 74 2e 20 20 4e 6f 74 65 20 74 68 61    74 20 74 68 65 73 65 20 73 68 6f 75 6c 64 20 6e  | ument...Note.that.these.should.n | 
| 22b80 |  6f 74 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68    20 74 68 65 20 6f 70 74 69 6f 6e 73 0a 69 6e 20  | ot.conflict.with.the.options.in. | 
| 22ba0 |  60 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 63 6f 6d    6d 6f 6e 2d 61 72 67 73 27 2c 20 77 68 69 63 68  | `gptel-curl--common-args',.which | 
| 22bc0 |  20 67 70 74 65 6c 20 72 65 71 75 69 72 65 73 20    66 6f 72 20 63 6f 72 72 65 63 74 0a 66 75 6e 63  | .gptel.requires.for.correct.func | 
| 22be0 |  74 69 6f 6e 69 6e 67 2e 0a 0a 49 66 20 79 6f 75    20 77 61 6e 74 20 74 6f 20 73 70 65 63 69 66 79  | tioning...If.you.want.to.specify | 
| 22c00 |  20 65 78 74 72 61 20 61 72 67 75 6d 65 6e 74 73    20 6f 6e 6c 79 20 77 68 65 6e 20 75 73 69 6e 67  | .extra.arguments.only.when.using | 
| 22c20 |  20 61 20 73 70 65 63 69 66 69 63 0a 67 70 74 65    6c 20 62 61 63 6b 65 6e 64 2c 20 75 73 65 20 74  | .a.specific.gptel.backend,.use.t | 
| 22c40 |  68 65 20 60 3a 63 75 72 6c 2d 61 72 67 73 27 20    73 6c 6f 74 20 6f 66 20 74 68 65 20 62 61 63 6b  | he.`:curl-args'.slot.of.the.back | 
| 22c60 |  65 6e 64 20 69 6e 73 74 65 61 64 2e 0a 53 65 65    20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27  | end.instead..See.`gptel-backend' | 
| 22c80 |  2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74    65 6c 0a 20 20 3a 74 79 70 65 20 27 28 72 65 70  | ."...:group.'gptel...:type.'(rep | 
| 22ca0 |  65 61 74 20 73 74 72 69 6e 67 29 29 0a 0a 28 64    65 66 63 6f 6e 73 74 20 67 70 74 65 6c 2d 63 75  | eat.string))..(defconst.gptel-cu | 
| 22cc0 |  72 6c 2d 2d 63 6f 6d 6d 6f 6e 2d 61 72 67 73 0a    20 20 28 69 66 20 28 6d 65 6d 71 20 73 79 73 74  | rl--common-args...(if.(memq.syst | 
| 22ce0 |  65 6d 2d 74 79 70 65 20 27 28 77 69 6e 64 6f 77    73 2d 6e 74 20 6d 73 2d 64 6f 73 29 29 0a 20 20  | em-type.'(windows-nt.ms-dos))... | 
| 22d00 |  20 20 20 20 27 28 22 2d 2d 64 69 73 61 62 6c 65    22 20 22 2d 2d 6c 6f 63 61 74 69 6f 6e 22 20 22  | ....'("--disable"."--location"." | 
| 22d20 |  2d 2d 73 69 6c 65 6e 74 22 20 22 2d 58 50 4f 53    54 22 0a 20 20 20 20 20 20 20 20 22 2d 79 37 32  | --silent"."-XPOST"........."-y72 | 
| 22d40 |  30 30 22 20 22 2d 59 31 22 20 22 2d 44 2d 22 29    0a 20 20 20 20 27 28 22 2d 2d 64 69 73 61 62 6c  | 00"."-Y1"."-D-").....'("--disabl | 
| 22d60 |  65 22 20 22 2d 2d 6c 6f 63 61 74 69 6f 6e 22 20    22 2d 2d 73 69 6c 65 6e 74 22 20 22 2d 2d 63 6f  | e"."--location"."--silent"."--co | 
| 22d80 |  6d 70 72 65 73 73 65 64 22 0a 20 20 20 20 20 20    22 2d 58 50 4f 53 54 22 20 22 2d 79 37 32 30 30  | mpressed"......."-XPOST"."-y7200 | 
| 22da0 |  22 20 22 2d 59 31 22 20 22 2d 44 2d 22 29 29 0a    20 20 22 41 72 67 75 6d 65 6e 74 73 20 61 6c 77  | "."-Y1"."-D-"))..."Arguments.alw | 
| 22dc0 |  61 79 73 20 70 61 73 73 65 64 20 74 6f 20 43 75    72 6c 20 66 6f 72 20 67 70 74 65 6c 20 71 75 65  | ays.passed.to.Curl.for.gptel.que | 
| 22de0 |  72 69 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d  | ries.")..(defun.gptel-curl--get- | 
| 22e00 |  61 72 67 73 20 28 69 6e 66 6f 20 74 6f 6b 65 6e    29 0a 20 20 22 50 72 6f 64 75 63 65 20 6c 69 73  | args.(info.token)..."Produce.lis | 
| 22e20 |  74 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66    6f 72 20 63 61 6c 6c 69 6e 67 20 43 75 72 6c 2e  | t.of.arguments.for.calling.Curl. | 
| 22e40 |  0a 0a 52 45 51 55 45 53 54 2d 44 41 54 41 20 69    73 20 74 68 65 20 64 61 74 61 20 74 6f 20 73 65  | ..REQUEST-DATA.is.the.data.to.se | 
| 22e60 |  6e 64 2c 20 54 4f 4b 45 4e 20 69 73 20 61 20 75    6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72  | nd,.TOKEN.is.a.unique.identifier | 
| 22e80 |  2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 64 61 74    61 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66  | ."...(let*.((data.(plist-get.inf | 
| 22ea0 |  6f 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20    20 20 20 3b 3b 20 57 65 20 68 61 76 65 20 74 6f  | o.:data))..........;;.We.have.to | 
| 22ec0 |  20 6c 65 74 2d 62 69 6e 64 20 74 68 65 20 66 6f    6c 6c 6f 77 69 6e 67 20 74 77 6f 20 76 61 72 69  | .let-bind.the.following.two.vari | 
| 22ee0 |  61 62 6c 65 73 20 73 69 6e 63 65 20 74 68 65 69    72 20 64 79 6e 61 6d 69 63 0a 20 20 20 20 20 20  | ables.since.their.dynamic....... | 
| 22f00 |  20 20 20 3b 3b 20 76 61 6c 75 65 73 20 61 72 65    20 75 73 65 64 20 66 6f 72 20 6b 65 79 20 6c 6f  | ...;;.values.are.used.for.key.lo | 
| 22f20 |  6f 6b 75 70 20 61 6e 64 20 75 72 6c 20 72 65 73    6f 6c 6f 75 74 69 6f 6e 0a 20 20 20 20 20 20 20  | okup.and.url.resoloution........ | 
| 22f40 |  20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64    20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f  | ..(gptel-backend.(plist-get.info | 
| 22f60 |  20 3a 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20    20 20 20 20 20 28 67 70 74 65 6c 2d 73 74 72 65  | .:backend))..........(gptel-stre | 
| 22f80 |  61 6d 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e    66 6f 20 3a 73 74 72 65 61 6d 29 29 0a 20 20 20  | am.(plist-get.info.:stream)).... | 
| 22fa0 |  20 20 20 20 20 20 28 75 72 6c 20 28 6c 65 74 20    28 28 62 61 63 6b 65 6e 64 2d 75 72 6c 20 28 67  | ......(url.(let.((backend-url.(g | 
| 22fc0 |  70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 75 72 6c    20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29  | ptel-backend-url.gptel-backend)) | 
| 22fe0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70  | ).................(if.(functionp | 
| 23000 |  20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .backend-url)................... | 
| 23020 |  20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d    62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65  | ..(with-current-buffer.(plist-ge | 
| 23040 |  74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.info.:buffer)................. | 
| 23060 |  20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 62    61 63 6b 65 6e 64 2d 75 72 6c 29 29 0a 20 20 20  | ......(funcall.backend-url)).... | 
| 23080 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62    61 63 6b 65 6e 64 2d 75 72 6c 29 29 29 0a 20 20  | ...............backend-url)))... | 
| 230a0 |  20 20 20 20 20 20 20 28 64 61 74 61 2d 6a 73 6f    6e 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67  | .......(data-json.(encode-coding | 
| 230c0 |  2d 73 74 72 69 6e 67 20 28 67 70 74 65 6c 2d 2d    6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 64 61 74 61  | -string.(gptel--json-encode.data | 
| 230e0 |  29 20 27 75 74 66 2d 38 29 29 0a 20 20 20 20 20    20 20 20 20 28 68 65 61 64 65 72 73 0a 20 20 20  | ).'utf-8))..........(headers.... | 
| 23100 |  20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 27    28 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22  | .......(append.'(("Content-Type" | 
| 23120 |  20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f    6a 73 6f 6e 22 29 29 0a 20 20 20 20 20 20 20 20  | ..."application/json"))......... | 
| 23140 |  20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d    6c 65 74 2a 20 28 28 68 65 61 64 65 72 20 28 67  | ..........(when-let*.((header.(g | 
| 23160 |  70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 68 65 61    64 65 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e  | ptel-backend-header.gptel-backen | 
| 23180 |  64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 75  | d))).....................(if.(fu | 
| 231a0 |  6e 63 74 69 6f 6e 70 20 68 65 61 64 65 72 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nctionp.header)................. | 
| 231c0 |  20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c    20 68 65 61 64 65 72 29 20 68 65 61 64 65 72 29  | ........(funcall.header).header) | 
| 231e0 |  29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67    70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 0a 20  | )))).....(when.gptel-log-level.. | 
| 23200 |  20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67    70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27  | .....(when.(eq.gptel-log-level.' | 
| 23220 |  64 65 62 75 67 29 0a 20 20 20 20 20 20 20 20 28    67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65  | debug).........(gptel--log.(gpte | 
| 23240 |  6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l--json-encode.................. | 
| 23260 |  20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d    62 64 61 20 28 70 61 69 72 29 20 28 63 6f 6e 73  | ....(mapcar.(lambda.(pair).(cons | 
| 23280 |  20 28 69 6e 74 65 72 6e 20 28 63 61 72 20 70 61    69 72 29 29 20 28 63 64 72 20 70 61 69 72 29 29  | .(intern.(car.pair)).(cdr.pair)) | 
| 232a0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68  | )..............................h | 
| 232c0 |  65 61 64 65 72 73 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65  | eaders))....................."re | 
| 232e0 |  71 75 65 73 74 20 68 65 61 64 65 72 73 22 29 29    0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c  | quest.headers")).......(gptel--l | 
| 23300 |  6f 67 20 64 61 74 61 2d 6a 73 6f 6e 20 22 72 65    71 75 65 73 74 20 62 6f 64 79 22 29 29 0a 20 20  | og.data-json."request.body"))... | 
| 23320 |  20 20 28 61 70 70 65 6e 64 0a 20 20 20 20 20 67    70 74 65 6c 2d 63 75 72 6c 2d 2d 63 6f 6d 6d 6f  | ..(append......gptel-curl--commo | 
| 23340 |  6e 2d 61 72 67 73 0a 20 20 20 20 20 67 70 74 65    6c 2d 63 75 72 6c 2d 65 78 74 72 61 2d 61 72 67  | n-args......gptel-curl-extra-arg | 
| 23360 |  73 0a 20 20 20 20 20 28 61 6e 64 2d 6c 65 74 2a    20 28 28 63 75 72 6c 2d 61 72 67 73 20 28 67 70  | s......(and-let*.((curl-args.(gp | 
| 23380 |  74 65 6c 2d 62 61 63 6b 65 6e 64 2d 63 75 72 6c    2d 61 72 67 73 20 67 70 74 65 6c 2d 62 61 63 6b  | tel-backend-curl-args.gptel-back | 
| 233a0 |  65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 28 69    66 20 28 66 75 6e 63 74 69 6f 6e 70 20 63 75 72  | end)))........(if.(functionp.cur | 
| 233c0 |  6c 2d 61 72 67 73 29 20 28 66 75 6e 63 61 6c 6c    20 63 75 72 6c 2d 61 72 67 73 29 20 63 75 72 6c  | l-args).(funcall.curl-args).curl | 
| 233e0 |  2d 61 72 67 73 29 29 0a 20 20 20 20 20 28 6c 69    73 74 20 28 66 6f 72 6d 61 74 20 22 2d 77 28 25  | -args))......(list.(format."-w(% | 
| 23400 |  73 20 2e 20 25 25 7b 73 69 7a 65 5f 68 65 61 64    65 72 7d 29 22 20 74 6f 6b 65 6e 29 29 0a 20 20  | s...%%{size_header})".token))... | 
| 23420 |  20 20 20 28 69 66 20 28 6c 65 6e 67 74 68 3c 20    64 61 74 61 2d 6a 73 6f 6e 20 67 70 74 65 6c 2d  | ...(if.(length<.data-json.gptel- | 
| 23440 |  63 75 72 6c 2d 66 69 6c 65 2d 73 69 7a 65 2d 74    68 72 65 73 68 6f 6c 64 29 0a 20 20 20 20 20 20  | curl-file-size-threshold)....... | 
| 23460 |  20 20 20 28 6c 69 73 74 20 28 66 6f 72 6d 61 74    20 22 2d 64 25 73 22 20 64 61 74 61 2d 6a 73 6f  | ...(list.(format."-d%s".data-jso | 
| 23480 |  6e 29 29 0a 20 20 20 20 20 20 20 28 6c 65 74 72    65 63 0a 20 20 20 20 20 20 20 20 20 20 20 28 28  | n))........(letrec............(( | 
| 234a0 |  74 65 6d 70 2d 66 69 6c 65 6e 61 6d 65 20 28 6d    61 6b 65 2d 74 65 6d 70 2d 66 69 6c 65 20 22 67  | temp-filename.(make-temp-file."g | 
| 234c0 |  70 74 65 6c 2d 63 75 72 6c 2d 64 61 74 61 22 20    6e 69 6c 20 22 2e 6a 73 6f 6e 22 20 64 61 74 61  | ptel-curl-data".nil.".json".data | 
| 234e0 |  2d 6a 73 6f 6e 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6c 65 61 6e 75 70 2d 66 6e 20  | -json)).............(cleanup-fn. | 
| 23500 |  28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (lambda.(&rest._)............... | 
| 23520 |  20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65    6e 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70  | ............(when.(file-exists-p | 
| 23540 |  20 74 65 6d 70 2d 66 69 6c 65 6e 61 6d 65 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .temp-filename)................. | 
| 23560 |  20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c    65 74 65 2d 66 69 6c 65 20 74 65 6d 70 2d 66 69  | ............(delete-file.temp-fi | 
| 23580 |  6c 65 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lename)......................... | 
| 235a0 |  20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b    20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73  | ....(remove-hook.'gptel-post-res | 
| 235c0 |  70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20    63 6c 65 61 6e 75 70 2d 66 6e 29 29 29 29 29 0a  | ponse-functions.cleanup-fn))))). | 
| 235e0 |  20 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f    6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72  | .........(add-hook.'gptel-post-r | 
| 23600 |  65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e    73 20 63 6c 65 61 6e 75 70 2d 66 6e 29 0a 20 20  | esponse-functions.cleanup-fn)... | 
| 23620 |  20 20 20 20 20 20 20 28 6c 69 73 74 20 22 2d 2d    64 61 74 61 2d 62 69 6e 61 72 79 22 0a 20 20 20  | .......(list."--data-binary".... | 
| 23640 |  20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72    6d 61 74 20 22 40 25 73 22 20 74 65 6d 70 2d 66  | ............(format."@%s".temp-f | 
| 23660 |  69 6c 65 6e 61 6d 65 29 29 29 29 0a 20 20 20 20    20 28 77 68 65 6e 20 28 6e 6f 74 20 28 73 74 72  | ilename))))......(when.(not.(str | 
| 23680 |  69 6e 67 2d 65 6d 70 74 79 2d 70 20 67 70 74 65    6c 2d 70 72 6f 78 79 29 29 0a 20 20 20 20 20 20  | ing-empty-p.gptel-proxy))....... | 
| 236a0 |  20 28 6c 69 73 74 20 22 2d 2d 70 72 6f 78 79 22    20 67 70 74 65 6c 2d 70 72 6f 78 79 0a 20 20 20  | .(list."--proxy".gptel-proxy.... | 
| 236c0 |  20 20 20 20 20 20 20 20 20 20 22 2d 2d 70 72 6f    78 79 2d 6e 65 67 6f 74 69 61 74 65 22 0a 20 20  | .........."--proxy-negotiate"... | 
| 236e0 |  20 20 20 20 20 20 20 20 20 20 20 22 2d 2d 70 72    6f 78 79 2d 75 73 65 72 22 20 22 3a 22 29 29 0a  | ..........."--proxy-user".":")). | 
| 23700 |  20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f    72 20 28 6b 65 79 20 2e 20 76 61 6c 29 20 69 6e  | .....(cl-loop.for.(key...val).in | 
| 23720 |  20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28  | .headers...............collect.( | 
| 23740 |  66 6f 72 6d 61 74 20 22 2d 48 25 73 3a 20 25 73    22 20 6b 65 79 20 76 61 6c 29 29 0a 20 20 20 20  | format."-H%s:.%s".key.val))..... | 
| 23760 |  20 28 6c 69 73 74 20 75 72 6c 29 29 29 29 0a 0a    3b 3b 54 4f 44 4f 3a 20 54 68 65 20 3a 74 72 61  | .(list.url))))..;;TODO:.The.:tra | 
| 23780 |  6e 73 66 6f 72 6d 65 72 20 61 72 67 75 6d 65 6e    74 20 68 65 72 65 20 69 73 20 61 6e 20 61 6c 74  | nsformer.argument.here.is.an.alt | 
| 237a0 |  65 72 6e 61 74 65 20 69 6d 70 6c 65 6d 65 6e 74    61 74 69 6f 6e 20 6f 66 0a 3b 3b 60 67 70 74 65  | ernate.implementation.of.;;`gpte | 
| 237c0 |  6c 2d 72 65 73 70 6f 6e 73 65 2d 66 69 6c 74 65    72 2d 66 75 6e 63 74 69 6f 6e 73 27 2e 20 54 68  | l-response-filter-functions'..Th | 
| 237e0 |  65 20 74 77 6f 20 6e 65 65 64 20 74 6f 20 62 65    20 75 6e 69 66 69 65 64 2e 0a 3b 3b 3b 23 23 23  | e.two.need.to.be.unified..;;;### | 
| 23800 |  61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 63 75 72 6c 2d 67 65 74 2d 72  | autoload.(defun.gptel-curl-get-r | 
| 23820 |  65 73 70 6f 6e 73 65 20 28 66 73 6d 29 0a 20 20    22 46 65 74 63 68 20 72 65 73 70 6f 6e 73 65 20  | esponse.(fsm)..."Fetch.response. | 
| 23840 |  74 6f 20 70 72 6f 6d 70 74 20 69 6e 20 73 74 61    74 65 20 46 53 4d 20 66 72 6f 6d 20 74 68 65 20  | to.prompt.in.state.FSM.from.the. | 
| 23860 |  4c 4c 4d 20 75 73 69 6e 67 20 43 75 72 6c 2e 0a    0a 46 53 4d 20 69 73 20 74 68 65 20 73 74 61 74  | LLM.using.Curl...FSM.is.the.stat | 
| 23880 |  65 20 6d 61 63 68 69 6e 65 20 64 72 69 76 69 6e    67 20 74 68 69 73 20 72 65 71 75 65 73 74 2e 0a  | e.machine.driving.this.request.. | 
| 238a0 |  0a 46 53 4d 20 69 73 20 74 68 65 20 73 74 61 74    65 20 6d 61 63 68 69 6e 65 20 64 72 69 76 69 6e  | .FSM.is.the.state.machine.drivin | 
| 238c0 |  67 20 74 68 69 73 20 72 65 71 75 65 73 74 2e 20    20 49 74 73 20 49 4e 46 4f 20 73 6c 6f 74 0a 63  | g.this.request...Its.INFO.slot.c | 
| 238e0 |  6f 6e 74 61 69 6e 73 20 74 68 65 20 64 61 74 61    20 72 65 71 75 69 72 65 64 20 66 6f 72 20 73 65  | ontains.the.data.required.for.se | 
| 23900 |  74 74 69 6e 67 20 75 70 20 74 68 65 20 72 65 71    75 65 73 74 2e 20 20 49 4e 46 4f 20 69 73 20 61  | tting.up.the.request...INFO.is.a | 
| 23920 |  0a 70 6c 69 73 74 20 77 69 74 68 20 74 68 65 20    66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 2c 20  | .plist.with.the.following.keys,. | 
| 23940 |  61 6d 6f 6e 67 20 6f 74 68 65 72 73 3a 0a 2d 20    3a 64 61 74 61 20 20 20 20 20 28 74 68 65 20 64  | among.others:.-.:data.....(the.d | 
| 23960 |  61 74 61 20 62 65 69 6e 67 20 73 65 6e 74 29 0a    2d 20 3a 62 75 66 66 65 72 20 20 20 28 74 68 65  | ata.being.sent).-.:buffer...(the | 
| 23980 |  20 67 70 74 65 6c 20 62 75 66 66 65 72 29 0a 2d    20 3a 70 6f 73 69 74 69 6f 6e 20 28 6d 61 72 6b  | .gptel.buffer).-.:position.(mark | 
| 239a0 |  65 72 20 61 74 20 77 68 69 63 68 20 74 6f 20 69    6e 73 65 72 74 20 74 68 65 20 72 65 73 70 6f 6e  | er.at.which.to.insert.the.respon | 
| 239c0 |  73 65 29 2e 0a 2d 20 3a 63 61 6c 6c 62 61 63 6b    20 28 6f 70 74 69 6f 6e 61 6c 2c 20 74 68 65 20  | se)..-.:callback.(optional,.the. | 
| 239e0 |  72 65 71 75 65 73 74 20 63 61 6c 6c 62 61 63 6b    29 0a 0a 43 61 6c 6c 20 43 41 4c 4c 42 41 43 4b  | request.callback)..Call.CALLBACK | 
| 23a00 |  20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e    73 65 20 61 6e 64 20 49 4e 46 4f 20 61 66 74 65  | .with.the.response.and.INFO.afte | 
| 23a20 |  72 77 61 72 64 73 2e 20 20 49 66 20 6f 6d 69 74    74 65 64 0a 74 68 65 20 72 65 73 70 6f 6e 73 65  | rwards...If.omitted.the.response | 
| 23a40 |  20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74    6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75  | .is.inserted.into.the.current.bu | 
| 23a60 |  66 66 65 72 20 61 66 74 65 72 20 70 6f 69 6e 74    2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 74 6f 6b  | ffer.after.point."...(let*.((tok | 
| 23a80 |  65 6e 20 28 6d 64 35 20 28 66 6f 72 6d 61 74 20    22 25 73 25 73 25 73 25 73 22 0a 20 20 20 20 20  | en.(md5.(format."%s%s%s%s"...... | 
| 23aa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 72 61 6e 64 6f 6d 29  | ........................(random) | 
| 23ac0 |  20 28 65 6d 61 63 73 2d 70 69 64 29 20 28 75 73    65 72 2d 66 75 6c 6c 2d 6e 61 6d 65 29 0a 20 20  | .(emacs-pid).(user-full-name)... | 
| 23ae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 72 65 63 65  | ...........................(rece | 
| 23b00 |  6e 74 2d 6b 65 79 73 29 29 29 29 0a 20 20 20 20    20 20 20 20 20 28 69 6e 66 6f 20 28 67 70 74 65  | nt-keys))))..........(info.(gpte | 
| 23b20 |  6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29    0a 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 65  | l-fsm-info.fsm))..........(backe | 
| 23b40 |  6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e    66 6f 20 3a 62 61 63 6b 65 6e 64 29 29 0a 20 20  | nd.(plist-get.info.:backend))... | 
| 23b60 |  20 20 20 20 20 20 20 28 61 72 67 73 20 28 67 70    74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 61 72  | .......(args.(gptel-curl--get-ar | 
| 23b80 |  67 73 20 69 6e 66 6f 20 74 6f 6b 65 6e 29 29 0a    20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d  | gs.info.token))..........(stream | 
| 23ba0 |  20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f    20 3a 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20  | .(plist-get.info.:stream))...... | 
| 23bc0 |  20 20 20 20 28 70 72 6f 63 65 73 73 20 28 61 70    70 6c 79 20 23 27 73 74 61 72 74 2d 70 72 6f 63  | ....(process.(apply.#'start-proc | 
| 23be0 |  65 73 73 20 22 67 70 74 65 6c 2d 63 75 72 6c 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ess."gptel-curl"................ | 
| 23c00 |  20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c    2d 2d 74 65 6d 70 2d 62 75 66 66 65 72 20 22 20  | ..........(gptel--temp-buffer.". | 
| 23c20 |  2a 67 70 74 65 6c 2d 63 75 72 6c 2a 22 29 20 28    67 70 74 65 6c 2d 2d 63 75 72 6c 2d 70 61 74 68  | *gptel-curl*").(gptel--curl-path | 
| 23c40 |  29 20 61 72 67 73 29 29 29 0a 20 20 20 20 28 77    68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f  | ).args))).....(when.(eq.gptel-lo | 
| 23c60 |  67 2d 6c 65 76 65 6c 20 27 64 65 62 75 67 29 0a    20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f  | g-level.'debug).......(gptel--lo | 
| 23c80 |  67 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 73    68 65 6c 6c 2d 71 75 6f 74 65 2d 61 72 67 75 6d  | g.(mapconcat.#'shell-quote-argum | 
| 23ca0 |  65 6e 74 20 28 63 6f 6e 73 20 28 67 70 74 65 6c    2d 2d 63 75 72 6c 2d 70 61 74 68 29 20 61 72 67  | ent.(cons.(gptel--curl-path).arg | 
| 23cc0 |  73 29 20 22 20 5c 5c 5c 6e 22 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72  | s).".\\\n")..................."r | 
| 23ce0 |  65 71 75 65 73 74 20 43 75 72 6c 20 63 6f 6d 6d    61 6e 64 22 20 27 6e 6f 2d 6a 73 6f 6e 29 29 0a  | equest.Curl.command".'no-json)). | 
| 23d00 |  20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e    74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73  | ....(with-current-buffer.(proces | 
| 23d20 |  73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73    29 0a 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20  | s-buffer.process).......(cond... | 
| 23d40 |  20 20 20 20 20 28 28 65 71 20 28 67 70 74 65 6c    2d 62 61 63 6b 65 6e 64 2d 63 6f 64 69 6e 67 2d  | .....((eq.(gptel-backend-coding- | 
| 23d60 |  73 79 73 74 65 6d 20 62 61 63 6b 65 6e 64 29 20    27 62 69 6e 61 72 79 29 0a 20 20 20 20 20 20 20  | system.backend).'binary)........ | 
| 23d80 |  20 3b 3b 20 73 65 74 2d 62 75 66 66 65 72 2d 66    69 6c 65 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65  | .;;.set-buffer-file-coding-syste | 
| 23da0 |  6d 20 69 73 20 6e 6f 74 20 6e 65 65 64 65 64 20    73 69 6e 63 65 20 77 65 20 64 6f 6e 27 74 20 73  | m.is.not.needed.since.we.don't.s | 
| 23dc0 |  61 76 65 20 74 68 69 73 20 62 75 66 66 65 72 0a    20 20 20 20 20 20 20 20 28 73 65 74 2d 62 75 66  | ave.this.buffer.........(set-buf | 
| 23de0 |  66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 6e 69    6c 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d  | fer-multibyte.nil).........(set- | 
| 23e00 |  70 72 6f 63 65 73 73 2d 63 6f 64 69 6e 67 2d 73    79 73 74 65 6d 20 70 72 6f 63 65 73 73 20 27 62  | process-coding-system.process.'b | 
| 23e20 |  69 6e 61 72 79 20 27 62 69 6e 61 72 79 29 29 0a    20 20 20 20 20 20 20 28 74 0a 09 3b 3b 20 44 6f  | inary.'binary))........(t..;;.Do | 
| 23e40 |  6e 27 74 20 74 72 79 20 74 6f 20 63 6f 6e 76 65    72 74 20 63 72 2d 6c 66 20 74 6f 20 63 72 20 6f  | n't.try.to.convert.cr-lf.to.cr.o | 
| 23e60 |  6e 20 57 69 6e 64 6f 77 73 20 73 6f 20 74 68 61    74 20 63 75 72 6c 27 73 20 22 68 65 61 64 65 72  | n.Windows.so.that.curl's."header | 
| 23e80 |  20 73 69 7a 65 0a 09 3b 3b 20 69 6e 20 62 79 74    65 73 22 20 73 74 61 79 73 20 63 6f 72 72 65 63  | .size..;;.in.bytes".stays.correc | 
| 23ea0 |  74 2e 20 45 78 70 6c 69 63 69 74 6c 79 20 73 65    74 20 75 74 66 2d 38 20 66 6f 72 20 6e 6f 6e 2d  | t..Explicitly.set.utf-8.for.non- | 
| 23ec0 |  77 69 6e 20 73 79 73 74 65 6d 73 20 74 6f 6f 2c    0a 09 3b 3b 20 66 6f 72 20 63 61 73 65 73 20 77  | win.systems.too,..;;.for.cases.w | 
| 23ee0 |  68 65 6e 20 62 75 66 66 65 72 20 63 6f 64 69 6e    67 20 73 79 73 74 65 6d 20 69 73 20 6e 6f 74 20  | hen.buffer.coding.system.is.not. | 
| 23f00 |  73 65 74 20 74 6f 20 75 74 66 2d 38 2e 0a 09 28    73 65 74 2d 70 72 6f 63 65 73 73 2d 63 6f 64 69  | set.to.utf-8...(set-process-codi | 
| 23f20 |  6e 67 2d 73 79 73 74 65 6d 20 70 72 6f 63 65 73    73 20 27 75 74 66 2d 38 2d 75 6e 69 78 20 27 75  | ng-system.process.'utf-8-unix.'u | 
| 23f40 |  74 66 2d 38 2d 75 6e 69 78 29 29 29 0a 20 20 20    20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d  | tf-8-unix))).......(set-process- | 
| 23f60 |  71 75 65 72 79 2d 6f 6e 2d 65 78 69 74 2d 66 6c    61 67 20 70 72 6f 63 65 73 73 20 6e 69 6c 29 0a  | query-on-exit-flag.process.nil). | 
| 23f80 |  20 20 20 20 20 20 28 69 66 20 28 70 6c 69 73 74    2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6b 65 6e  | ......(if.(plist-get.info.:token | 
| 23fa0 |  29 20 20 20 20 20 20 20 3b 6e 6f 74 20 74 68 65    20 66 69 72 73 74 20 72 75 6e 2c 20 73 65 74 20  | ).......;not.the.first.run,.set. | 
| 23fc0 |  6f 6e 6c 79 20 74 68 65 20 74 6f 6b 65 6e 0a 20    20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d  | only.the.token...........(plist- | 
| 23fe0 |  70 75 74 20 69 6e 66 6f 20 3a 74 6f 6b 65 6e 20    74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 20 28  | put.info.:token.token).........( | 
| 24000 |  73 65 74 66 20 28 67 70 74 65 6c 2d 66 73 6d 2d    69 6e 66 6f 20 66 73 6d 29 20 20 20 20 20 20 3b  | setf.(gptel-fsm-info.fsm)......; | 
| 24020 |  66 69 73 74 20 72 75 6e 2c 20 73 65 74 20 61 6c    6c 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d 65  | fist.run,.set.all.process.parame | 
| 24040 |  74 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6e 63 6f 6e 63 20 28 6c 69 73 74 20  | ters...............(nconc.(list. | 
| 24060 |  3a 74 6f 6b 65 6e 20 74 6f 6b 65 6e 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :token.token.................... | 
| 24080 |  20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 66 6f    72 6d 65 72 0a 20 20 20 20 20 20 20 20 20 20 20  | ........:transformer............ | 
| 240a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 77 68 65 6e 20 28 77 69 74 68 2d 63 75 72 72  | ................(when.(with-curr | 
| 240c0 |  65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73    74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66  | ent-buffer.(plist-get.info.:buff | 
| 240e0 |  65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | er)............................. | 
| 24100 |  20 20 20 20 20 20 20 28 61 6e 64 20 28 64 65 72    69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67  | .......(and.(derived-mode-p.'org | 
| 24120 |  2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -mode).......................... | 
| 24140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67    70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74  | ...............gptel-org-convert | 
| 24160 |  2d 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -response))..................... | 
| 24180 |  20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    2d 73 74 72 65 61 6d 2d 63 6f 6e 76 65 72 74 2d  | .........(gptel--stream-convert- | 
| 241a0 |  6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | markdown->org................... | 
| 241c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69    73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73  | ............(plist-get.info.:pos | 
| 241e0 |  69 74 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ition))))......................( | 
| 24200 |  75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 67 65    74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b  | unless.(plist-get.info.:callback | 
| 24220 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a  | )........................(list.: | 
| 24240 |  63 61 6c 6c 62 61 63 6b 20 28 69 66 20 73 74 72    65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20  | callback.(if.stream............. | 
| 24260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23  | ...............................# | 
| 24280 |  27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72    65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f  | 'gptel-curl--stream-insert-respo | 
| 242a0 |  6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nse............................. | 
| 242c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67    70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73  | .............#'gptel--insert-res | 
| 242e0 |  70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  | ponse)))......................in | 
| 24300 |  66 6f 29 29 29 0a 20 20 20 20 20 20 28 69 66 20    73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20  | fo))).......(if.stream.......... | 
| 24320 |  20 28 70 72 6f 67 6e 20 28 73 65 74 2d 70 72 6f    63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72  | .(progn.(set-process-sentinel.pr | 
| 24340 |  6f 63 65 73 73 20 23 27 67 70 74 65 6c 2d 63 75    72 6c 2d 2d 73 74 72 65 61 6d 2d 63 6c 65 61 6e  | ocess.#'gptel-curl--stream-clean | 
| 24360 |  75 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73  | up)..................(set-proces | 
| 24380 |  73 2d 66 69 6c 74 65 72 20 70 72 6f 63 65 73 73    20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73  | s-filter.process.#'gptel-curl--s | 
| 243a0 |  74 72 65 61 6d 2d 66 69 6c 74 65 72 29 29 0a 20    20 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63  | tream-filter)).........(set-proc | 
| 243c0 |  65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 6f    63 65 73 73 20 23 27 67 70 74 65 6c 2d 63 75 72  | ess-sentinel.process.#'gptel-cur | 
| 243e0 |  6c 2d 2d 73 65 6e 74 69 6e 65 6c 29 29 0a 20 20    20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74  | l--sentinel)).......(setf.(alist | 
| 24400 |  2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74    65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73  | -get.process.gptel--request-alis | 
| 24420 |  74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28    63 6f 6e 73 20 66 73 6d 0a 20 20 20 20 20 20 20  | t).............(cons.fsm........ | 
| 24440 |  20 20 20 20 20 20 20 20 20 20 20 23 27 28 6c 61    6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20  | ...........#'(lambda.()......... | 
| 24460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 43 6c 65 61 6e 20 75 70 20 43 75 72 6c 20 70  | ..............;;.Clean.up.Curl.p | 
| 24480 |  72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65  | rocess.......................(se | 
| 244a0 |  74 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e    65 6c 20 70 72 6f 63 65 73 73 20 23 27 69 67 6e  | t-process-sentinel.process.#'ign | 
| 244c0 |  6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65  | ore).......................(dele | 
| 244e0 |  74 65 2d 70 72 6f 63 65 73 73 20 70 72 6f 63 65    73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | te-process.process)............. | 
| 24500 |  20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d    62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d  | ..........(kill-buffer.(process- | 
| 24520 |  62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29    29 29 29 29 29 29 0a 0a 3b 3b 20 3b 3b 20 41 68  | buffer.process))))))))..;;.;;.Ah | 
| 24540 |  65 61 64 2d 4f 66 2d 54 69 6d 65 20 64 69 73 70    61 74 63 68 20 63 6f 64 65 20 66 6f 72 20 74 68  | ead-Of-Time.dispatch.code.for.th | 
| 24560 |  65 20 70 61 72 73 65 72 73 0a 3b 3b 20 3a 70 61    72 73 65 72 20 3b 20 46 49 58 4d 45 20 60 63 6c  | e.parsers.;;.:parser.;.FIXME.`cl | 
| 24580 |  2d 2d 67 65 6e 65 72 69 63 2d 2a 27 20 61 72 65    20 69 6e 74 65 72 6e 61 6c 20 66 75 6e 63 74 69  | --generic-*'.are.internal.functi | 
| 245a0 |  6f 6e 73 0a 3b 3b 20 28 63 6c 2d 2d 67 65 6e 65    72 69 63 2d 6d 65 74 68 6f 64 2d 66 75 6e 63 74  | ons.;;.(cl--generic-method-funct | 
| 245c0 |  69 6f 6e 0a 3b 3b 20 20 28 69 66 20 73 74 72 65    61 6d 0a 3b 3b 20 20 20 20 20 20 28 63 6c 2d 6c  | ion.;;..(if.stream.;;......(cl-l | 
| 245e0 |  6f 6f 70 0a 3b 3b 20 20 20 20 20 20 20 66 6f 72    20 74 79 70 65 20 69 6e 0a 3b 3b 20 20 20 20 20  | oop.;;.......for.type.in.;;..... | 
| 24600 |  20 20 28 63 6c 2d 2d 63 6c 61 73 73 2d 61 6c 6c    70 61 72 65 6e 74 73 20 28 67 65 74 20 28 74 79  | ..(cl--class-allparents.(get.(ty | 
| 24620 |  70 65 2d 6f 66 20 62 61 63 6b 65 6e 64 29 20 27    63 6c 2d 2d 63 6c 61 73 73 29 29 0a 3b 3b 20 20  | pe-of.backend).'cl--class)).;;.. | 
| 24640 |  20 20 20 20 20 77 69 74 68 20 6d 65 74 68 6f 64    73 20 3d 20 28 63 6c 2d 2d 67 65 6e 65 72 69 63  | .....with.methods.=.(cl--generic | 
| 24660 |  2d 6d 65 74 68 6f 64 2d 74 61 62 6c 65 0a 3b 3b    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -method-table.;;................ | 
| 24680 |  20 20 20 20 20 20 20 28 63 6c 2d 2d 67 65 6e 65    72 69 63 20 27 67 70 74 65 6c 2d 63 75 72 6c 2d  | .......(cl--generic.'gptel-curl- | 
| 246a0 |  2d 70 61 72 73 65 2d 73 74 72 65 61 6d 29 29 0a    3b 3b 20 20 20 20 20 20 20 77 68 65 6e 20 28 63  | -parse-stream)).;;.......when.(c | 
| 246c0 |  6c 2d 2d 67 65 6e 65 72 69 63 2d 6d 65 6d 62 65    72 2d 6d 65 74 68 6f 64 20 60 28 2c 74 79 70 65  | l--generic-member-method.`(,type | 
| 246e0 |  20 74 29 20 6e 69 6c 20 6d 65 74 68 6f 64 73 29    0a 3b 3b 20 20 20 20 20 20 20 72 65 74 75 72 6e  | .t).nil.methods).;;.......return | 
| 24700 |  20 28 63 61 72 20 69 74 29 29 0a 3b 3b 20 20 20    20 28 63 6c 2d 6c 6f 6f 70 0a 3b 3b 20 20 20 20  | .(car.it)).;;....(cl-loop.;;.... | 
| 24720 |  20 66 6f 72 20 74 79 70 65 20 69 6e 0a 3b 3b 20    20 20 20 20 28 63 6c 2d 2d 63 6c 61 73 73 2d 61  | .for.type.in.;;.....(cl--class-a | 
| 24740 |  6c 6c 70 61 72 65 6e 74 73 20 28 67 65 74 20 28    74 79 70 65 2d 6f 66 20 62 61 63 6b 65 6e 64 29  | llparents.(get.(type-of.backend) | 
| 24760 |  20 27 63 6c 2d 2d 63 6c 61 73 73 29 29 0a 3b 3b    20 20 20 20 20 77 69 74 68 20 6d 65 74 68 6f 64  | .'cl--class)).;;.....with.method | 
| 24780 |  73 20 3d 20 28 63 6c 2d 2d 67 65 6e 65 72 69 63    2d 6d 65 74 68 6f 64 2d 74 61 62 6c 65 0a 3b 3b  | s.=.(cl--generic-method-table.;; | 
| 247a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 6c 2d 2d 67 65 6e 65 72 69  | .....................(cl--generi | 
| 247c0 |  63 20 27 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d    72 65 73 70 6f 6e 73 65 29 29 0a 3b 3b 20 20 20  | c.'gptel--parse-response)).;;... | 
| 247e0 |  20 20 77 68 65 6e 20 28 63 6c 2d 2d 67 65 6e 65    72 69 63 2d 6d 65 6d 62 65 72 2d 6d 65 74 68 6f  | ..when.(cl--generic-member-metho | 
| 24800 |  64 20 60 28 2c 74 79 70 65 20 74 20 74 29 20 6e    69 6c 20 6d 65 74 68 6f 64 73 29 0a 3b 3b 20 20  | d.`(,type.t.t).nil.methods).;;.. | 
| 24820 |  20 20 20 72 65 74 75 72 6e 20 28 63 61 72 20 69    74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | ...return.(car.it))))..(defun.gp | 
| 24840 |  74 65 6c 2d 63 75 72 6c 2d 2d 6c 6f 67 2d 72 65    73 70 6f 6e 73 65 20 28 70 72 6f 63 2d 62 75 66  | tel-curl--log-response.(proc-buf | 
| 24860 |  20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 50    61 72 73 65 20 72 65 73 70 6f 6e 73 65 20 62 75  | .proc-info)..."Parse.response.bu | 
| 24880 |  66 66 65 72 20 50 52 4f 43 2d 42 55 46 20 61 6e    64 20 6c 6f 67 20 72 65 73 70 6f 6e 73 65 2e 0a  | ffer.PROC-BUF.and.log.response.. | 
| 248a0 |  0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73 20 74 68    65 20 70 6c 69 73 74 20 63 6f 6e 74 61 69 6e 69  | .PROC-INFO.is.the.plist.containi | 
| 248c0 |  6e 67 20 70 72 6f 63 65 73 73 20 6d 65 74 61 64    61 74 61 2e 22 0a 20 20 28 77 69 74 68 2d 63 75  | ng.process.metadata."...(with-cu | 
| 248e0 |  72 72 65 6e 74 2d 62 75 66 66 65 72 20 70 72 6f    63 2d 62 75 66 0a 20 20 20 20 28 73 61 76 65 2d  | rrent-buffer.proc-buf.....(save- | 
| 24900 |  65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20    28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e  | excursion.......(goto-char.(poin | 
| 24920 |  74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 77    68 65 6e 20 28 72 65 2d 73 65 61 72 63 68 2d 66  | t-min)).......(when.(re-search-f | 
| 24940 |  6f 72 77 61 72 64 20 22 0d 3f 5c 6e 0d 3f 5c 6e    22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20  | orward.".?\n.?\n".nil.t)........ | 
| 24960 |  20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c    2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75  | .(when.(eq.gptel-log-level.'debu | 
| 24980 |  67 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d  | g)...........(gptel--log.(gptel- | 
| 249a0 |  2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -json-encode.................... | 
| 249c0 |  20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73    74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74  | ....(buffer-substring-no-propert | 
| 249e0 |  69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69  | ies.........................(poi | 
| 24a00 |  6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69    6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | nt-min).(1-.(point)))).......... | 
| 24a20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65    73 70 6f 6e 73 65 20 68 65 61 64 65 72 73 22 29  | ............."response.headers") | 
| 24a40 |  29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28    28 70 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20  | ).........(let.((p.(point))).... | 
| 24a60 |  20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 65    61 72 63 68 2d 66 6f 72 77 61 72 64 20 28 70 6c  | .......(when.(search-forward.(pl | 
| 24a80 |  69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66    6f 20 3a 74 6f 6b 65 6e 29 20 6e 69 6c 20 74 29  | ist-get.proc-info.:token).nil.t) | 
| 24aa0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f    74 6f 2d 63 68 61 72 20 28 31 2d 20 28 6d 61 74  | .............(goto-char.(1-.(mat | 
| 24ac0 |  63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67  | ch-beginning.0))).............(g | 
| 24ae0 |  70 74 65 6c 2d 2d 6c 6f 67 20 28 62 75 66 66 65    72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70  | ptel--log.(buffer-substring-no-p | 
| 24b00 |  72 6f 70 65 72 74 69 65 73 20 70 20 28 70 6f 69    6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | roperties.p.(point))............ | 
| 24b20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65    73 70 6f 6e 73 65 20 62 6f 64 79 22 29 29 29 29  | ............."response.body")))) | 
| 24b40 |  29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 53 65    70 61 72 61 74 65 20 75 73 65 72 2d 6d 65 73 73  | )))..;;.TODO:.Separate.user-mess | 
| 24b60 |  61 67 69 6e 67 20 66 72 6f 6d 20 74 68 69 73 20    66 75 6e 63 74 69 6f 6e 0a 28 64 65 66 75 6e 20  | aging.from.this.function.(defun. | 
| 24b80 |  67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65    61 6d 2d 63 6c 65 61 6e 75 70 20 28 70 72 6f 63  | gptel-curl--stream-cleanup.(proc | 
| 24ba0 |  65 73 73 20 5f 73 74 61 74 75 73 29 0a 20 20 22    50 72 6f 63 65 73 73 20 73 65 6e 74 69 6e 65 6c  | ess._status)..."Process.sentinel | 
| 24bc0 |  20 66 6f 72 20 67 70 74 65 6c 20 63 75 72 6c 20    72 65 71 75 65 73 74 73 2e 0a 0a 50 52 4f 43 45  | .for.gptel.curl.requests...PROCE | 
| 24be0 |  53 53 20 61 6e 64 20 5f 53 54 41 54 55 53 20 61    72 65 20 70 72 6f 63 65 73 73 20 70 61 72 61 6d  | SS.and._STATUS.are.process.param | 
| 24c00 |  65 74 65 72 73 2e 22 0a 20 20 28 6c 65 74 20 28    28 70 72 6f 63 2d 62 75 66 20 28 70 72 6f 63 65  | eters."...(let.((proc-buf.(proce | 
| 24c20 |  73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73    73 29 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 28  | ss-buffer.process))).....(let*.( | 
| 24c40 |  28 66 73 6d 20 28 63 61 72 20 28 61 6c 69 73 74    2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74  | (fsm.(car.(alist-get.process.gpt | 
| 24c60 |  65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73    74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | el--request-alist)))............ | 
| 24c80 |  28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d    2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20  | (info.(gptel-fsm-info.fsm))..... | 
| 24ca0 |  20 20 20 20 20 20 20 28 68 74 74 70 2d 73 74 61    74 75 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69  | .......(http-status.(plist-get.i | 
| 24cc0 |  6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73    29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20  | nfo.:http-status))).......(when. | 
| 24ce0 |  67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20    28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 6c 6f 67  | gptel-log-level.(gptel-curl--log | 
| 24d00 |  2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 62    75 66 20 69 6e 66 6f 29 29 20 3b 6c 6f 67 67 69  | -response.proc-buf.info)).;loggi | 
| 24d20 |  6e 67 0a 20 20 20 20 20 20 28 69 66 20 28 6d 65    6d 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73  | ng.......(if.(member.http-status | 
| 24d40 |  20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29    20 3b 46 69 6e 69 73 68 20 68 61 6e 64 6c 69 6e  | .'("200"."100")).;Finish.handlin | 
| 24d60 |  67 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20    20 20 20 20 20 3b 3b 20 52 75 6e 20 74 68 65 20  | g.response...........;;.Run.the. | 
| 24d80 |  63 61 6c 6c 62 61 63 6b 20 6f 6e 65 20 6c 61 73    74 20 74 69 6d 65 20 74 6f 20 73 69 67 6e 61 6c  | callback.one.last.time.to.signal | 
| 24da0 |  20 74 68 61 74 20 74 68 65 20 70 72 6f 63 65 73    73 20 68 61 73 20 65 6e 64 65 64 0a 20 20 20 20  | .that.the.process.has.ended..... | 
| 24dc0 |  20 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f    74 65 64 2d 65 72 72 6f 72 73 20 22 67 70 74 65  | ......(with-demoted-errors."gpte | 
| 24de0 |  6c 20 63 61 6c 6c 62 61 63 6b 20 65 72 72 6f 72    3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20  | l.callback.error:.%S"........... | 
| 24e00 |  20 20 28 66 75 6e 63 61 6c 6c 20 28 70 6c 69 73    74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c  | ..(funcall.(plist-get.info.:call | 
| 24e20 |  62 61 63 6b 29 20 74 20 69 6e 66 6f 29 29 0a 20    20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72  | back).t.info)).........(with-cur | 
| 24e40 |  72 65 6e 74 2d 62 75 66 66 65 72 20 70 72 6f 63    2d 62 75 66 20 20 20 3b 20 4f 72 20 43 61 70 74  | rent-buffer.proc-buf...;.Or.Capt | 
| 24e60 |  75 72 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67    65 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74  | ure.error.message...........(got | 
| 24e80 |  6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61    78 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73  | o-char.(point-max))...........(s | 
| 24ea0 |  65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 28    70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a  | earch-backward.(plist-get.info.: | 
| 24ec0 |  74 6f 6b 65 6e 29 29 0a 20 20 20 20 20 20 20 20    20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72  | token))...........(backward-char | 
| 24ee0 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61    73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 5f 20 2e  | )...........(pcase-let*.((`(,_.. | 
| 24f00 |  20 2c 68 65 61 64 65 72 2d 73 69 7a 65 29 20 28    72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75  | .,header-size).(read.(current-bu | 
| 24f20 |  66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ffer)))........................( | 
| 24f40 |  72 65 73 70 6f 6e 73 65 20 28 70 72 6f 67 6e 20    28 67 6f 74 6f 2d 63 68 61 72 20 68 65 61 64 65  | response.(progn.(goto-char.heade | 
| 24f60 |  72 2d 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | r-size)......................... | 
| 24f80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20  | ................(condition-case. | 
| 24fa0 |  6e 69 6c 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e    2d 72 65 61 64 29 0a 20 20 20 20 20 20 20 20 20  | nil.(gptel--json-read).......... | 
| 24fc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 24fe0 |  20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 65    61 64 2d 65 72 72 6f 72 29 29 29 29 0a 20 20 20  | .(error.'json-read-error)))).... | 
| 25000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 65 72 72 6f 72 2d 64 61 74 61 20  | ....................(error-data. | 
| 25020 |  28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f    6e 73 65 20 3a 65 72 72 6f 72 29 29 29 0a 20 20  | (plist-get.response.:error)))... | 
| 25040 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72  | ..........(cond..............(er | 
| 25060 |  72 6f 72 2d 64 61 74 61 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75  | ror-data...............(plist-pu | 
| 25080 |  74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 20 65 72    72 6f 72 2d 64 61 74 61 29 29 0a 20 20 20 20 20  | t.info.:error.error-data))...... | 
| 250a0 |  20 20 20 20 20 20 20 20 28 28 65 71 20 72 65 73    70 6f 6e 73 65 20 27 6a 73 6f 6e 2d 72 65 61 64  | ........((eq.response.'json-read | 
| 250c0 |  2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74  | -error)...............(plist-put | 
| 250e0 |  20 69 6e 66 6f 20 3a 65 72 72 6f 72 20 22 4d 61    6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20  | .info.:error."Malformed.JSON.in. | 
| 25100 |  72 65 73 70 6f 6e 73 65 2e 22 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 28 74 20 28 70 6c  | response."))..............(t.(pl | 
| 25120 |  69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 65 72    72 6f 72 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70  | ist-put.info.:error."Could.not.p | 
| 25140 |  61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e    73 65 2e 22 29 29 29 29 29 0a 20 20 20 20 20 20  | arse.HTTP.response.")))))....... | 
| 25160 |  20 20 28 77 69 74 68 2d 64 65 6d 6f 74 65 64 2d    65 72 72 6f 72 73 20 22 67 70 74 65 6c 20 63 61  | ..(with-demoted-errors."gptel.ca | 
| 25180 |  6c 6c 62 61 63 6b 20 65 72 72 6f 72 3a 20 25 53    22 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e  | llback.error:.%S"...........(fun | 
| 251a0 |  63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 65 74 20    69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 20  | call.(plist-get.info.:callback). | 
| 251c0 |  6e 69 6c 20 69 6e 66 6f 29 29 29 0a 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72  | nil.info))).......(gptel--fsm-tr | 
| 251e0 |  61 6e 73 69 74 69 6f 6e 20 66 73 6d 29 29 20 20    20 20 20 20 3b 20 4d 6f 76 65 20 74 6f 20 6e 65  | ansition.fsm))......;.Move.to.ne | 
| 25200 |  78 74 20 73 74 61 74 65 0a 20 20 20 20 28 73 65    74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72  | xt.state.....(setf.(alist-get.pr | 
| 25220 |  6f 63 65 73 73 20 67 70 74 65 6c 2d 2d 72 65 71    75 65 73 74 2d 61 6c 69 73 74 20 6e 69 6c 20 27  | ocess.gptel--request-alist.nil.' | 
| 25240 |  72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 20 20    20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 70 72  | remove).nil).....(kill-buffer.pr | 
| 25260 |  6f 63 2d 62 75 66 29 29 29 0a 0a 28 64 65 66 75    6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74  | oc-buf)))..(defun.gptel-curl--st | 
| 25280 |  72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70    6f 6e 73 65 20 28 72 65 73 70 6f 6e 73 65 20 69  | ream-insert-response.(response.i | 
| 252a0 |  6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 72 61    77 29 0a 20 20 22 49 6e 73 65 72 74 20 73 74 72  | nfo.&optional.raw)..."Insert.str | 
| 252c0 |  65 61 6d 69 6e 67 20 52 45 53 50 4f 4e 53 45 20    66 72 6f 6d 20 61 6e 20 4c 4c 4d 20 69 6e 74 6f  | eaming.RESPONSE.from.an.LLM.into | 
| 252e0 |  20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65    72 2e 0a 0a 49 4e 46 4f 20 69 73 20 61 20 6d 75  | .the.gptel.buffer...INFO.is.a.mu | 
| 25300 |  74 61 62 6c 65 20 70 6c 69 73 74 20 63 6f 6e 74    61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69  | table.plist.containing.informati | 
| 25320 |  6f 6e 20 72 65 6c 65 76 61 6e 74 20 74 6f 20 74    68 69 73 20 62 75 66 66 65 72 2e 0a 53 65 65 20  | on.relevant.to.this.buffer..See. | 
| 25340 |  60 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d    72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 64 65  | `gptel--url-get-response'.for.de | 
| 25360 |  74 61 69 6c 73 2e 0a 0a 4f 70 74 69 6f 6e 61 6c    20 52 41 57 20 64 69 73 61 62 6c 65 73 20 74 65  | tails...Optional.RAW.disables.te | 
| 25380 |  78 74 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e    64 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e  | xt.properties.and.transformation | 
| 253a0 |  2e 22 0a 20 20 28 70 63 61 73 65 20 72 65 73 70    6f 6e 73 65 0a 20 20 20 20 28 28 70 72 65 64 20  | ."...(pcase.response.....((pred. | 
| 253c0 |  73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 28 6c    65 74 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65  | stringp)......(let.((start-marke | 
| 253e0 |  72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66    6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20  | r.(plist-get.info.:position))... | 
| 25400 |  20 20 20 20 20 20 20 20 20 28 74 72 61 63 6b 69    6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74  | .........(tracking-marker.(plist | 
| 25420 |  2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b    69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20  | -get.info.:tracking-marker)).... | 
| 25440 |  20 20 20 20 20 20 20 20 28 74 72 61 6e 73 66 6f    72 6d 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20  | ........(transformer.(plist-get. | 
| 25460 |  69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72 6d 65    72 29 29 29 0a 20 20 20 20 20 20 20 28 77 69 74  | info.:transformer)))........(wit | 
| 25480 |  68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72    20 28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20  | h-current-buffer.(marker-buffer. | 
| 254a0 |  73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20    20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63  | start-marker)..........(save-exc | 
| 254c0 |  75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20    20 20 28 75 6e 6c 65 73 73 20 74 72 61 63 6b 69  | ursion............(unless.tracki | 
| 254e0 |  6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61  | ng-marker..............(goto-cha | 
| 25500 |  72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e  | r.start-marker)..............(un | 
| 25520 |  6c 65 73 73 20 28 6f 72 20 28 62 6f 62 70 29 20    28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20  | less.(or.(bobp).(plist-get.info. | 
| 25540 |  3a 69 6e 2d 70 6c 61 63 65 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65  | :in-place))................(inse | 
| 25560 |  72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73    65 2d 73 65 70 61 72 61 74 6f 72 29 0a 20 20 20  | rt.gptel-response-separator).... | 
| 25580 |  20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65    6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20  | ............(when.gptel-mode.... | 
| 255a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 50 75 74 20 70 72 65 66 69 78 20 62 65 66 6f  | ..............;;.Put.prefix.befo | 
| 255c0 |  72 65 20 41 49 20 72 65 73 70 6f 6e 73 65 2e 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | re.AI.response.................. | 
| 255e0 |  20 28 69 6e 73 65 72 74 20 28 67 70 74 65 6c 2d    72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d  | .(insert.(gptel-response-prefix- | 
| 25600 |  73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d  | string)))................(move-m | 
| 25620 |  61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b    65 72 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20  | arker.start-marker.(point))).... | 
| 25640 |  20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20    74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20  | ..........(setq.tracking-marker. | 
| 25660 |  28 73 65 74 2d 6d 61 72 6b 65 72 20 28 6d 61 6b    65 2d 6d 61 72 6b 65 72 29 20 28 70 6f 69 6e 74  | (set-marker.(make-marker).(point | 
| 25680 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 65 74 2d 6d 61 72 6b 65 72 2d 69 6e 73  | )))..............(set-marker-ins | 
| 256a0 |  65 72 74 69 6f 6e 2d 74 79 70 65 20 74 72 61 63    6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 29 0a 20  | ertion-type.tracking-marker.t).. | 
| 256c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69    73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61  | ............(plist-put.info.:tra | 
| 256e0 |  63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61    63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20  | cking-marker.tracking-marker)).. | 
| 25700 |  20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d    63 68 61 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61  | ..........(goto-char.tracking-ma | 
| 25720 |  72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20    20 28 75 6e 6c 65 73 73 20 72 61 77 0a 20 20 20  | rker)............(unless.raw.... | 
| 25740 |  20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20    74 72 61 6e 73 66 6f 72 6d 65 72 0a 20 20 20 20  | ..........(when.transformer..... | 
| 25760 |  20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71    20 72 65 73 70 6f 6e 73 65 20 28 66 75 6e 63 61  | ...........(setq.response.(funca | 
| 25780 |  6c 6c 20 74 72 61 6e 73 66 6f 72 6d 65 72 20 72    65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20  | ll.transformer.response)))...... | 
| 257a0 |  20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78    74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20  | ........(add-text-properties.... | 
| 257c0 |  20 20 20 20 20 20 20 20 20 20 20 30 20 28 6c 65    6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 20 27  | ...........0.(length.response).' | 
| 257e0 |  28 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20    66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70  | (gptel.response.front-sticky.(gp | 
| 25800 |  74 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 72 65 73 70 6f 6e 73 65 29 29 0a 20  | tel))...............response)).. | 
| 25820 |  20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 72 75    6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70  | ..........;;.(run-hooks.'gptel-p | 
| 25840 |  72 65 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 29 0a    20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65  | re-stream-hook)............(inse | 
| 25860 |  72 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20    20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f  | rt.response)............(run-hoo | 
| 25880 |  6b 73 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 73    74 72 65 61 6d 2d 68 6f 6f 6b 29 29 29 29 29 0a  | ks.'gptel-post-stream-hook))))). | 
| 258a0 |  20 20 20 20 28 60 28 72 65 61 73 6f 6e 69 6e 67    20 2e 20 2c 74 65 78 74 29 0a 20 20 20 20 20 28  | ....(`(reasoning...,text)......( | 
| 258c0 |  67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 72    65 61 73 6f 6e 69 6e 67 2d 73 74 72 65 61 6d 20  | gptel--display-reasoning-stream. | 
| 258e0 |  74 65 78 74 20 69 6e 66 6f 29 29 0a 20 20 20 20    28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c  | text.info)).....(`(tool-call..., | 
| 25900 |  74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 20    20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79  | tool-calls)......(gptel--display | 
| 25920 |  2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f 6f 6c    2d 63 61 6c 6c 73 20 69 6e 66 6f 29 29 0a 20 20  | -tool-calls.tool-calls.info))... | 
| 25940 |  20 20 28 60 28 74 6f 6f 6c 2d 72 65 73 75 6c 74    20 2e 20 2c 74 6f 6f 6c 2d 72 65 73 75 6c 74 73  | ..(`(tool-result...,tool-results | 
| 25960 |  29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 64    69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 72 65 73 75  | )......(gptel--display-tool-resu | 
| 25980 |  6c 74 73 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 73    20 69 6e 66 6f 29 29 29 29 0a 0a 28 64 65 66 75  | lts.tool-results.info))))..(defu | 
| 259a0 |  6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74    72 65 61 6d 2d 66 69 6c 74 65 72 20 28 70 72 6f  | n.gptel-curl--stream-filter.(pro | 
| 259c0 |  63 65 73 73 20 6f 75 74 70 75 74 29 0a 20 20 28    6c 65 74 2a 20 28 28 66 73 6d 20 28 63 61 72 20  | cess.output)...(let*.((fsm.(car. | 
| 259e0 |  28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65    73 73 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73  | (alist-get.process.gptel--reques | 
| 25a00 |  74 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 20    20 20 20 20 28 70 72 6f 63 2d 69 6e 66 6f 20 28  | t-alist)))..........(proc-info.( | 
| 25a20 |  67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66    73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 28 63  | gptel-fsm-info.fsm))..........(c | 
| 25a40 |  61 6c 6c 62 61 63 6b 20 28 6f 72 20 28 70 6c 69    73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f  | allback.(or.(plist-get.proc-info | 
| 25a60 |  20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .:callback)..................... | 
| 25a80 |  20 20 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d    2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72  | ...#'gptel-curl--stream-insert-r | 
| 25aa0 |  65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 28    77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66  | esponse))).....(with-current-buf | 
| 25ac0 |  66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66    66 65 72 20 70 72 6f 63 65 73 73 29 0a 20 20 20  | fer.(process-buffer.process).... | 
| 25ae0 |  20 20 20 3b 3b 20 49 6e 73 65 72 74 20 6f 75 74    70 75 74 0a 20 20 20 20 20 20 28 73 61 76 65 2d  | ...;;.Insert.output.......(save- | 
| 25b00 |  65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20    20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 72  | excursion.........(goto-char.(pr | 
| 25b20 |  6f 63 65 73 73 2d 6d 61 72 6b 20 70 72 6f 63 65    73 73 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e  | ocess-mark.process)).........(in | 
| 25b40 |  73 65 72 74 20 6f 75 74 70 75 74 29 0a 20 20 20    20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72  | sert.output).........(set-marker | 
| 25b60 |  20 28 70 72 6f 63 65 73 73 2d 6d 61 72 6b 20 70    72 6f 63 65 73 73 29 20 28 70 6f 69 6e 74 29 29  | .(process-mark.process).(point)) | 
| 25b80 |  29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3b    3b 20 46 69 6e 64 20 48 54 54 50 20 73 74 61 74  | )..............;;.Find.HTTP.stat | 
| 25ba0 |  75 73 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73    20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63  | us.......(unless.(plist-get.proc | 
| 25bc0 |  2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74    75 73 29 0a 20 20 20 20 20 20 20 20 28 73 61 76  | -info.:http-status).........(sav | 
| 25be0 |  65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20    20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72  | e-excursion...........(goto-char | 
| 25c00 |  20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20    20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65  | .(point-min))...........(when-le | 
| 25c20 |  74 2a 20 28 28 28 6e 6f 74 20 28 3d 20 28 6c 69    6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29  | t*.(((not.(=.(line-end-position) | 
| 25c40 |  20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(point-max))))................. | 
| 25c60 |  20 20 20 20 20 20 28 68 74 74 70 2d 6d 73 67 20    28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e  | ......(http-msg.(buffer-substrin | 
| 25c80 |  67 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e    67 2d 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20  | g.(line-beginning-position)..... | 
| 25ca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 25cc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c    69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e  | ..............(line-end-position | 
| 25ce0 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d  | ))).......................(http- | 
| 25d00 |  73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73  | status........................(s | 
| 25d20 |  61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ave-match-data.................. | 
| 25d40 |  20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73 74    72 69 6e 67 2d 6d 61 74 63 68 20 22 48 54 54 50  | ........(and.(string-match."HTTP | 
| 25d60 |  2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c 28 5b 30 2d    39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d 6d 73 67  | /[.0-9]+.+\\([0-9]+\\)".http-msg | 
| 25d80 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )............................... | 
| 25da0 |  28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20    68 74 74 70 2d 6d 73 67 29 29 29 29 29 0a 20 20  | (match-string.1.http-msg)))))... | 
| 25dc0 |  20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74    2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a  | ..........(plist-put.proc-info.: | 
| 25de0 |  68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 70    2d 73 74 61 74 75 73 29 0a 20 20 20 20 20 20 20  | http-status.http-status)........ | 
| 25e00 |  20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20    70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74 61 74 75  | .....(plist-put.proc-info.:statu | 
| 25e20 |  73 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 68    74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20  | s.(string-trim.http-msg))....... | 
| 25e40 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66 73    6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d  | ......(gptel--fsm-transition.fsm | 
| 25e60 |  29 29 29 29 0a 20 20 20 20 20 20 0a 20 20 20 20    20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 68  | ))))..............(when-let*.((h | 
| 25e80 |  74 74 70 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67    65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74  | ttp-msg.(plist-get.proc-info.:st | 
| 25ea0 |  61 74 75 73 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 73  | atus))...................(http-s | 
| 25ec0 |  74 61 74 75 73 20 28 70 6c 69 73 74 2d 67 65 74    20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70  | tatus.(plist-get.proc-info.:http | 
| 25ee0 |  2d 73 74 61 74 75 73 29 29 29 0a 20 20 20 20 20    20 20 20 3b 3b 20 46 69 6e 64 20 64 61 74 61 20  | -status))).........;;.Find.data. | 
| 25f00 |  63 68 75 6e 6b 28 73 29 20 61 6e 64 20 72 75 6e    20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20  | chunk(s).and.run.callback....... | 
| 25f20 |  20 20 3b 3b 20 46 49 58 4d 45 20 48 61 6e 64 6c    65 20 74 68 65 20 63 61 73 65 20 77 68 65 72 65  | ..;;.FIXME.Handle.the.case.where | 
| 25f40 |  20 48 54 54 50 20 31 30 30 20 69 73 20 66 6f 6c    6c 6f 77 65 64 20 62 79 20 48 54 54 50 20 28 6e  | .HTTP.100.is.followed.by.HTTP.(n | 
| 25f60 |  6f 74 20 32 30 30 29 20 42 55 47 20 23 31 39 34    0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28  | ot.200).BUG.#194.........(when.( | 
| 25f80 |  6d 65 6d 62 65 72 20 68 74 74 70 2d 73 74 61 74    75 73 20 27 28 22 32 30 30 22 20 22 31 30 30 22  | member.http-status.'("200"."100" | 
| 25fa0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65    74 20 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70  | ))...........(let.((response.(gp | 
| 25fc0 |  74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d    73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20  | tel-curl--parse-stream.......... | 
| 25fe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f  | ..................(plist-get.pro | 
| 26000 |  63 2d 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29    20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20 20  | c-info.:backend).proc-info)).... | 
| 26020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65    61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 28 70  | .............(reasoning-block.(p | 
| 26040 |  6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e    66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c  | list-get.proc-info.:reasoning-bl | 
| 26060 |  6f 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 44 65 70 65 6e 64 69 6e 67 20  | ock))).............;;.Depending. | 
| 26080 |  6f 6e 20 74 68 65 20 41 50 49 2c 20 74 68 65 72    65 20 61 72 65 20 74 77 6f 20 6d 6f 64 65 73 20  | on.the.API,.there.are.two.modes. | 
| 260a0 |  74 68 61 74 20 72 65 61 73 6f 6e 69 6e 67 20 6f    72 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b  | that.reasoning.or.............;; | 
| 260c0 |  20 63 68 61 69 6e 2d 6f 66 2d 74 68 6f 75 67 68    74 20 63 6f 6e 74 65 6e 74 20 61 70 70 65 61 72  | .chain-of-thought.content.appear | 
| 260e0 |  73 3a 20 61 73 20 70 61 72 74 20 6f 66 20 74 68    65 20 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 0a  | s:.as.part.of.the.main.response. | 
| 26100 |  20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 62    75 74 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79  | ............;;.but.surrounded.by | 
| 26120 |  20 3c 74 68 69 6e 6b 3e 2e 2e 2e 3c 2f 74 68 69    6e 6b 3e 20 74 61 67 73 2c 20 6f 72 20 61 73 20  | .<think>...</think>.tags,.or.as. | 
| 26140 |  61 20 73 65 70 61 72 61 74 65 0a 20 20 20 20 20    20 20 20 20 20 20 20 3b 3b 20 4a 53 4f 4e 20 66  | a.separate.............;;.JSON.f | 
| 26160 |  69 65 6c 64 20 69 6e 20 74 68 65 20 72 65 73 70    6f 6e 73 65 20 73 74 72 65 61 6d 2e 0a 20 20 20  | ield.in.the.response.stream..... | 
| 26180 |  20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20    20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 73 65  | .........;;.............;;.These | 
| 261a0 |  20 63 61 73 65 73 20 61 72 65 20 68 61 6e 64 6c    65 64 20 75 73 69 6e 67 20 74 77 6f 20 50 52 4f  | .cases.are.handled.using.two.PRO | 
| 261c0 |  43 2d 49 4e 46 4f 20 6b 65 79 73 3a 0a 20 20 20    20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20  | C-INFO.keys:.............;;..... | 
| 261e0 |  20 20 20 20 20 20 20 20 3b 3b 20 3a 72 65 61 73    6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 69 73 20 6e  | ........;;.:reasoning-block.is.n | 
| 26200 |  69 6c 20 62 65 66 6f 72 65 20 63 68 65 63 6b 69    6e 67 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67  | il.before.checking.for.reasoning | 
| 26220 |  2c 20 27 69 6e 20 77 68 65 6e 0a 20 20 20 20 20    20 20 20 20 20 20 20 3b 3b 20 69 6e 20 61 20 72  | ,.'in.when.............;;.in.a.r | 
| 26240 |  65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 2c 20    74 20 77 68 65 6e 20 77 65 20 72 65 61 63 68 20  | easoning.block,.t.when.we.reach. | 
| 26260 |  74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62    6c 6f 63 6b 2c 20 61 6e 64 0a 20 20 20 20 20 20  | the.end.of.the.block,.and....... | 
| 26280 |  20 20 20 20 20 20 3b 3b 20 27 64 6f 6e 65 20 61    66 74 65 72 77 61 72 64 73 20 6f 72 20 69 66 20  | ......;;.'done.afterwards.or.if. | 
| 262a0 |  6e 6f 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f    63 6b 20 69 73 20 66 6f 75 6e 64 2e 20 20 54 68  | no.reasoning.block.is.found...Th | 
| 262c0 |  69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b    3b 20 61 70 70 6c 69 65 73 20 74 6f 20 62 6f 74  | is.............;;.applies.to.bot | 
| 262e0 |  68 20 74 68 65 20 6d 6f 64 65 73 20 61 62 6f 76    65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b  | h.the.modes.above..............; | 
| 26300 |  3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 3a 72 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74  | ;.............;;.:reasoning.cont | 
| 26320 |  61 69 6e 73 20 74 68 65 20 72 65 61 73 6f 6e 69    6e 67 20 74 65 78 74 20 70 61 72 73 65 64 20 66  | ains.the.reasoning.text.parsed.f | 
| 26340 |  72 6f 6d 20 74 68 65 20 73 65 70 61 72 61 74 65    0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | rom.the.separate.............;;. | 
| 26360 |  4a 53 4f 4e 20 66 69 65 6c 64 2e 0a 20 20 20 20    20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20  | JSON.field..............;;...... | 
| 26380 |  20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20    57 65 20 61 73 73 75 6d 65 20 68 65 72 65 20 74  | .......;;.NOTE:.We.assume.here.t | 
| 263a0 |  68 61 74 20 74 68 65 20 72 65 61 73 6f 6e 69 6e    67 20 62 6c 6f 63 6b 20 61 6c 77 61 79 73 0a 20  | hat.the.reasoning.block.always.. | 
| 263c0 |  20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 70 72    65 63 65 64 65 73 20 74 68 65 20 6d 61 69 6e 20  | ...........;;.precedes.the.main. | 
| 263e0 |  72 65 73 70 6f 6e 73 65 20 62 6c 6f 63 6b 2e 0a    20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c  | response.block..............(unl | 
| 26400 |  65 73 73 20 28 65 71 20 72 65 61 73 6f 6e 69 6e    67 2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 0a 20  | ess.(eq.reasoning-block.'done).. | 
| 26420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65    74 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 70  | .............(let.((reasoning.(p | 
| 26440 |  6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e    66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 29 29 29  | list-get.proc-info.:reasoning))) | 
| 26460 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20  | .................(cond.......... | 
| 26480 |  20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67    70 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20  | ........((stringp.reasoning).... | 
| 264a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b    3b 20 4f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  | ...............;;.Obtained.from. | 
| 264c0 |  73 65 70 61 72 61 74 65 20 4a 53 4f 4e 20 66 69    65 6c 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 0a  | separate.JSON.field.in.response. | 
| 264e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62  | ..................(funcall.callb | 
| 26500 |  61 63 6b 20 28 63 6f 6e 73 20 27 72 65 61 73 6f    6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29 20  | ack.(cons.'reasoning.reasoning). | 
| 26520 |  70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e  | proc-info)...................(un | 
| 26540 |  6c 65 73 73 20 72 65 61 73 6f 6e 69 6e 67 2d 62    6c 6f 63 6b 20 3b 52 65 63 6f 72 64 20 74 68 61  | less.reasoning-block.;Record.tha | 
| 26560 |  74 20 77 65 27 72 65 20 69 6e 20 61 20 72 65 61    73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20 28 23 37  | t.we're.in.a.reasoning.block.(#7 | 
| 26580 |  30 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70  | 09).....................(plist-p | 
| 265a0 |  75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 65    61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 69  | ut.proc-info.:reasoning-block.'i | 
| 265c0 |  6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74  | n))...................(plist-put | 
| 265e0 |  20 70 72 6f 63 2d 69 6e 66 6f 20 3a 72 65 61 73    6f 6e 69 6e 67 20 6e 69 6c 29 29 20 3b 52 65 73  | .proc-info.:reasoning.nil)).;Res | 
| 26600 |  65 74 20 66 6f 72 20 6e 65 78 74 20 70 61 72 73    69 6e 67 20 72 6f 75 6e 64 0a 20 20 20 20 20 20  | et.for.next.parsing.round....... | 
| 26620 |  20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64    20 28 6e 75 6c 6c 20 72 65 61 73 6f 6e 69 6e 67  | ...........((and.(null.reasoning | 
| 26640 |  2d 62 6c 6f 63 6b 29 20 28 6c 65 6e 67 74 68 3e    20 72 65 73 70 6f 6e 73 65 20 30 29 29 0a 20 20  | -block).(length>.response.0))... | 
| 26660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63  | ................(if.(string-matc | 
| 26680 |  68 2d 70 20 22 5e 20 2a 3c 74 68 69 6e 6b 3e 22    20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20  | h-p."^.*<think>".response)...... | 
| 266a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3b 3b 20 4f 62 74 61 69 6e 65 64 20 66 72 6f  | .................;;.Obtained.fro | 
| 266c0 |  6d 20 6d 61 69 6e 20 72 65 73 70 6f 6e 73 65 20    73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20  | m.main.response.stream.......... | 
| 266e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72    6f 67 6e 20 28 73 65 74 71 20 72 65 73 70 6f 6e  | .............(progn.(setq.respon | 
| 26700 |  73 65 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e    69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29 0a 20  | se.(cons.'reasoning.response)).. | 
| 26720 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69  | ............................(pli | 
| 26740 |  73 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f    20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63  | st-put.proc-info.:reasoning-bloc | 
| 26760 |  6b 20 27 69 6e 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69  | k.'in)).....................(pli | 
| 26780 |  73 74 2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f    20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63  | st-put.proc-info.:reasoning-bloc | 
| 267a0 |  6b 20 27 64 6f 6e 65 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 65  | k.'done)))..................((le | 
| 267c0 |  6e 67 74 68 3e 20 72 65 73 70 6f 6e 73 65 20 30    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ngth>.response.0)............... | 
| 267e0 |  20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 69    64 78 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68  | ....(if-let*.((idx.(string-match | 
| 26800 |  2d 70 20 22 3c 2f 74 68 69 6e 6b 3e 22 20 72 65    73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20  | -p."</think>".response)))....... | 
| 26820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20  | ................(progn.......... | 
| 26840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b  | ...............(funcall.callback | 
| 26860 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 26880 |  20 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69    6e 67 20 3b 6c 61 73 74 20 72 65 61 73 6f 6e 69  | ..(cons.'reasoning.;last.reasoni | 
| 268a0 |  6e 67 20 63 68 75 6e 6b 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ng.chunk........................ | 
| 268c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 6c 65 66  | ................(string-trim-lef | 
| 268e0 |  74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t............................... | 
| 26900 |  20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74    72 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 6e 69  | ..........(substring.response.ni | 
| 26920 |  6c 20 28 2b 20 69 64 78 20 38 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l.(+.idx.8)))).................. | 
| 26940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 20  | ................proc-info)...... | 
| 26960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 53 69 67 6e 61 6c 20 65 6e 64  | ...................;;.Signal.end | 
| 26980 |  20 6f 66 20 72 65 61 73 6f 6e 69 6e 67 20 73 74    72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20  | .of.reasoning.stream............ | 
| 269a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75    6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 27  | .............(funcall.callback.' | 
| 269c0 |  28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 29 20    70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 20 20 20  | (reasoning...t).proc-info)...... | 
| 269e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73  | ...................(setq.respons | 
| 26a00 |  65 20 28 73 75 62 73 74 72 69 6e 67 20 72 65 73    70 6f 6e 73 65 20 28 2b 20 69 64 78 20 38 29 29  | e.(substring.response.(+.idx.8)) | 
| 26a20 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | ).........................(plist | 
| 26a40 |  2d 70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a    72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20  | -put.proc-info.:reasoning-block. | 
| 26a60 |  27 64 6f 6e 65 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74  | 'done)).....................(set | 
| 26a80 |  71 20 72 65 73 70 6f 6e 73 65 20 28 63 6f 6e 73    20 27 72 65 61 73 6f 6e 69 6e 67 20 72 65 73 70  | q.response.(cons.'reasoning.resp | 
| 26aa0 |  6f 6e 73 65 29 29 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20  | onse))))).................(when. | 
| 26ac0 |  28 65 71 20 72 65 61 73 6f 6e 69 6e 67 2d 62 6c    6f 63 6b 20 74 29 20 3b 45 6e 64 20 6f 66 20 72  | (eq.reasoning-block.t).;End.of.r | 
| 26ae0 |  65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | easoning.block.................. | 
| 26b00 |  20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61    63 6b 20 27 28 72 65 61 73 6f 6e 69 6e 67 20 2e  | .(funcall.callback.'(reasoning.. | 
| 26b20 |  20 74 29 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .t).proc-info).................. | 
| 26b40 |  20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63    2d 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67  | .(plist-put.proc-info.:reasoning | 
| 26b60 |  2d 62 6c 6f 63 6b 20 27 64 6f 6e 65 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e  | -block.'done)))).............(un | 
| 26b80 |  6c 65 73 73 20 28 65 71 75 61 6c 20 72 65 73 70    6f 6e 73 65 20 22 22 29 20 3b 52 65 73 70 6f 6e  | less.(equal.response."").;Respon | 
| 26ba0 |  73 65 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61  | se.callback...............(funca | 
| 26bc0 |  6c 6c 20 63 61 6c 6c 62 61 63 6b 20 72 65 73 70    6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29  | ll.callback.response.proc-info)) | 
| 26be0 |  29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67    65 6e 65 72 69 63 20 67 70 74 65 6c 2d 63 75 72  | ))))))..(cl-defgeneric.gptel-cur | 
| 26c00 |  6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 20    28 62 61 63 6b 65 6e 64 20 70 72 6f 63 2d 69 6e  | l--parse-stream.(backend.proc-in | 
| 26c20 |  66 6f 29 0a 20 20 22 53 74 72 65 61 6d 20 70 61    72 73 65 72 20 66 6f 72 20 67 70 74 65 6c 2d 63  | fo)..."Stream.parser.for.gptel-c | 
| 26c40 |  75 72 6c 2e 0a 0a 49 6d 70 6c 65 6d 65 6e 74 61    74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 66 75  | url...Implementations.of.this.fu | 
| 26c60 |  6e 63 74 69 6f 6e 20 72 75 6e 20 61 73 20 70 61    72 74 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73  | nction.run.as.part.of.the.proces | 
| 26c80 |  73 0a 66 69 6c 74 65 72 20 66 6f 72 20 74 68 65    20 61 63 74 69 76 65 20 71 75 65 72 79 2c 20 61  | s.filter.for.the.active.query,.a | 
| 26ca0 |  6e 64 20 72 65 74 75 72 6e 20 70 61 72 74 69 61    6c 20 72 65 73 70 6f 6e 73 65 73 20 66 72 6f 6d  | nd.return.partial.responses.from | 
| 26cc0 |  0a 74 68 65 20 4c 4c 4d 2e 0a 0a 42 41 43 4b 45    4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61  | .the.LLM...BACKEND.is.the.LLM.ba | 
| 26ce0 |  63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 50    52 4f 43 2d 49 4e 46 4f 20 69 73 20 61 20 70 6c  | ckend.in.use...PROC-INFO.is.a.pl | 
| 26d00 |  69 73 74 20 77 69 74 68 20 70 72 6f 63 65 73 73    20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64  | ist.with.process.information.and | 
| 26d20 |  20 6f 74 68 65 72 20 63 6f 6e 74 65 78 74 2e 0a    53 65 65 20 60 67 70 74 65 6c 2d 63 75 72 6c 2d  | .other.context..See.`gptel-curl- | 
| 26d40 |  2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66    6f 72 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 2e  | -get-response'.for.its.contents. | 
| 26d60 |  22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c    2d 63 75 72 6c 2d 2d 73 65 6e 74 69 6e 65 6c 20  | ")..(defun.gptel-curl--sentinel. | 
| 26d80 |  28 70 72 6f 63 65 73 73 20 5f 73 74 61 74 75 73    29 0a 20 20 22 50 72 6f 63 65 73 73 20 73 65 6e  | (process._status)..."Process.sen | 
| 26da0 |  74 69 6e 65 6c 20 66 6f 72 20 67 70 74 65 6c 20    63 75 72 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a  | tinel.for.gptel.curl.requests... | 
| 26dc0 |  50 52 4f 43 45 53 53 20 61 6e 64 20 5f 53 54 41    54 55 53 20 61 72 65 20 70 72 6f 63 65 73 73 20  | PROCESS.and._STATUS.are.process. | 
| 26de0 |  70 61 72 61 6d 65 74 65 72 73 2e 22 0a 20 20 28    6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28  | parameters."...(let.((proc-buf.( | 
| 26e00 |  70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70    72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 28 77  | process-buffer.process))).....(w | 
| 26e20 |  68 65 6e 2d 6c 65 74 2a 20 28 28 28 65 71 20 28    70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 70  | hen-let*.(((eq.(process-status.p | 
| 26e40 |  72 6f 63 65 73 73 29 20 27 65 78 69 74 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rocess).'exit))................. | 
| 26e60 |  28 66 73 6d 20 28 63 61 72 20 28 61 6c 69 73 74    2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74  | (fsm.(car.(alist-get.process.gpt | 
| 26e80 |  65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73    74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | el--request-alist)))............ | 
| 26ea0 |  20 20 20 20 20 28 70 72 6f 63 2d 69 6e 66 6f 20    28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20  | .....(proc-info.(gptel-fsm-info. | 
| 26ec0 |  66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 72 6f 63 2d 63 61 6c 6c  | fsm)).................(proc-call | 
| 26ee0 |  62 61 63 6b 20 28 70 6c 69 73 74 2d 67 65 74 20    70 72 6f 63 2d 69 6e 66 6f 20 3a 63 61 6c 6c 62  | back.(plist-get.proc-info.:callb | 
| 26f00 |  61 63 6b 29 29 29 0a 20 20 20 20 20 20 28 77 68    65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76  | ack))).......(when.gptel-log-lev | 
| 26f20 |  65 6c 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d    6c 6f 67 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f  | el.(gptel-curl--log-response.pro | 
| 26f40 |  63 2d 62 75 66 20 70 72 6f 63 2d 69 6e 66 6f 29    29 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20  | c-buf.proc-info)).;logging...... | 
| 26f60 |  20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28    2c 72 65 73 70 6f 6e 73 65 20 2c 68 74 74 70 2d  | .(pcase-let.((`(,response.,http- | 
| 26f80 |  73 74 61 74 75 73 20 2c 68 74 74 70 2d 6d 73 67    20 2c 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20  | status.,http-msg.,error)........ | 
| 26fa0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74    68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72  | ............(with-current-buffer | 
| 26fc0 |  20 70 72 6f 63 2d 62 75 66 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | .proc-buf......................( | 
| 26fe0 |  67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73    65 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d  | gptel-curl--parse-response.proc- | 
| 27000 |  69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 20 20    20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63  | info)))).........(plist-put.proc | 
| 27020 |  2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74    75 73 20 68 74 74 70 2d 73 74 61 74 75 73 29 0a  | -info.:http-status.http-status). | 
| 27040 |  20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70    75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74  | ........(plist-put.proc-info.:st | 
| 27060 |  61 74 75 73 20 68 74 74 70 2d 6d 73 67 29 0a 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 66  | atus.http-msg).........(gptel--f | 
| 27080 |  73 6d 2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73    6d 29 20 20 20 20 20 3b 57 41 49 54 20 2d 3e 20  | sm-transition.fsm).....;WAIT.->. | 
| 270a0 |  54 59 50 45 0a 20 20 20 20 20 20 20 20 28 77 68    65 6e 20 65 72 72 6f 72 20 28 70 6c 69 73 74 2d  | TYPE.........(when.error.(plist- | 
| 270c0 |  70 75 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 65    72 72 6f 72 20 65 72 72 6f 72 29 29 0a 20 20 20  | put.proc-info.:error.error)).... | 
| 270e0 |  20 20 20 20 20 28 77 68 65 6e 20 72 65 73 70 6f    6e 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....(when.response............. | 
| 27100 |  20 20 20 20 20 3b 4c 6f 6f 6b 20 66 6f 72 20 61    20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b  | .....;Look.for.a.reasoning.block | 
| 27120 |  0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28    73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22  | ...........(if.(string-match-p." | 
| 27140 |  5e 20 2a 3c 74 68 69 6e 6b 3e 5c 6e 22 20 72 65    73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20  | ^.*<think>\n".response)......... | 
| 27160 |  20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a    20 28 28 69 64 78 20 28 73 74 72 69 6e 67 2d 73  | ......(when-let*.((idx.(string-s | 
| 27180 |  65 61 72 63 68 20 22 3c 2f 74 68 69 6e 6b 3e 5c    6e 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20  | earch."</think>\n".response))).. | 
| 271a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    77 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72 72  | ...............(with-demoted-err | 
| 271c0 |  6f 72 73 20 22 67 70 74 65 6c 20 63 61 6c 6c 62    61 63 6b 20 65 72 72 6f 72 3a 20 25 53 22 0a 20  | ors."gptel.callback.error:.%S".. | 
| 271e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 2d 63  | .................(funcall.proc-c | 
| 27200 |  61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | allback......................... | 
| 27220 |  20 20 20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e    69 6e 67 20 28 73 75 62 73 74 72 69 6e 67 20 72  | ...(cons.'reasoning.(substring.r | 
| 27240 |  65 73 70 6f 6e 73 65 20 6e 69 6c 20 28 2b 20 69    64 78 20 38 29 29 29 0a 20 20 20 20 20 20 20 20  | esponse.nil.(+.idx.8)))......... | 
| 27260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20  | ...................proc-info)).. | 
| 27280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    73 65 74 71 20 72 65 73 70 6f 6e 73 65 0a 20 20  | ...............(setq.response... | 
| 272a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d  | ....................(string-trim | 
| 272c0 |  2d 6c 65 66 74 20 28 73 75 62 73 74 72 69 6e 67    20 72 65 73 70 6f 6e 73 65 20 28 2b 20 69 64 78  | -left.(substring.response.(+.idx | 
| 272e0 |  20 38 29 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28  | .8))))).............(when-let*.( | 
| 27300 |  28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73    74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20  | (reasoning.(plist-get.proc-info. | 
| 27320 |  3a 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :reasoning)).................... | 
| 27340 |  20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 72    65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20  | .....((stringp.reasoning)))..... | 
| 27360 |  20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61    6c 6c 20 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b  | ..........(funcall.proc-callback | 
| 27380 |  20 28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e    67 20 72 65 61 73 6f 6e 69 6e 67 29 20 70 72 6f  | .(cons.'reasoning.reasoning).pro | 
| 273a0 |  63 2d 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20    20 20 20 28 77 68 65 6e 20 28 6f 72 20 72 65 73  | c-info)))).........(when.(or.res | 
| 273c0 |  70 6f 6e 73 65 20 28 6e 6f 74 20 28 6d 65 6d 62    65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27  | ponse.(not.(member.http-status.' | 
| 273e0 |  28 22 32 30 30 22 20 22 31 30 30 22 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68  | ("200"."100"))))...........(with | 
| 27400 |  2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73 20    22 67 70 74 65 6c 20 63 61 6c 6c 62 61 63 6b 20  | -demoted-errors."gptel.callback. | 
| 27420 |  65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20  | error:.%S".............(funcall. | 
| 27440 |  70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 20 72 65    73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f  | proc-callback.response.proc-info | 
| 27460 |  29 29 29 29 0a 20 20 20 20 20 20 28 67 70 74 65    6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74 69 6f  | )))).......(gptel--fsm-transitio | 
| 27480 |  6e 20 66 73 6d 29 29 20 20 20 20 20 20 3b 54 59    50 45 20 2d 3e 20 6e 65 78 74 0a 20 20 20 20 28  | n.fsm))......;TYPE.->.next.....( | 
| 274a0 |  73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20    70 72 6f 63 65 73 73 20 67 70 74 65 6c 2d 2d 72  | setf.(alist-get.process.gptel--r | 
| 274c0 |  65 71 75 65 73 74 2d 61 6c 69 73 74 20 6e 69 6c    20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20  | equest-alist.nil.'remove).nil).. | 
| 274e0 |  20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20    70 72 6f 63 2d 62 75 66 29 29 29 0a 0a 28 64 65  | ...(kill-buffer.proc-buf)))..(de | 
| 27500 |  66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d    70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28  | fun.gptel-curl--parse-response.( | 
| 27520 |  70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 50 61    72 73 65 20 74 68 65 20 62 75 66 66 65 72 20 42  | proc-info)..."Parse.the.buffer.B | 
| 27540 |  55 46 20 77 69 74 68 20 63 75 72 6c 27 73 20 72    65 73 70 6f 6e 73 65 2e 0a 0a 50 52 4f 43 2d 49  | UF.with.curl's.response...PROC-I | 
| 27560 |  4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74 20 77    69 74 68 20 63 6f 6e 74 65 78 74 75 61 6c 20 69  | NFO.is.a.plist.with.contextual.i | 
| 27580 |  6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 28    6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 6c 69  | nformation."...(let.((token.(pli | 
| 275a0 |  73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f    20 3a 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 28  | st-get.proc-info.:token))).....( | 
| 275c0 |  67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74    2d 6d 61 78 29 29 0a 20 20 20 20 28 73 65 61 72  | goto-char.(point-max)).....(sear | 
| 275e0 |  63 68 2d 62 61 63 6b 77 61 72 64 20 74 6f 6b 65    6e 29 0a 20 20 20 20 28 62 61 63 6b 77 61 72 64  | ch-backward.token).....(backward | 
| 27600 |  2d 63 68 61 72 29 0a 20 20 20 20 28 70 63 61 73    65 2d 6c 65 74 2a 20 28 28 60 28 2c 5f 20 2e 20  | -char).....(pcase-let*.((`(,_... | 
| 27620 |  2c 68 65 61 64 65 72 2d 73 69 7a 65 29 20 28 72    65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66  | ,header-size).(read.(current-buf | 
| 27640 |  66 65 72 29 29 29 29 0a 20 20 20 20 20 20 28 67    6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d  | fer)))).......(goto-char.(point- | 
| 27660 |  6d 69 6e 29 29 0a 0a 20 20 20 20 20 20 28 69 66    2d 6c 65 74 2a 20 28 28 68 74 74 70 2d 6d 73 67  | min))........(if-let*.((http-msg | 
| 27680 |  20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(string-trim................... | 
| 276a0 |  20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72    2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69 6e 65  | .........(buffer-substring.(line | 
| 276c0 |  2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74    69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20  | -beginning-position)............ | 
| 276e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 27700 |  20 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69    74 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 20  | ..(line-end-position))))........ | 
| 27720 |  20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 73    74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20  | .........(http-status........... | 
| 27740 |  20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74    63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20  | .......(save-match-data......... | 
| 27760 |  20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20    28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 48  | ...........(and.(string-match."H | 
| 27780 |  54 54 50 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c 28    5b 30 2d 39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d  | TTP/[.0-9]+.+\\([0-9]+\\)".http- | 
| 277a0 |  6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61  | msg).........................(ma | 
| 277c0 |  74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 74 74    70 2d 6d 73 67 29 29 29 29 0a 20 20 20 20 20 20  | tch-string.1.http-msg))))....... | 
| 277e0 |  20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f    6e 73 65 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f  | ..........(response.(progn.(goto | 
| 27800 |  2d 63 68 61 72 20 68 65 61 64 65 72 2d 73 69 7a    65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | -char.header-size).............. | 
| 27820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63  | ....................(condition-c | 
| 27840 |  61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ase.nil......................... | 
| 27860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 0a  | .............(gptel--json-read). | 
| 27880 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 278a0 |  20 20 20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d    72 65 61 64 2d 65 72 72 6f 72 29 29 29 29 29 0a  | ...(error.'json-read-error))))). | 
| 278c0 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 49  | ..........(cond............;;.FI | 
| 278e0 |  58 4d 45 20 48 61 6e 64 6c 65 20 74 68 65 20 63    61 73 65 20 77 68 65 72 65 20 48 54 54 50 20 31  | XME.Handle.the.case.where.HTTP.1 | 
| 27900 |  30 30 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62    79 20 48 54 54 50 20 28 6e 6f 74 20 32 30 30 29  | 00.is.followed.by.HTTP.(not.200) | 
| 27920 |  20 42 55 47 20 23 31 39 34 0a 20 20 20 20 20 20    20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 68 74  | .BUG.#194............((member.ht | 
| 27940 |  74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30    22 20 22 31 30 30 22 29 29 0a 20 20 20 20 20 20  | tp-status.'("200"."100"))....... | 
| 27960 |  20 20 20 20 20 20 28 6c 69 73 74 20 28 61 6e 64    2d 6c 65 74 2a 20 28 28 72 65 73 70 20 28 67 70  | ......(list.(and-let*.((resp.(gp | 
| 27980 |  74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f    6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  | tel--parse-response............. | 
| 279a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67  | ........................(plist-g | 
| 279c0 |  65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 62 61    63 6b 65 6e 64 29 20 72 65 73 70 6f 6e 73 65 20  | et.proc-info.:backend).response. | 
| 279e0 |  70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | proc-info))..................... | 
| 27a00 |  20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28    73 74 72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 72  | .........((not.(string-blank-p.r | 
| 27a20 |  65 73 70 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72  | esp)))).....................(str | 
| 27a40 |  69 6e 67 2d 74 72 69 6d 20 72 65 73 70 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ing-trim.resp))................. | 
| 27a60 |  20 20 68 74 74 70 2d 73 74 61 74 75 73 20 68 74    74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20  | ..http-status.http-msg))........ | 
| 27a80 |  20 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 20    72 65 73 70 6f 6e 73 65 20 3a 65 72 72 6f 72 29  | ....((plist-get.response.:error) | 
| 27aa0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69    73 74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74  | .............(list.nil.http-stat | 
| 27ac0 |  75 73 20 68 74 74 70 2d 6d 73 67 20 28 70 6c 69    73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20  | us.http-msg.(plist-get.response. | 
| 27ae0 |  3a 65 72 72 6f 72 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 28 28 65 71 20 72 65 73 70 6f 6e  | :error)))............((eq.respon | 
| 27b00 |  73 65 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72    72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20  | se.'json-read-error)............ | 
| 27b20 |  20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d    73 74 61 74 75 73 20 28 63 6f 6e 63 61 74 20 22  | .(list.nil.http-status.(concat." | 
| 27b40 |  28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 4d    61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e  | (".http-msg.").Malformed.JSON.in | 
| 27b60 |  20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  | .response.")..................." | 
| 27b80 |  4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69    6e 20 72 65 73 70 6f 6e 73 65 22 29 29 0a 20 20  | Malformed.JSON.in.response"))... | 
| 27ba0 |  20 20 20 20 20 20 20 20 20 28 74 20 28 6c 69 73    74 20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75  | .........(t.(list.nil.http-statu | 
| 27bc0 |  73 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74    74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20  | s.(concat."(".http-msg.").Could. | 
| 27be0 |  6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72    65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20  | not.parse.HTTP.response.")...... | 
| 27c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22    43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20  | ..............."Could.not.parse. | 
| 27c20 |  48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29    29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74  | HTTP.response."))).........(list | 
| 27c40 |  20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73    20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74  | .nil.http-status.(concat."(".htt | 
| 27c60 |  70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e    6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65  | p-msg.").Could.not.parse.HTTP.re | 
| 27c80 |  73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e  | sponse.")..............."Could.n | 
| 27ca0 |  6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65    73 70 6f 6e 73 65 2e 22 29 29 29 29 29 0a 0a 28  | ot.parse.HTTP.response.")))))..( | 
| 27cc0 |  70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 63    75 72 6c 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 63  | provide.'gptel-curl).;;;.gptel-c | 
| 27ce0 |  75 72 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65    0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | url.el.ends.here................ | 
| 27d00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27d20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27e00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 67 68 2e 65 6c 00 00 00 00 00 00 00  | gptel-0.9.8.5/gptel-gh.el....... | 
| 27e20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27e40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27e60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 27e80 |  30 30 33 33 30 32 33 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 34 37 37 00 20 30 00 00 00  | 0033023.00000000000.013477..0... | 
| 27ea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27ec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27ee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27f00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 27f20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 27f40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27f60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27f80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27fa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27fc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27fe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 28000 |  3b 3b 3b 20 67 70 74 65 6c 2d 67 68 2e 65 6c 20    2d 2d 2d 20 20 47 69 74 68 75 62 20 43 6f 70 69  | ;;;.gptel-gh.el.---..Github.Copi | 
| 28020 |  6c 6f 74 20 41 49 20 73 75 70 70 70 6f 72 74 20    66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c  | lot.AI.suppport.for.gptel..-*-.l | 
| 28040 |  65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20    74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 20  | exical-binding:.t;.-*-..;;.This. | 
| 28060 |  70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20    73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61  | program.is.free.software;.you.ca | 
| 28080 |  6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69    74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a  | n.redistribute.it.and/or.modify. | 
| 280a0 |  3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20    74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55  | ;;.it.under.the.terms.of.the.GNU | 
| 280c0 |  20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20    4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69  | .General.Public.License.as.publi | 
| 280e0 |  73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46    72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75  | shed.by.;;.the.Free.Software.Fou | 
| 28100 |  6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20    76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65  | ndation,.either.version.3.of.the | 
| 28120 |  20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20    28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29  | .License,.or.;;.(at.your.option) | 
| 28140 |  20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69    6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f  | .any.later.version...;;.This.pro | 
| 28160 |  67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75    74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20  | gram.is.distributed.in.the.hope. | 
| 28180 |  74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20    75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57  | that.it.will.be.useful,.;;.but.W | 
| 281a0 |  49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41    4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65  | ITHOUT.ANY.WARRANTY;.without.eve | 
| 281c0 |  6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61    72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52  | n.the.implied.warranty.of.;;.MER | 
| 281e0 |  43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20    46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41  | CHANTABILITY.or.FITNESS.FOR.A.PA | 
| 28200 |  52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45    2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e  | RTICULAR.PURPOSE...See.the.;;.GN | 
| 28220 |  55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63    20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72  | U.General.Public.License.for.mor | 
| 28240 |  65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59    6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72  | e.details...;;.You.should.have.r | 
| 28260 |  65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f    66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61  | eceived.a.copy.of.the.GNU.Genera | 
| 28280 |  6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65    0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74  | l.Public.License.;;.along.with.t | 
| 282a0 |  68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66    20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73  | his.program...If.not,.see.<https | 
| 282c0 |  3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c    69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20  | ://www.gnu.org/licenses/>...;;;. | 
| 282e0 |  43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20    54 68 69 73 20 66 69 6c 65 20 61 64 64 73 20 73  | Commentary:..;;.This.file.adds.s | 
| 28300 |  75 70 70 6f 72 74 20 66 6f 72 20 47 69 74 68 75    62 20 43 6f 70 69 6c 6f 74 20 41 50 49 20 74 6f  | upport.for.Github.Copilot.API.to | 
| 28320 |  20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65    3a 0a 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f  | .gptel..;;;.Code:..(eval-when-co | 
| 28340 |  6d 70 69 6c 65 0a 20 20 28 72 65 71 75 69 72 65    20 27 63 6c 2d 6c 69 62 29 29 0a 28 72 65 71 75  | mpile...(require.'cl-lib)).(requ | 
| 28360 |  69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75 69    72 65 20 27 67 70 74 65 6c 29 0a 28 72 65 71 75  | ire.'map).(require.'gptel).(requ | 
| 28380 |  69 72 65 20 27 62 72 6f 77 73 65 2d 75 72 6c 29    0a 0a 3b 3b 3b 20 47 69 74 68 75 62 20 43 6f 70  | ire.'browse-url)..;;;.Github.Cop | 
| 283a0 |  69 6c 6f 74 0a 28 64 65 66 63 6f 6e 73 74 20 67    70 74 65 6c 2d 2d 67 68 2d 6d 6f 64 65 6c 73 0a  | ilot.(defconst.gptel--gh-models. | 
| 283c0 |  20 20 27 28 28 67 70 74 2d 34 6f 0a 20 20 20 20    20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20  | ..'((gpt-4o......:description... | 
| 283e0 |  20 20 20 22 41 64 76 61 6e 63 65 64 20 6d 6f 64    65 6c 20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 74  | ..."Advanced.model.for.complex.t | 
| 28400 |  61 73 6b 73 3b 20 63 68 65 61 70 65 72 20 26 20    66 61 73 74 65 72 20 74 68 61 6e 20 47 50 54 2d  | asks;.cheaper.&.faster.than.GPT- | 
| 28420 |  54 75 72 62 6f 22 0a 20 20 20 20 20 3a 63 61 70    61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61  | Turbo"......:capabilities.(media | 
| 28440 |  20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75    72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74  | .tool-use.json.url)......:mime-t | 
| 28460 |  79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65    67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22  | ypes.("image/jpeg"."image/png"." | 
| 28480 |  69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67    65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63  | image/gif"."image/webp")......:c | 
| 284a0 |  6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32    38 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 32 2e  | ontext-window.128.:input-cost.2. | 
| 284c0 |  35 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31    30 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22  | 5.:output-cost.10.:cutoff-date." | 
| 284e0 |  32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 67    70 74 2d 34 6f 2d 63 6f 70 69 6c 6f 74 0a 20 20  | 2023-10").....(gpt-4o-copilot... | 
| 28500 |  20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20    22 43 68 65 61 70 20 6d 6f 64 65 6c 20 66 6f 72  | ...:description."Cheap.model.for | 
| 28520 |  20 66 61 73 74 20 74 61 73 6b 73 3b 20 63 68 65    61 70 65 72 20 26 20 6d 6f 72 65 20 63 61 70 61  | .fast.tasks;.cheaper.&.more.capa | 
| 28540 |  62 6c 65 20 74 68 61 6e 20 47 50 54 2d 33 2e 35    20 54 75 72 62 6f 22 0a 20 20 20 20 20 3a 63 6f  | ble.than.GPT-3.5.Turbo"......:co | 
| 28560 |  6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38    0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73  | ntext-window.128......:input-cos | 
| 28580 |  74 20 30 2e 31 35 0a 20 20 20 20 20 3a 6f 75 74    70 75 74 2d 63 6f 73 74 20 30 2e 36 30 0a 20 20  | t.0.15......:output-cost.0.60... | 
| 285a0 |  20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20    22 32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28  | ...:cutoff-date."2023-10").....( | 
| 285c0 |  67 70 74 2d 34 2e 31 0a 20 20 20 20 20 3a 64 65    73 63 72 69 70 74 69 6f 6e 20 22 46 6c 61 67 73  | gpt-4.1......:description."Flags | 
| 285e0 |  68 69 70 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f    6d 70 6c 65 78 20 74 61 73 6b 73 22 0a 20 20 20  | hip.model.for.complex.tasks".... | 
| 28600 |  20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20    28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20  | ..:capabilities.(media.tool-use. | 
| 28620 |  6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a    6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61  | json.url)......:mime-types.("ima | 
| 28640 |  67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f    70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22  | ge/jpeg"."image/png"."image/gif" | 
| 28660 |  20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20    20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e  | ."image/webp")......:context-win | 
| 28680 |  64 6f 77 20 31 30 32 34 0a 20 20 20 20 20 3a 69    6e 70 75 74 2d 63 6f 73 74 20 32 2e 30 0a 20 20  | dow.1024......:input-cost.2.0... | 
| 286a0 |  20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20    38 2e 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66  | ...:output-cost.8.0......:cutoff | 
| 286c0 |  2d 64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29    0a 20 20 20 20 28 67 70 74 2d 34 2e 35 2d 70 72  | -date."2024-05").....(gpt-4.5-pr | 
| 286e0 |  65 76 69 65 77 0a 20 20 20 20 20 3a 64 65 73 63    72 69 70 74 69 6f 6e 20 22 4c 61 72 67 65 73 74  | eview......:description."Largest | 
| 28700 |  20 61 6e 64 20 6d 6f 73 74 20 63 61 70 61 62 6c    65 20 47 50 54 20 6d 6f 64 65 6c 20 74 6f 20 64  | .and.most.capable.GPT.model.to.d | 
| 28720 |  61 74 65 22 0a 20 20 20 20 20 3a 63 61 70 61 62    69 6c 69 74 69 65 73 20 28 75 72 6c 29 0a 20 20  | ate"......:capabilities.(url)... | 
| 28740 |  20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64    6f 77 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70  | ...:context-window.128......:inp | 
| 28760 |  75 74 2d 63 6f 73 74 20 37 35 0a 20 20 20 20 20    3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 30  | ut-cost.75......:output-cost.150 | 
| 28780 |  0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61    74 65 20 22 32 30 32 33 2d 31 30 22 29 0a 20 20  | ......:cutoff-date."2023-10")... | 
| 287a0 |  20 20 28 6f 31 0a 20 20 20 20 20 3a 64 65 73 63    72 69 70 74 69 6f 6e 20 22 52 65 61 73 6f 6e 69  | ..(o1......:description."Reasoni | 
| 287c0 |  6e 67 20 6d 6f 64 65 6c 20 64 65 73 69 67 6e 65    64 20 74 6f 20 73 6f 6c 76 65 20 68 61 72 64 20  | ng.model.designed.to.solve.hard. | 
| 287e0 |  70 72 6f 62 6c 65 6d 73 20 61 63 72 6f 73 73 20    64 6f 6d 61 69 6e 73 22 0a 20 20 20 20 20 3a 63  | problems.across.domains"......:c | 
| 28800 |  61 70 61 62 69 6c 69 74 69 65 73 20 28 72 65 61    73 6f 6e 69 6e 67 20 74 6f 6f 6c 2d 75 73 65 29  | apabilities.(reasoning.tool-use) | 
| 28820 |  0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77    69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a  | ......:context-window.200......: | 
| 28840 |  69 6e 70 75 74 2d 63 6f 73 74 20 31 35 0a 20 20    20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20  | input-cost.15......:output-cost. | 
| 28860 |  36 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d    64 61 74 65 20 22 32 30 32 33 2d 31 30 22 0a 20  | 60......:cutoff-date."2023-10".. | 
| 28880 |  20 20 20 20 3a 72 65 71 75 65 73 74 2d 70 61 72    61 6d 73 20 28 3a 73 74 72 65 61 6d 20 3a 6a 73  | ....:request-params.(:stream.:js | 
| 288a0 |  6f 6e 2d 66 61 6c 73 65 29 29 0a 20 20 20 20 28    6f 33 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70  | on-false)).....(o3......:descrip | 
| 288c0 |  74 69 6f 6e 20 22 57 65 6c 6c 2d 72 6f 75 6e 64    65 64 20 61 6e 64 20 70 6f 77 65 72 66 75 6c 20  | tion."Well-rounded.and.powerful. | 
| 288e0 |  6d 6f 64 65 6c 20 61 63 72 6f 73 73 20 64 6f 6d    61 69 6e 73 22 0a 20 20 20 20 20 3a 63 61 70 61  | model.across.domains"......:capa | 
| 28900 |  62 69 6c 69 74 69 65 73 20 28 72 65 61 73 6f 6e    69 6e 67 20 6d 65 64 69 61 20 74 6f 6f 6c 2d 75  | bilities.(reasoning.media.tool-u | 
| 28920 |  73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20 20 20    20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22  | se.json.url)......:mime-types.(" | 
| 28940 |  69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61    67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67  | image/jpeg"."image/png"."image/g | 
| 28960 |  69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22    29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d  | if"."image/webp")......:context- | 
| 28980 |  77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20    3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 30 0a 20  | window.200......:input-cost.10.. | 
| 289a0 |  20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74    20 34 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66  | ....:output-cost.40......:cutoff | 
| 289c0 |  2d 64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29    0a 20 20 20 20 28 6f 33 2d 6d 69 6e 69 0a 20 20  | -date."2024-05").....(o3-mini... | 
| 289e0 |  20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20    22 48 69 67 68 20 69 6e 74 65 6c 6c 69 67 65 6e  | ...:description."High.intelligen | 
| 28a00 |  63 65 20 61 74 20 74 68 65 20 73 61 6d 65 20 63    6f 73 74 20 61 6e 64 20 6c 61 74 65 6e 63 79 20  | ce.at.the.same.cost.and.latency. | 
| 28a20 |  74 61 72 67 65 74 73 20 6f 66 20 6f 31 2d 6d 69    6e 69 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69  | targets.of.o1-mini"......:capabi | 
| 28a40 |  6c 69 74 69 65 73 20 28 72 65 61 73 6f 6e 69 6e    67 20 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20  | lities.(reasoning.tool-use)..... | 
| 28a60 |  20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77    20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74  | .:context-window.200......:input | 
| 28a80 |  2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f 75    74 70 75 74 2d 63 6f 73 74 20 31 32 0a 20 20 20  | -cost.3......:output-cost.12.... | 
| 28aa0 |  20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22    32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 6f  | ..:cutoff-date."2023-10").....(o | 
| 28ac0 |  34 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65 73    63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 2c 20  | 4-mini......:description."Fast,. | 
| 28ae0 |  65 66 66 65 63 74 69 76 65 20 72 65 61 73 6f 6e    69 6e 67 20 77 69 74 68 20 65 66 66 69 63 69 65  | effective.reasoning.with.efficie | 
| 28b00 |  6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69    6e 20 63 6f 64 69 6e 67 20 61 6e 64 20 76 69 73  | nt.performance.in.coding.and.vis | 
| 28b20 |  75 61 6c 20 74 61 73 6b 73 22 0a 20 20 20 20 20    3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72  | ual.tasks"......:capabilities.(r | 
| 28b40 |  65 61 73 6f 6e 69 6e 67 20 6d 65 64 69 61 20 74    6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c  | easoning.media.tool-use.json.url | 
| 28b60 |  29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70    65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22  | )......:mime-types.("image/jpeg" | 
| 28b80 |  20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d    61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f  | ."image/png"."image/gif"."image/ | 
| 28ba0 |  77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e    74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a  | webp")......:context-window.200. | 
| 28bc0 |  20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74    20 31 2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70  | .....:input-cost.1.10......:outp | 
| 28be0 |  75 74 2d 63 6f 73 74 20 34 2e 34 30 0a 20 20 20    20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22  | ut-cost.4.40......:cutoff-date." | 
| 28c00 |  32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 63    6c 61 75 64 65 2d 33 2e 35 2d 73 6f 6e 6e 65 74  | 2024-05").....(claude-3.5-sonnet | 
| 28c20 |  0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69    6f 6e 20 22 48 69 67 68 65 73 74 20 6c 65 76 65  | ......:description."Highest.leve | 
| 28c40 |  6c 20 6f 66 20 69 6e 74 65 6c 6c 69 67 65 6e 63    65 20 61 6e 64 20 63 61 70 61 62 69 6c 69 74 79  | l.of.intelligence.and.capability | 
| 28c60 |  22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69    74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c  | "......:capabilities.(media.tool | 
| 28c80 |  2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20    20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69  | -use.cache)......:mime-types.("i | 
| 28ca0 |  6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67    65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69  | mage/jpeg"."image/png"."image/gi | 
| 28cc0 |  66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20    22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66  | f"."image/webp"."application/pdf | 
| 28ce0 |  22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74    2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20  | ")......:context-window.200..... | 
| 28d00 |  20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20    20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74  | .:input-cost.3......:output-cost | 
| 28d20 |  20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66    2d 64 61 74 65 20 22 32 30 32 34 2d 30 34 22 29  | .15......:cutoff-date."2024-04") | 
| 28d40 |  0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2e 37    2d 73 6f 6e 6e 65 74 0a 20 20 20 20 20 3a 64 65  | .....(claude-3.7-sonnet......:de | 
| 28d60 |  73 63 72 69 70 74 69 6f 6e 20 22 48 79 62 72 69    64 20 6d 6f 64 65 6c 20 63 61 70 61 62 6c 65 20  | scription."Hybrid.model.capable. | 
| 28d80 |  6f 66 20 73 74 61 6e 64 61 72 64 20 74 68 69 6e    6b 69 6e 67 20 61 6e 64 20 65 78 74 65 6e 64 65  | of.standard.thinking.and.extende | 
| 28da0 |  64 20 74 68 69 6e 6b 69 6e 67 20 6d 6f 64 65 73    22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69  | d.thinking.modes"......:capabili | 
| 28dc0 |  74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c    2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20  | ties.(media.tool-use.cache)..... | 
| 28de0 |  20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69    6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67  | .:mime-types.("image/jpeg"."imag | 
| 28e00 |  65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69    66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20  | e/png"."image/gif"."image/webp". | 
| 28e20 |  22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66    22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74  | "application/pdf")......:context | 
| 28e40 |  2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20    20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20  | -window.200......:input-cost.3.. | 
| 28e60 |  20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74    20 31 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66  | ....:output-cost.15......:cutoff | 
| 28e80 |  2d 64 61 74 65 20 22 32 30 32 35 2d 30 32 22 29    0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33 2e 37  | -date."2025-02").....(claude-3.7 | 
| 28ea0 |  2d 73 6f 6e 6e 65 74 2d 74 68 6f 75 67 68 74 0a    20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f  | -sonnet-thought......:descriptio | 
| 28ec0 |  6e 20 22 43 6c 61 75 64 65 20 33 2e 37 20 53 6f    6e 6e 65 74 20 54 68 69 6e 6b 69 6e 67 22 0a 20  | n."Claude.3.7.Sonnet.Thinking".. | 
| 28ee0 |  20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65    73 20 28 6d 65 64 69 61 20 63 61 63 68 65 29 0a  | ....:capabilities.(media.cache). | 
| 28f00 |  20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73    20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22  | .....:mime-types.("image/jpeg"." | 
| 28f20 |  69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67    65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65  | image/png"."image/gif"."image/we | 
| 28f40 |  62 70 22 20 22 61 70 70 6c 69 63 61 74 69 6f 6e    2f 70 64 66 22 29 0a 20 20 20 20 20 3a 63 6f 6e  | bp"."application/pdf")......:con | 
| 28f60 |  74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a    20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74  | text-window.200......:input-cost | 
| 28f80 |  20 33 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d    63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a 63 75  | .3......:output-cost.15......:cu | 
| 28fa0 |  74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d    30 32 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65  | toff-date."2025-02").....(claude | 
| 28fc0 |  2d 73 6f 6e 6e 65 74 2d 34 0a 20 20 20 20 20 3a    64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67  | -sonnet-4......:description."Hig | 
| 28fe0 |  68 2d 70 65 72 66 6f 72 6d 61 6e 63 65 20 6d 6f    64 65 6c 20 77 69 74 68 20 65 78 63 65 70 74 69  | h-performance.model.with.excepti | 
| 29000 |  6f 6e 61 6c 20 72 65 61 73 6f 6e 69 6e 67 20 61    6e 64 20 65 66 66 69 63 69 65 6e 63 79 22 0a 20  | onal.reasoning.and.efficiency".. | 
| 29020 |  20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65    73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73  | ....:capabilities.(media.tool-us | 
| 29040 |  65 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d    69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67  | e.cache)......:mime-types.("imag | 
| 29060 |  65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70    6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20  | e/jpeg"."image/png"."image/gif". | 
| 29080 |  22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 61 70    70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a  | "image/webp"."application/pdf"). | 
| 290a0 |  20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69    6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69  | .....:context-window.200......:i | 
| 290c0 |  6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20    20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35  | nput-cost.3......:output-cost.15 | 
| 290e0 |  0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61    74 65 20 22 32 30 32 35 2d 30 33 22 29 0a 20 20  | ......:cutoff-date."2025-03")... | 
| 29100 |  20 20 28 63 6c 61 75 64 65 2d 6f 70 75 73 2d 34    0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69  | ..(claude-opus-4......:descripti | 
| 29120 |  6f 6e 20 22 4d 6f 73 74 20 63 61 70 61 62 6c 65    20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d 70 6c  | on."Most.capable.model.for.compl | 
| 29140 |  65 78 20 72 65 61 73 6f 6e 69 6e 67 20 61 6e 64    20 61 64 76 61 6e 63 65 64 20 63 6f 64 69 6e 67  | ex.reasoning.and.advanced.coding | 
| 29160 |  22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69    74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c  | "......:capabilities.(media.tool | 
| 29180 |  2d 75 73 65 20 63 61 63 68 65 29 0a 20 20 20 20    20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69  | -use.cache)......:mime-types.("i | 
| 291a0 |  6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67    65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69  | mage/jpeg"."image/png"."image/gi | 
| 291c0 |  66 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20    22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66  | f"."image/webp"."application/pdf | 
| 291e0 |  22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74    2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20  | ")......:context-window.200..... | 
| 29200 |  20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 35 0a    20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73  | .:input-cost.15......:output-cos | 
| 29220 |  74 20 37 35 0a 20 20 20 20 20 3a 63 75 74 6f 66    66 2d 64 61 74 65 20 22 32 30 32 35 2d 30 33 22  | t.75......:cutoff-date."2025-03" | 
| 29240 |  29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e    30 2d 66 6c 61 73 68 2d 30 30 31 0a 20 20 20 20  | ).....(gemini-2.0-flash-001..... | 
| 29260 |  20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4e    65 78 74 20 67 65 6e 2c 20 68 69 67 68 20 73 70  | .:description."Next.gen,.high.sp | 
| 29280 |  65 65 64 2c 20 6d 75 6c 74 69 6d 6f 64 61 6c 20    66 6f 72 20 61 20 64 69 76 65 72 73 65 20 76 61  | eed,.multimodal.for.a.diverse.va | 
| 292a0 |  72 69 65 74 79 20 6f 66 20 74 61 73 6b 73 22 0a    20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69  | riety.of.tasks"......:capabiliti | 
| 292c0 |  65 73 20 28 6a 73 6f 6e 20 6d 65 64 69 61 29 0a    20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73  | es.(json.media)......:mime-types | 
| 292e0 |  20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69    6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67  | .("image/png"."image/jpeg"."imag | 
| 29300 |  65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68    65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66  | e/webp"."image/heic"."image/heif | 
| 29320 |  22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e  | "..................."application | 
| 29340 |  2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69    6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74  | /pdf"."text/plain"."text/csv"."t | 
| 29360 |  65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20    3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20  | ext/html")......:context-window. | 
| 29380 |  31 30 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74    2d 63 6f 73 74 20 30 2e 31 30 0a 20 20 20 20 20  | 1000......:input-cost.0.10...... | 
| 293a0 |  3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 34    30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64  | :output-cost.0.40......:cutoff-d | 
| 293c0 |  61 74 65 20 22 32 30 32 34 2d 30 38 22 29 0a 20    20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d 70  | ate."2024-08").....(gemini-2.5-p | 
| 293e0 |  72 6f 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70    74 69 6f 6e 20 22 4e 65 78 74 20 67 65 6e 2c 20  | ro......:description."Next.gen,. | 
| 29400 |  68 69 67 68 20 73 70 65 65 64 2c 20 6d 75 6c 74    69 6d 6f 64 61 6c 20 66 6f 72 20 61 20 64 69 76  | high.speed,.multimodal.for.a.div | 
| 29420 |  65 72 73 65 20 76 61 72 69 65 74 79 20 6f 66 20    74 61 73 6b 73 22 0a 20 20 20 20 20 3a 63 61 70  | erse.variety.of.tasks"......:cap | 
| 29440 |  61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d    75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a  | abilities.(tool-use.json.media). | 
| 29460 |  20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73    20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69  | .....:mime-types.("image/png"."i | 
| 29480 |  6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67    65 2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68  | mage/jpeg"."image/webp"."image/h | 
| 294a0 |  65 69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | eic"."image/heif"............... | 
| 294c0 |  20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e    2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69  | ...."application/pdf"."text/plai | 
| 294e0 |  6e 22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74    65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20  | n"."text/csv"."text/html")...... | 
| 29500 |  3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20    31 30 30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74  | :context-window.1000......:input | 
| 29520 |  2d 63 6f 73 74 20 30 2e 31 30 0a 20 20 20 20 20    3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e 34  | -cost.0.10......:output-cost.0.4 | 
| 29540 |  30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64    61 74 65 20 22 32 30 32 34 2d 30 38 22 29 29 29  | 0......:cutoff-date."2024-08"))) | 
| 29560 |  0a 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20    28 67 70 74 65 6c 2d 2d 67 68 20 28 3a 69 6e 63  | ..(cl-defstruct.(gptel--gh.(:inc | 
| 29580 |  6c 75 64 65 20 67 70 74 65 6c 2d 6f 70 65 6e 61    69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | lude.gptel-openai).............. | 
| 295a0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f    70 69 65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20  | ............(:copier.nil)....... | 
| 295c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72  | ...................(:constructor | 
| 295e0 |  20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 67 68 29    29 0a 20 20 74 6f 6b 65 6e 20 67 69 74 68 75 62  | .gptel--make-gh))...token.github | 
| 29600 |  2d 74 6f 6b 65 6e 20 73 65 73 73 69 6f 6e 69 64    20 6d 61 63 68 69 6e 65 69 64 29 0a 0a 28 64 65  | -token.sessionid.machineid)..(de | 
| 29620 |  66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 67 68    2d 67 69 74 68 75 62 2d 74 6f 6b 65 6e 2d 66 69  | fcustom.gptel-gh-github-token-fi | 
| 29640 |  6c 65 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d    6e 61 6d 65 20 22 2e 63 61 63 68 65 2f 63 6f 70  | le.(expand-file-name.".cache/cop | 
| 29660 |  69 6c 6f 74 2d 63 68 61 74 2f 67 69 74 68 75 62    2d 74 6f 6b 65 6e 22 0a 20 20 20 20 20 20 20 20  | ilot-chat/github-token"......... | 
| 29680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 296a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63  | ................user-emacs-direc | 
| 296c0 |  74 6f 72 79 29 0a 20 20 22 46 69 6c 65 20 77 68    65 72 65 20 74 68 65 20 47 69 74 48 75 62 20 74  | tory)..."File.where.the.GitHub.t | 
| 296e0 |  6f 6b 65 6e 20 69 73 20 73 74 6f 72 65 64 2e 22    0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67  | oken.is.stored."...:type.'string | 
| 29700 |  0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c    29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70  | ...:group.'gptel)..(defcustom.gp | 
| 29720 |  74 65 6c 2d 67 68 2d 74 6f 6b 65 6e 2d 66 69 6c    65 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e  | tel-gh-token-file.(expand-file-n | 
| 29740 |  61 6d 65 20 22 2e 63 61 63 68 65 2f 63 6f 70 69    6c 6f 74 2d 63 68 61 74 2f 74 6f 6b 65 6e 22 0a  | ame.".cache/copilot-chat/token". | 
| 29760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 29780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65  | .................user-emacs-dire | 
| 297a0 |  63 74 6f 72 79 29 0a 20 20 22 46 69 6c 65 20 77    68 65 72 65 20 74 68 65 20 63 68 61 74 20 74 6f  | ctory)..."File.where.the.chat.to | 
| 297c0 |  6b 65 6e 20 69 73 20 63 61 63 68 65 64 2e 22 0a    20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 0a  | ken.is.cached."...:type.'string. | 
| 297e0 |  20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29    0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65  | ..:group.'gptel)..(defconst.gpte | 
| 29800 |  6c 2d 2d 67 68 2d 61 75 74 68 2d 63 6f 6d 6d 6f    6e 2d 68 65 61 64 65 72 73 0a 20 20 60 28 28 22  | l--gh-auth-common-headers...`((" | 
| 29820 |  65 64 69 74 6f 72 2d 70 6c 75 67 69 6e 2d 76 65    72 73 69 6f 6e 22 20 2e 20 22 67 70 74 65 6c 2f  | editor-plugin-version"..."gptel/ | 
| 29840 |  2a 22 29 0a 20 20 20 20 28 22 65 64 69 74 6f 72    2d 76 65 72 73 69 6f 6e 22 20 2e 20 2c 28 63 6f  | *").....("editor-version"...,(co | 
| 29860 |  6e 63 61 74 20 22 65 6d 61 63 73 2f 22 20 65 6d    61 63 73 2d 76 65 72 73 69 6f 6e 29 29 29 29 0a  | ncat."emacs/".emacs-version)))). | 
| 29880 |  0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65 6c    2d 2d 67 68 2d 63 6c 69 65 6e 74 2d 69 64 20 22  | .(defconst.gptel--gh-client-id." | 
| 298a0 |  49 76 31 2e 62 35 30 37 61 30 38 63 38 37 65 63    66 65 39 38 22 29 0a 0a 3b 3b 20 68 74 74 70 73  | Iv1.b507a08c87ecfe98")..;;.https | 
| 298c0 |  3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e    6f 72 67 2f 77 69 6b 69 2f 55 6e 69 76 65 72 73  | ://en.wikipedia.org/wiki/Univers | 
| 298e0 |  61 6c 6c 79 5f 75 6e 69 71 75 65 5f 69 64 65 6e    74 69 66 69 65 72 23 56 65 72 73 69 6f 6e 5f 34  | ally_unique_identifier#Version_4 | 
| 29900 |  5f 28 72 61 6e 64 6f 6d 29 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 67 68 2d 75 75 69 64 20  | _(random).(defun.gptel--gh-uuid. | 
| 29920 |  28 29 0a 20 20 22 47 65 6e 65 72 61 74 65 20 61    20 55 55 49 44 20 76 34 2d 31 2e 22 0a 20 20 28  | ()..."Generate.a.UUID.v4-1."...( | 
| 29940 |  66 6f 72 6d 61 74 20 22 25 30 34 78 25 30 34 78    2d 25 30 34 78 2d 34 25 30 33 78 2d 38 25 30 33  | format."%04x%04x-%04x-4%03x-8%03 | 
| 29960 |  78 2d 25 30 34 78 25 30 34 78 25 30 34 78 22 0a    20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f  | x-%04x%04x%04x"...........(rando | 
| 29980 |  6d 20 23 78 31 30 30 30 30 29 20 28 72 61 6e 64    6f 6d 20 23 78 31 30 30 30 30 29 0a 20 20 20 20  | m.#x10000).(random.#x10000)..... | 
| 299a0 |  20 20 20 20 20 20 28 72 61 6e 64 6f 6d 20 23 78    31 30 30 30 30 29 0a 20 20 20 20 20 20 20 20 20  | ......(random.#x10000).......... | 
| 299c0 |  20 28 72 61 6e 64 6f 6d 20 23 78 31 30 30 30 29    0a 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64  | .(random.#x1000)...........(rand | 
| 299e0 |  6f 6d 20 23 78 31 30 30 30 29 0a 20 20 20 20 20    20 20 20 20 20 28 72 61 6e 64 6f 6d 20 23 78 31  | om.#x1000)...........(random.#x1 | 
| 29a00 |  30 30 30 30 29 20 28 72 61 6e 64 6f 6d 20 23 78    31 30 30 30 30 29 20 28 72 61 6e 64 6f 6d 20 23  | 0000).(random.#x10000).(random.# | 
| 29a20 |  78 31 30 30 30 30 29 29 29 0a 0a 28 64 65 66 75    6e 20 67 70 74 65 6c 2d 2d 67 68 2d 6d 61 63 68  | x10000)))..(defun.gptel--gh-mach | 
| 29a40 |  69 6e 65 2d 69 64 20 28 29 0a 20 20 22 47 65 6e    65 72 61 74 65 20 61 20 6d 61 63 68 69 6e 65 20  | ine-id.()..."Generate.a.machine. | 
| 29a60 |  49 44 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 65    78 2d 63 68 61 72 73 20 22 30 31 32 33 34 35 36  | ID."...(let.((hex-chars."0123456 | 
| 29a80 |  37 38 39 61 62 63 64 65 66 22 29 0a 20 20 20 20    20 20 20 20 28 6c 65 6e 67 74 68 20 36 35 29 0a  | 789abcdef").........(length.65). | 
| 29aa0 |  20 20 20 20 20 20 20 20 68 65 78 29 0a 20 20 20    20 28 64 6f 74 69 6d 65 73 20 28 5f 20 6c 65 6e  | ........hex).....(dotimes.(_.len | 
| 29ac0 |  67 74 68 29 0a 20 20 20 20 20 20 28 73 65 74 71    20 68 65 78 20 28 6e 63 6f 6e 63 20 68 65 78 20  | gth).......(setq.hex.(nconc.hex. | 
| 29ae0 |  28 6c 69 73 74 20 28 61 72 65 66 20 68 65 78 2d    63 68 61 72 73 20 28 72 61 6e 64 6f 6d 20 31 36  | (list.(aref.hex-chars.(random.16 | 
| 29b00 |  29 29 29 29 29 29 0a 20 20 20 20 28 61 70 70 6c    79 20 23 27 73 74 72 69 6e 67 20 68 65 78 29 29  | )))))).....(apply.#'string.hex)) | 
| 29b20 |  29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d    2d 67 68 2d 72 65 73 74 6f 72 65 20 28 66 69 6c  | )..(defun.gptel--gh-restore.(fil | 
| 29b40 |  65 29 0a 20 20 22 52 65 73 74 6f 72 65 20 73 61    76 65 64 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20  | e)..."Restore.saved.object.from. | 
| 29b60 |  46 49 4c 45 2e 22 0a 20 20 28 77 68 65 6e 20 28    66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 66 69  | FILE."...(when.(file-exists-p.fi | 
| 29b80 |  6c 65 29 0a 20 20 20 20 3b 3b 20 57 65 20 73 65    74 20 74 68 65 20 63 6f 64 69 6e 67 20 73 79 73  | le).....;;.We.set.the.coding.sys | 
| 29ba0 |  74 65 6d 20 74 6f 20 60 75 74 66 2d 38 2d 61 75    74 6f 2d 64 6f 73 27 20 77 68 65 6e 20 72 65 61  | tem.to.`utf-8-auto-dos'.when.rea | 
| 29bc0 |  64 69 6e 67 20 73 6f 20 74 68 61 74 0a 20 20 20    20 3b 3b 20 66 69 6c 65 73 20 77 69 74 68 20 43  | ding.so.that.....;;.files.with.C | 
| 29be0 |  52 20 45 4f 4c 20 63 61 6e 20 73 74 69 6c 6c 20    62 65 20 72 65 61 64 20 70 72 6f 70 65 72 6c 79  | R.EOL.can.still.be.read.properly | 
| 29c00 |  0a 20 20 20 20 28 6c 65 74 20 28 28 63 6f 64 69    6e 67 2d 73 79 73 74 65 6d 2d 66 6f 72 2d 72 65  | .....(let.((coding-system-for-re | 
| 29c20 |  61 64 20 27 75 74 66 2d 38 2d 61 75 74 6f 2d 64    6f 73 29 29 0a 20 20 20 20 20 20 28 77 69 74 68  | ad.'utf-8-auto-dos)).......(with | 
| 29c40 |  2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20    20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72  | -temp-buffer.........(set-buffer | 
| 29c60 |  2d 6d 75 6c 74 69 62 79 74 65 20 6e 69 6c 29 0a    20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d  | -multibyte.nil).........(insert- | 
| 29c80 |  66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 2d 6c 69    74 65 72 61 6c 6c 79 20 66 69 6c 65 29 0a 20 20  | file-contents-literally.file)... | 
| 29ca0 |  20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72    20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20  | ......(goto-char.(point-min))... | 
| 29cc0 |  20 20 20 20 20 20 28 72 65 61 64 20 28 63 75 72    72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29  | ......(read.(current-buffer))))) | 
| 29ce0 |  29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d    2d 67 68 2d 73 61 76 65 20 28 66 69 6c 65 20 6f  | )..(defun.gptel--gh-save.(file.o | 
| 29d00 |  62 6a 29 0a 20 20 22 53 61 76 65 20 4f 42 4a 20    74 6f 20 46 49 4c 45 2e 22 0a 20 20 28 6c 65 74  | bj)..."Save.OBJ.to.FILE."...(let | 
| 29d20 |  20 28 28 70 72 69 6e 74 2d 6c 65 6e 67 74 68 20    6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 70 72  | .((print-length.nil).........(pr | 
| 29d40 |  69 6e 74 2d 6c 65 76 65 6c 20 6e 69 6c 29 0a 20    20 20 20 20 20 20 20 28 63 6f 64 69 6e 67 2d 73  | int-level.nil).........(coding-s | 
| 29d60 |  79 73 74 65 6d 2d 66 6f 72 2d 77 72 69 74 65 20    27 75 74 66 2d 38 2d 75 6e 69 78 29 29 0a 20 20  | ystem-for-write.'utf-8-unix))... | 
| 29d80 |  20 20 28 6d 61 6b 65 2d 64 69 72 65 63 74 6f 72    79 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72  | ..(make-directory.(file-name-dir | 
| 29da0 |  65 63 74 6f 72 79 20 66 69 6c 65 29 20 74 29 0a    20 20 20 20 28 77 72 69 74 65 2d 72 65 67 69 6f  | ectory.file).t).....(write-regio | 
| 29dc0 |  6e 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69    6e 67 20 6f 62 6a 29 20 6e 69 6c 20 66 69 6c 65  | n.(prin1-to-string.obj).nil.file | 
| 29de0 |  20 6e 69 6c 20 3a 73 69 6c 65 6e 74 29 0a 20 20    20 20 6f 62 6a 29 29 0a 0a 28 64 65 66 75 6e 20  | .nil.:silent).....obj))..(defun. | 
| 29e00 |  67 70 74 65 6c 2d 2d 67 68 2d 6c 6f 67 69 6e 28    29 0a 20 20 22 4d 61 6e 61 67 65 20 67 69 74 68  | gptel--gh-login()..."Manage.gith | 
| 29e20 |  75 62 20 6c 6f 67 69 6e 2e 22 0a 20 20 28 70 63    61 73 65 2d 6c 65 74 20 28 28 28 6d 61 70 20 3a  | ub.login."...(pcase-let.(((map.: | 
| 29e40 |  64 65 76 69 63 65 5f 63 6f 64 65 20 3a 75 73 65    72 5f 63 6f 64 65 20 3a 76 65 72 69 66 69 63 61  | device_code.:user_code.:verifica | 
| 29e60 |  74 69 6f 6e 5f 75 72 69 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d  | tion_uri)................(gptel- | 
| 29e80 |  2d 75 72 6c 2d 72 65 74 72 69 65 76 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 68  | -url-retrieve................."h | 
| 29ea0 |  74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f    6d 2f 6c 6f 67 69 6e 2f 64 65 76 69 63 65 2f 63  | ttps://github.com/login/device/c | 
| 29ec0 |  6f 64 65 22 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 6d 65 74 68 6f 64 20 27 70 6f  | ode".................:method.'po | 
| 29ee0 |  73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 68 65 61 64 65 72 73 20 67 70 74 65  | st.................:headers.gpte | 
| 29f00 |  6c 2d 2d 67 68 2d 61 75 74 68 2d 63 6f 6d 6d 6f    6e 2d 68 65 61 64 65 72 73 0a 20 20 20 20 20 20  | l--gh-auth-common-headers....... | 
| 29f20 |  20 20 20 20 20 20 20 20 20 20 3a 64 61 74 61 20    60 28 20 3a 63 6c 69 65 6e 74 5f 69 64 20 2c 67  | ..........:data.`(.:client_id.,g | 
| 29f40 |  70 74 65 6c 2d 2d 67 68 2d 63 6c 69 65 6e 74 2d    69 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ptel--gh-client-id.............. | 
| 29f60 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 73 63 6f    70 65 20 22 72 65 61 64 3a 75 73 65 72 22 29 29  | ............:scope."read:user")) | 
| 29f80 |  29 29 0a 20 20 20 20 28 67 75 69 2d 73 65 74 2d    73 65 6c 65 63 74 69 6f 6e 20 27 43 4c 49 50 42  | )).....(gui-set-selection.'CLIPB | 
| 29fa0 |  4f 41 52 44 20 75 73 65 72 5f 63 6f 64 65 29 0a    20 20 20 20 28 72 65 61 64 2d 66 72 6f 6d 2d 6d  | OARD.user_code).....(read-from-m | 
| 29fc0 |  69 6e 69 62 75 66 66 65 72 0a 20 20 20 20 20 28    66 6f 72 6d 61 74 20 22 59 6f 75 72 20 6f 6e 65  | inibuffer......(format."Your.one | 
| 29fe0 |  2d 74 69 6d 65 20 63 6f 64 65 20 25 73 20 69 73    20 63 6f 70 69 65 64 2e 20 5c 0a 50 72 65 73 73  | -time.code.%s.is.copied..\.Press | 
| 2a000 |  20 45 4e 54 45 52 20 74 6f 20 6f 70 65 6e 20 47    69 74 48 75 62 20 69 6e 20 79 6f 75 72 20 62 72  | .ENTER.to.open.GitHub.in.your.br | 
| 2a020 |  6f 77 73 65 72 2e 20 5c 0a 49 66 20 79 6f 75 72    20 62 72 6f 77 73 65 72 20 64 6f 65 73 20 6e 6f  | owser..\.If.your.browser.does.no | 
| 2a040 |  74 20 6f 70 65 6e 20 61 75 74 6f 6d 61 74 69 63    61 6c 6c 79 2c 20 62 72 6f 77 73 65 20 74 6f 20  | t.open.automatically,.browse.to. | 
| 2a060 |  25 73 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 75 73 65 72 5f 63 6f 64 65 20 76 65 72 69  | %s."..............user_code.veri | 
| 2a080 |  66 69 63 61 74 69 6f 6e 5f 75 72 69 29 29 0a 20    20 20 20 28 62 72 6f 77 73 65 2d 75 72 6c 20 76  | fication_uri)).....(browse-url.v | 
| 2a0a0 |  65 72 69 66 69 63 61 74 69 6f 6e 5f 75 72 69 29    0a 20 20 20 20 28 72 65 61 64 2d 66 72 6f 6d 2d  | erification_uri).....(read-from- | 
| 2a0c0 |  6d 69 6e 69 62 75 66 66 65 72 20 22 50 72 65 73    73 20 45 4e 54 45 52 20 61 66 74 65 72 20 61 75  | minibuffer."Press.ENTER.after.au | 
| 2a0e0 |  74 68 6f 72 69 7a 69 6e 67 2e 22 29 0a 20 20 20    20 28 74 68 72 65 61 64 2d 6c 61 73 74 0a 20 20  | thorizing.").....(thread-last... | 
| 2a100 |  20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 0a 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 72  | ....(plist-get........(gptel--ur | 
| 2a120 |  6c 2d 72 65 74 72 69 65 76 65 0a 20 20 20 20 20    20 20 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68  | l-retrieve........."https://gith | 
| 2a140 |  75 62 2e 63 6f 6d 2f 6c 6f 67 69 6e 2f 6f 61 75    74 68 2f 61 63 63 65 73 73 5f 74 6f 6b 65 6e 22  | ub.com/login/oauth/access_token" | 
| 2a160 |  0a 20 20 20 20 20 20 20 20 3a 6d 65 74 68 6f 64    20 27 70 6f 73 74 0a 20 20 20 20 20 20 20 20 3a  | .........:method.'post.........: | 
| 2a180 |  68 65 61 64 65 72 73 20 67 70 74 65 6c 2d 2d 67    68 2d 61 75 74 68 2d 63 6f 6d 6d 6f 6e 2d 68 65  | headers.gptel--gh-auth-common-he | 
| 2a1a0 |  61 64 65 72 73 0a 20 20 20 20 20 20 20 20 3a 64    61 74 61 20 60 28 20 3a 63 6c 69 65 6e 74 5f 69  | aders.........:data.`(.:client_i | 
| 2a1c0 |  64 20 2c 67 70 74 65 6c 2d 2d 67 68 2d 63 6c 69    65 6e 74 2d 69 64 0a 20 20 20 20 20 20 20 20 20  | d.,gptel--gh-client-id.......... | 
| 2a1e0 |  20 20 20 20 20 20 20 20 3a 64 65 76 69 63 65 5f    63 6f 64 65 20 2c 64 65 76 69 63 65 5f 63 6f 64  | ........:device_code.,device_cod | 
| 2a200 |  65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 67 72 61 6e 74 5f 74 79 70 65 20 22  | e..................:grant_type." | 
| 2a220 |  75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a    6f 61 75 74 68 3a 67 72 61 6e 74 2d 74 79 70 65  | urn:ietf:params:oauth:grant-type | 
| 2a240 |  3a 64 65 76 69 63 65 5f 63 6f 64 65 22 29 29 0a    20 20 20 20 20 20 20 3a 61 63 63 65 73 73 5f 74  | :device_code"))........:access_t | 
| 2a260 |  6f 6b 65 6e 29 0a 20 20 20 20 20 20 28 67 70 74    65 6c 2d 2d 67 68 2d 73 61 76 65 20 67 70 74 65  | oken).......(gptel--gh-save.gpte | 
| 2a280 |  6c 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b 65    6e 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 28 73  | l-gh-github-token-file).......(s | 
| 2a2a0 |  65 74 66 20 28 67 70 74 65 6c 2d 2d 67 68 2d 67    69 74 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65  | etf.(gptel--gh-github-token.gpte | 
| 2a2c0 |  6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 29 0a 0a    28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 68  | l-backend)))))..(defun.gptel--gh | 
| 2a2e0 |  2d 72 65 6e 65 77 2d 74 6f 6b 65 6e 20 28 29 0a    20 20 22 52 65 6e 65 77 20 73 65 73 73 69 6f 6e  | -renew-token.()..."Renew.session | 
| 2a300 |  20 74 6f 6b 65 6e 2e 22 0a 20 20 28 6c 65 74 20    28 28 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20  | .token."...(let.((token......... | 
| 2a320 |  20 28 67 70 74 65 6c 2d 2d 75 72 6c 2d 72 65 74    72 69 65 76 65 0a 20 20 20 20 20 20 20 20 20 20  | .(gptel--url-retrieve........... | 
| 2a340 |  20 20 20 22 68 74 74 70 73 3a 2f 2f 61 70 69 2e    67 69 74 68 75 62 2e 63 6f 6d 2f 63 6f 70 69 6c  | ..."https://api.github.com/copil | 
| 2a360 |  6f 74 5f 69 6e 74 65 72 6e 61 6c 2f 76 32 2f 74    6f 6b 65 6e 22 0a 20 20 20 20 20 20 20 20 20 20  | ot_internal/v2/token"........... | 
| 2a380 |  20 3a 6d 65 74 68 6f 64 20 27 67 65 74 0a 20 20    20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72  | .:method.'get............:header | 
| 2a3a0 |  73 20 60 28 28 22 61 75 74 68 6f 72 69 7a 61 74    69 6f 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20  | s.`(("authorization"............ | 
| 2a3c0 |  20 20 20 20 20 20 20 20 20 20 20 20 2e 20 2c 28    66 6f 72 6d 61 74 20 22 74 6f 6b 65 6e 20 25 73  | ..............,(format."token.%s | 
| 2a3e0 |  22 20 28 67 70 74 65 6c 2d 2d 67 68 2d 67 69 74    68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d  | ".(gptel--gh-github-token.gptel- | 
| 2a400 |  62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | backend)))...................... | 
| 2a420 |  20 2c 40 67 70 74 65 6c 2d 2d 67 68 2d 61 75 74    68 2d 63 6f 6d 6d 6f 6e 2d 68 65 61 64 65 72 73  | .,@gptel--gh-auth-common-headers | 
| 2a440 |  29 29 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f    74 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6b  | )))).....(if.(not.(plist-get.tok | 
| 2a460 |  65 6e 20 3a 74 6f 6b 65 6e 29 29 0a 20 20 20 20    20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20  | en.:token)).........(progn...... | 
| 2a480 |  20 20 20 20 20 28 73 65 74 66 20 28 67 70 74 65    6c 2d 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f 6b  | .....(setf.(gptel--gh-github-tok | 
| 2a4a0 |  65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64    29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20  | en.gptel-backend).nil).......... | 
| 2a4c0 |  20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 45 72    72 6f 72 3a 20 59 6f 75 20 6d 69 67 68 74 20 6e  | .(user-error."Error:.You.might.n | 
| 2a4e0 |  6f 74 20 68 61 76 65 20 61 63 63 65 73 73 20 74    6f 20 47 69 74 68 75 62 20 43 6f 70 69 6c 6f 74  | ot.have.access.to.Github.Copilot | 
| 2a500 |  20 43 68 61 74 21 22 29 29 0a 20 20 20 20 20 20    28 74 68 72 65 61 64 2d 6c 61 73 74 0a 20 20 20  | .Chat!")).......(thread-last.... | 
| 2a520 |  20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d    73 61 76 65 20 67 70 74 65 6c 2d 67 68 2d 74 6f  | .....(gptel--gh-save.gptel-gh-to | 
| 2a540 |  6b 65 6e 2d 66 69 6c 65 20 74 6f 6b 65 6e 29 0a    20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 67  | ken-file.token).........(setf.(g | 
| 2a560 |  70 74 65 6c 2d 2d 67 68 2d 74 6f 6b 65 6e 20 67    70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29  | ptel--gh-token.gptel-backend)))) | 
| 2a580 |  29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c    2d 2d 67 68 2d 61 75 74 68 20 28 29 0a 20 20 22  | ))..(defun.gptel--gh-auth.()..." | 
| 2a5a0 |  41 75 74 68 65 6e 74 69 63 61 74 65 20 77 69 74    68 20 47 69 74 48 75 62 20 43 6f 70 69 6c 6f 74  | Authenticate.with.GitHub.Copilot | 
| 2a5c0 |  20 41 50 49 2e 0a 0a 57 65 20 66 69 72 73 74 20    6e 65 65 64 20 67 69 74 68 75 62 20 61 75 74 68  | .API...We.first.need.github.auth | 
| 2a5e0 |  6f 72 69 7a 61 74 69 6f 6e 20 28 67 69 74 68 75    62 20 74 6f 6b 65 6e 29 2e 0a 54 68 65 6e 20 77  | orization.(github.token)..Then.w | 
| 2a600 |  65 20 6e 65 65 64 20 61 20 73 65 73 73 69 6f 6e    20 74 6f 6b 65 6e 2e 22 0a 20 20 28 75 6e 6c 65  | e.need.a.session.token."...(unle | 
| 2a620 |  73 73 20 28 67 70 74 65 6c 2d 2d 67 68 2d 67 69    74 68 75 62 2d 74 6f 6b 65 6e 20 67 70 74 65 6c  | ss.(gptel--gh-github-token.gptel | 
| 2a640 |  2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 28 6c    65 74 20 28 28 74 6f 6b 65 6e 20 28 67 70 74 65  | -backend).....(let.((token.(gpte | 
| 2a660 |  6c 2d 2d 67 68 2d 72 65 73 74 6f 72 65 20 67 70    74 65 6c 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f  | l--gh-restore.gptel-gh-github-to | 
| 2a680 |  6b 65 6e 2d 66 69 6c 65 29 29 29 0a 20 20 20 20    20 20 28 69 66 20 74 6f 6b 65 6e 0a 20 20 20 20  | ken-file))).......(if.token..... | 
| 2a6a0 |  20 20 20 20 20 20 28 73 65 74 66 20 28 67 70 74    65 6c 2d 2d 67 68 2d 67 69 74 68 75 62 2d 74 6f  | ......(setf.(gptel--gh-github-to | 
| 2a6c0 |  6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e    64 29 20 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20  | ken.gptel-backend).token)....... | 
| 2a6e0 |  20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 6c 6f 67    69 6e 29 29 29 29 0a 0a 20 20 28 77 68 65 6e 20  | ..(gptel--gh-login))))....(when. | 
| 2a700 |  28 6e 75 6c 6c 20 28 67 70 74 65 6c 2d 2d 67 68    2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63  | (null.(gptel--gh-token.gptel-bac | 
| 2a720 |  6b 65 6e 64 29 29 0a 20 20 20 20 3b 3b 20 74 72    79 20 74 6f 20 6c 6f 61 64 20 74 6f 6b 65 6e 20  | kend)).....;;.try.to.load.token. | 
| 2a740 |  66 72 6f 6d 20 60 67 70 74 65 6c 2d 67 68 2d 74    6f 6b 65 6e 2d 66 69 6c 65 27 0a 20 20 20 20 28  | from.`gptel-gh-token-file'.....( | 
| 2a760 |  73 65 74 66 20 28 67 70 74 65 6c 2d 2d 67 68 2d    74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63 6b  | setf.(gptel--gh-token.gptel-back | 
| 2a780 |  65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 28    67 70 74 65 6c 2d 2d 67 68 2d 72 65 73 74 6f 72  | end)...........(gptel--gh-restor | 
| 2a7a0 |  65 20 67 70 74 65 6c 2d 67 68 2d 74 6f 6b 65 6e    2d 66 69 6c 65 29 29 29 0a 0a 20 20 28 70 63 61  | e.gptel-gh-token-file)))....(pca | 
| 2a7c0 |  73 65 2d 6c 65 74 20 28 28 28 6d 61 70 20 3a 74    6f 6b 65 6e 20 3a 65 78 70 69 72 65 73 5f 61 74  | se-let.(((map.:token.:expires_at | 
| 2a7e0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 67 70 74 65 6c 2d 2d 67 68 2d 74 6f 6b 65  | )................(gptel--gh-toke | 
| 2a800 |  6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29    29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6f 72  | n.gptel-backend))).....(when.(or | 
| 2a820 |  20 28 6e 75 6c 6c 20 74 6f 6b 65 6e 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64  | .(null.token)...............(and | 
| 2a840 |  20 65 78 70 69 72 65 73 5f 61 74 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | .expires_at....................( | 
| 2a860 |  3e 20 28 72 6f 75 6e 64 20 28 66 6c 6f 61 74 2d    74 69 6d 65 20 28 63 75 72 72 65 6e 74 2d 74 69  | >.(round.(float-time.(current-ti | 
| 2a880 |  6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 69  | me))).......................expi | 
| 2a8a0 |  72 65 73 5f 61 74 29 29 29 0a 20 20 20 20 20 20    28 67 70 74 65 6c 2d 2d 67 68 2d 72 65 6e 65 77  | res_at))).......(gptel--gh-renew | 
| 2a8c0 |  2d 74 6f 6b 65 6e 29 29 29 29 0a 0a 3b 3b 3b 23    23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64  | -token))))..;;;###autoload.(cl-d | 
| 2a8e0 |  65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d    67 68 2d 63 6f 70 69 6c 6f 74 0a 20 20 20 20 28  | efun.gptel-make-gh-copilot.....( | 
| 2a900 |  6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61    72 67 73 20 72 65 71 75 65 73 74 2d 70 61 72 61  | name.&key.curl-args.request-para | 
| 2a920 |  6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 68 65    61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 29 0a  | ms...........(header.(lambda.(). | 
| 2a940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 67 70 74 65 6c 2d 2d 67 68 2d 61  | ....................(gptel--gh-a | 
| 2a960 |  75 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 60 28 28 22 6f 70 65  | uth).....................`(("ope | 
| 2a980 |  6e 61 69 2d 69 6e 74 65 6e 74 22 20 2e 20 22 63    6f 6e 76 65 72 73 61 74 69 6f 6e 2d 70 61 6e 65  | nai-intent"..."conversation-pane | 
| 2a9a0 |  6c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 22 61 75 74 68  | l").......................("auth | 
| 2a9c0 |  6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 63    6f 6e 63 61 74 20 22 42 65 61 72 65 72 20 22 0a  | orization"...,(concat."Bearer.". | 
| 2a9e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2aa00 |  20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73    74 2d 67 65 74 20 28 67 70 74 65 6c 2d 2d 67 68  | ...........(plist-get.(gptel--gh | 
| 2aa20 |  2d 74 6f 6b 65 6e 20 67 70 74 65 6c 2d 62 61 63    6b 65 6e 64 29 20 3a 74 6f 6b 65 6e 29 29 29 0a  | -token.gptel-backend).:token))). | 
| 2aa40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 22 78 2d 72 65 71 75 65 73  | ......................("x-reques | 
| 2aa60 |  74 2d 69 64 22 20 2e 20 2c 28 67 70 74 65 6c 2d    2d 67 68 2d 75 75 69 64 29 29 0a 20 20 20 20 20  | t-id"...,(gptel--gh-uuid))...... | 
| 2aa80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 22 76 73 63 6f 64 65 2d 73 65 73 73 69 6f  | .................("vscode-sessio | 
| 2aaa0 |  6e 69 64 22 20 2e 20 2c 28 6f 72 20 28 67 70 74    65 6c 2d 2d 67 68 2d 73 65 73 73 69 6f 6e 69 64  | nid"...,(or.(gptel--gh-sessionid | 
| 2aac0 |  20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20    22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .gptel-backend).""))............ | 
| 2aae0 |  20 20 20 20 20 20 20 20 20 20 20 28 22 76 73 63    6f 64 65 2d 6d 61 63 68 69 6e 65 69 64 22 20 2e  | ...........("vscode-machineid".. | 
| 2ab00 |  20 2c 28 6f 72 20 28 67 70 74 65 6c 2d 2d 67 68    2d 6d 61 63 68 69 6e 65 69 64 20 67 70 74 65 6c  | .,(or.(gptel--gh-machineid.gptel | 
| 2ab20 |  2d 62 61 63 6b 65 6e 64 29 20 22 22 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -backend)."")).................. | 
| 2ab40 |  20 20 20 20 20 2c 40 28 77 68 65 6e 20 28 61 6e    64 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65  | .....,@(when.(and.gptel-track-me | 
| 2ab60 |  64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | dia............................. | 
| 2ab80 |  20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d    6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27  | .......(gptel--model-capable-p.' | 
| 2aba0 |  6d 65 64 69 61 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | media))......................... | 
| 2abc0 |  20 20 60 28 28 22 63 6f 70 69 6c 6f 74 2d 76 69    73 69 6f 6e 2d 72 65 71 75 65 73 74 22 20 2e 20  | ..`(("copilot-vision-request"... | 
| 2abe0 |  22 74 72 75 65 22 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "true")))....................... | 
| 2ac00 |  28 22 63 6f 70 69 6c 6f 74 2d 69 6e 74 65 67 72    61 74 69 6f 6e 2d 69 64 22 20 2e 20 22 76 73 63  | ("copilot-integration-id"..."vsc | 
| 2ac20 |  6f 64 65 2d 63 68 61 74 22 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61  | ode-chat"))))...........(host."a | 
| 2ac40 |  70 69 2e 67 69 74 68 75 62 63 6f 70 69 6c 6f 74    2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20  | pi.githubcopilot.com").......... | 
| 2ac60 |  20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70    73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65  | .(protocol."https")...........(e | 
| 2ac80 |  6e 64 70 6f 69 6e 74 20 22 2f 63 68 61 74 2f 63    6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a 20 20 20  | ndpoint."/chat/completions").... | 
| 2aca0 |  20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 74    29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64  | .......(stream.t)...........(mod | 
| 2acc0 |  65 6c 73 20 67 70 74 65 6c 2d 2d 67 68 2d 6d 6f    64 65 6c 73 29 29 0a 20 20 22 52 65 67 69 73 74  | els.gptel--gh-models))..."Regist | 
| 2ace0 |  65 72 20 61 20 47 69 74 68 75 62 20 43 6f 70 69    6c 6f 74 20 63 68 61 74 20 62 61 63 6b 65 6e 64  | er.a.Github.Copilot.chat.backend | 
| 2ad00 |  20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20    4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61  | .for.gptel.with.NAME...Keyword.a | 
| 2ad20 |  72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d    41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20  | rguments:..CURL-ARGS.(optional). | 
| 2ad40 |  69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64    69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67  | is.a.list.of.additional.Curl.arg | 
| 2ad60 |  75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 28 6f    70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20  | uments...HOST.(optional).is.the. | 
| 2ad80 |  41 50 49 20 68 6f 73 74 2c 20 74 79 70 69 63 61    6c 6c 79 20 5c 22 61 70 69 2e 67 69 74 68 75 62  | API.host,.typically.\"api.github | 
| 2ada0 |  63 6f 70 69 6c 6f 74 2e 63 6f 6d 5c 22 2e 0a 0a    4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74  | copilot.com\"...MODELS.is.a.list | 
| 2adc0 |  20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f    64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 73 79  | .of.available.model.names,.as.sy | 
| 2ade0 |  6d 62 6f 6c 73 2e 0a 41 64 64 69 74 69 6f 6e 61    6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 73 70 65  | mbols..Additionally,.you.can.spe | 
| 2ae00 |  63 69 66 79 20 73 75 70 70 6f 72 74 65 64 20 4c    4c 4d 20 63 61 70 61 62 69 6c 69 74 69 65 73 20  | cify.supported.LLM.capabilities. | 
| 2ae20 |  6c 69 6b 65 0a 76 69 73 69 6f 6e 20 6f 72 20 74    6f 6f 6c 2d 75 73 65 20 62 79 20 61 70 70 65 6e  | like.vision.or.tool-use.by.appen | 
| 2ae40 |  64 69 6e 67 20 61 20 70 6c 69 73 74 20 74 6f 20    74 68 65 20 6d 6f 64 65 6c 20 77 69 74 68 20 6d  | ding.a.plist.to.the.model.with.m | 
| 2ae60 |  6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c    20 69 6e 20 74 68 65 20 66 6f 72 6d 0a 0a 20 28  | ore.information,.in.the.form...( | 
| 2ae80 |  6d 6f 64 65 6c 2d 6e 61 6d 65 20 2e 20 70 6c 69    73 74 29 0a 0a 46 6f 72 20 61 20 6c 69 73 74 20  | model-name...plist)..For.a.list. | 
| 2aea0 |  6f 66 20 63 75 72 72 65 6e 74 6c 79 20 72 65 63    6f 67 6e 69 7a 65 64 20 70 6c 69 73 74 20 6b 65  | of.currently.recognized.plist.ke | 
| 2aec0 |  79 73 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 2d    6f 70 65 6e 61 69 2d 6d 6f 64 65 6c 73 27 2e 20  | ys,.see.`gptel--openai-models'.. | 
| 2aee0 |  20 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61    20 6d 6f 64 65 6c 20 73 70 65 63 69 66 69 63 61  | .An.example.of.a.model.specifica | 
| 2af00 |  74 69 6f 6e 0a 69 6e 63 6c 75 64 69 6e 67 20 62    6f 74 68 20 6b 69 6e 64 73 20 6f 66 20 73 70 65  | tion.including.both.kinds.of.spe | 
| 2af20 |  63 73 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a 5c 5c 3d    27 28 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 20  | cs:..:models.\\='(gpt-3.5-turbo. | 
| 2af40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3b 53 69 6d 70 6c 65 20  | ........................;Simple. | 
| 2af60 |  73 70 65 63 73 0a 20 20 67 70 74 2d 34 2d 74 75    72 62 6f 0a 20 20 28 67 70 74 2d 34 6f 2d 6d 69  | specs...gpt-4-turbo...(gpt-4o-mi | 
| 2af80 |  6e 69 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 46 75 6c  | ni..........................;Ful | 
| 2afa0 |  6c 20 73 70 65 63 0a 20 20 20 3a 64 65 73 63 72    69 70 74 69 6f 6e 0a 20 20 20 5c 22 41 66 66 6f  | l.spec....:description....\"Affo | 
| 2afc0 |  72 64 61 62 6c 65 20 61 6e 64 20 69 6e 74 65 6c    6c 69 67 65 6e 74 20 73 6d 61 6c 6c 20 6d 6f 64  | rdable.and.intelligent.small.mod | 
| 2afe0 |  65 6c 20 66 6f 72 20 6c 69 67 68 74 77 65 69 67    68 74 20 74 61 73 6b 73 5c 22 0a 20 20 20 3a 63  | el.for.lightweight.tasks\"....:c | 
| 2b000 |  61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64    69 61 20 74 6f 6f 6c 20 6a 73 6f 6e 20 75 72 6c  | apabilities.(media.tool.json.url | 
| 2b020 |  29 0a 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73    0a 20 20 20 28 5c 22 69 6d 61 67 65 2f 6a 70 65  | )....:mime-types....(\"image/jpe | 
| 2b040 |  67 5c 22 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c    22 20 5c 22 69 6d 61 67 65 2f 67 69 66 5c 22 20  | g\".\"image/png\".\"image/gif\". | 
| 2b060 |  5c 22 69 6d 61 67 65 2f 77 65 62 70 5c 22 29 29    29 0a 0a 44 65 66 61 75 6c 74 73 20 74 6f 20 61  | \"image/webp\")))..Defaults.to.a | 
| 2b080 |  20 6c 69 73 74 20 6f 66 20 6d 6f 64 65 6c 73 20    73 75 70 70 6f 72 74 65 64 20 62 79 20 47 69 74  | .list.of.models.supported.by.Git | 
| 2b0a0 |  48 75 62 20 43 6f 70 69 6c 6f 74 2e 0a 0a 53 54    52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61  | Hub.Copilot...STREAM.is.a.boolea | 
| 2b0c0 |  6e 20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65    61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c  | n.to.toggle.streaming.responses, | 
| 2b0e0 |  20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c    73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f  | .defaults.to.false...PROTOCOL.(o | 
| 2b100 |  70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69    65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c  | ptional).specifies.the.protocol, | 
| 2b120 |  20 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c    74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70  | .https.by.default...ENDPOINT.(op | 
| 2b140 |  74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41    50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20  | tional).is.the.API.endpoint.for. | 
| 2b160 |  63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66    61 75 6c 74 73 20 74 6f 0a 5c 22 2f 63 68 61 74  | completions,.defaults.to.\"/chat | 
| 2b180 |  2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 5c 22 2e 0a    0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61  | /completions\"...HEADER.(optiona | 
| 2b1a0 |  6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 74 69    6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20  | l).is.for.additional.headers.to. | 
| 2b1c0 |  73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72    65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75  | send.with.each.request...It.shou | 
| 2b1e0 |  6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f    72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61  | ld.be.an.alist.or.a.function.tha | 
| 2b200 |  74 20 72 65 74 75 72 6e 73 20 61 6e 0a 61 6c 69    73 74 2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43  | t.returns.an.alist,.like:..((\"C | 
| 2b220 |  6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20    5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73  | ontent-Type\"...\"application/js | 
| 2b240 |  6f 6e 5c 22 29 29 0a 0a 44 65 66 61 75 6c 74 73    20 74 6f 20 68 65 61 64 65 72 73 20 72 65 71 75  | on\"))..Defaults.to.headers.requ | 
| 2b260 |  69 72 65 64 20 62 79 20 47 69 74 48 75 62 20 43    6f 70 69 6c 6f 74 2e 0a 0a 52 45 51 55 45 53 54  | ired.by.GitHub.Copilot...REQUEST | 
| 2b280 |  2d 50 41 52 41 4d 53 20 28 6f 70 74 69 6f 6e 61    6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f 66  | -PARAMS.(optional).is.a.plist.of | 
| 2b2a0 |  20 61 64 64 69 74 69 6f 6e 61 6c 20 48 54 54 50    20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65 74  | .additional.HTTP.request.paramet | 
| 2b2c0 |  65 72 73 20 28 61 73 20 70 6c 69 73 74 20 6b 65    79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20 73  | ers.(as.plist.keys).and.values.s | 
| 2b2e0 |  75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 20    41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65 20  | upported.by.the.API...Use.these. | 
| 2b300 |  74 6f 20 73 65 74 20 70 61 72 61 6d 65 74 65 72    73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f 65  | to.set.parameters.that.gptel.doe | 
| 2b320 |  73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 75 73    65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e 22  | s.not.provide.user.options.for." | 
| 2b340 |  0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64    65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28  | ...(declare.(indent.1))...(let.( | 
| 2b360 |  28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d    2d 6d 61 6b 65 2d 67 68 0a 20 20 20 20 20 20 20  | (backend.(gptel--make-gh........ | 
| 2b380 |  20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65    20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20  | ...........:name.name........... | 
| 2b3a0 |  20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f    73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........:host.host.............. | 
| 2b3c0 |  20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 61    64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .....:header.header............. | 
| 2b3e0 |  20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 28 67    70 74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f  | ......:models.(gptel--process-mo | 
| 2b400 |  64 65 6c 73 20 6d 6f 64 65 6c 73 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | dels.models)...................: | 
| 2b420 |  70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f    6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | protocol.protocol............... | 
| 2b440 |  20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e    64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20  | ....:endpoint.endpoint.......... | 
| 2b460 |  20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d    20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20  | .........:stream.stream......... | 
| 2b480 |  20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 65    73 74 2d 70 61 72 61 6d 73 20 72 65 71 75 65 73  | ..........:request-params.reques | 
| 2b4a0 |  74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c  | t-params...................:curl | 
| 2b4c0 |  2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -args.curl-args................. | 
| 2b4e0 |  20 20 3a 75 72 6c 20 28 63 6f 6e 63 61 74 20 70    72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f  | ..:url.(concat.protocol."://".ho | 
| 2b500 |  73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | st.endpoint)...................: | 
| 2b520 |  6d 61 63 68 69 6e 65 69 64 20 28 67 70 74 65 6c    2d 2d 67 68 2d 6d 61 63 68 69 6e 65 2d 69 64 29  | machineid.(gptel--gh-machine-id) | 
| 2b540 |  29 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61    6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70  | ))).....(setf.(alist-get.name.gp | 
| 2b560 |  74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65    6e 64 73 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71  | tel--known-backends.nil.nil.#'eq | 
| 2b580 |  75 61 6c 29 20 62 61 63 6b 65 6e 64 29 0a 20 20    20 20 62 61 63 6b 65 6e 64 29 29 0a 0a 28 70 72  | ual).backend).....backend))..(pr | 
| 2b5a0 |  6f 76 69 64 65 20 27 67 70 74 65 6c 2d 67 68 29    0a 3b 3b 3b 20 67 70 74 65 6c 2d 67 68 2e 65 6c  | ovide.'gptel-gh).;;;.gptel-gh.el | 
| 2b5c0 |  20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b 20 4c    6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a  | .ends.here..;;.Local.Variables:. | 
| 2b5e0 |  3b 3b 20 62 79 74 65 2d 63 6f 6d 70 69 6c 65 2d    77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74 20 64  | ;;.byte-compile-warnings:.(not.d | 
| 2b600 |  6f 63 73 74 72 69 6e 67 73 29 0a 3b 3b 20 45 6e    64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00  | ocstrings).;;.End:.............. | 
| 2b620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b660 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b680 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b6a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b6c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b6e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b700 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b720 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b7a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b7c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b7e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b800 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73  | gptel-0.9.8.5/gptel-integrations | 
| 2b820 |  2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .el............................. | 
| 2b840 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b860 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 2b880 |  30 30 33 31 31 30 34 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 35 36 30 35 00 20 30 00 00 00  | 0031104.00000000000.015605..0... | 
| 2b8a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b8c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b8e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b900 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 2b920 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 2b940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b9a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b9c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2b9e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ba00 |  3b 3b 3b 20 67 70 74 65 6c 2d 74 72 61 6e 73 69    65 6e 74 2e 65 6c 20 2d 2d 2d 20 49 6e 74 65 67  | ;;;.gptel-transient.el.---.Integ | 
| 2ba20 |  72 61 74 69 6f 6e 73 20 66 6f 72 20 67 70 74 65    6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62  | rations.for.gptel..-*-.lexical-b | 
| 2ba40 |  69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a    3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43 29  | inding:.t;.-*-..;;.Copyright.(C) | 
| 2ba60 |  20 32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43    68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b 20 41  | .2025..Karthik.Chikmagalur..;;.A | 
| 2ba80 |  75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43    68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 72 74  | uthor:.Karthik.Chikmagalur.<kart | 
| 2baa0 |  68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67    6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4b 65 79  | hikchikmagalur@gmail.com>.;;.Key | 
| 2bac0 |  77 6f 72 64 73 3a 20 63 6f 6e 76 65 6e 69 65 6e    63 65 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65  | words:.convenience..;;.SPDX-Lice | 
| 2bae0 |  6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20    47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c 61 74 65 72  | nse-Identifier:.GPL-3.0-or-later | 
| 2bb00 |  0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61    6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61  | ..;;.This.program.is.free.softwa | 
| 2bb20 |  72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69    73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f  | re;.you.can.redistribute.it.and/ | 
| 2bb40 |  6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20    75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20  | or.modify.;;.it.under.the.terms. | 
| 2bb60 |  6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72    61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73  | of.the.GNU.General.Public.Licens | 
| 2bb80 |  65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62    79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f  | e.as.published.by.;;.the.Free.So | 
| 2bba0 |  66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f    6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f  | ftware.Foundation,.either.versio | 
| 2bbc0 |  6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e    73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f  | n.3.of.the.License,.or.;;.(at.yo | 
| 2bbe0 |  75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c    61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b  | ur.option).any.later.version...; | 
| 2bc00 |  3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69    73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e  | ;.This.program.is.distributed.in | 
| 2bc20 |  20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69    74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c  | .the.hope.that.it.will.be.useful | 
| 2bc40 |  2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54    20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77  | ,.;;.but.WITHOUT.ANY.WARRANTY;.w | 
| 2bc60 |  69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20    69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79  | ithout.even.the.implied.warranty | 
| 2bc80 |  20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41    42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53  | .of.;;.MERCHANTABILITY.or.FITNES | 
| 2bca0 |  53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c    41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65  | S.FOR.A.PARTICULAR.PURPOSE...See | 
| 2bcc0 |  20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65    72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e  | .the.;;.GNU.General.Public.Licen | 
| 2bce0 |  73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61    69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f  | se.for.more.details...;;.You.sho | 
| 2bd00 |  75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65    64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  | uld.have.received.a.copy.of.the. | 
| 2bd20 |  47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c    69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c  | GNU.General.Public.License.;;.al | 
| 2bd40 |  6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72    6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20  | ong.with.this.program...If.not,. | 
| 2bd60 |  73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77    2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65  | see.<https://www.gnu.org/license | 
| 2bd80 |  73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e    74 61 72 79 3a 0a 0a 3b 3b 20 49 6e 74 65 67 72  | s/>...;;;.Commentary:..;;.Integr | 
| 2bda0 |  61 74 69 6f 6e 73 20 77 69 74 68 20 72 65 6c 61    74 65 64 20 70 61 63 6b 61 67 65 73 20 66 6f 72  | ations.with.related.packages.for | 
| 2bdc0 |  20 67 70 74 65 6c 2e 20 20 54 6f 20 75 73 65 20    74 68 65 73 65 2c 20 72 75 6e 0a 3b 3b 0a 3b 3b  | .gptel...To.use.these,.run.;;.;; | 
| 2bde0 |  20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c    2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 29 0a 3b  | .(require.'gptel-integrations).; | 
| 2be00 |  3b 0a 3b 3b 20 46 6f 72 20 4d 43 50 20 69 6e 74    65 67 72 61 74 69 6f 6e 3a 0a 3b 3b 20 2d 20 52  | ;.;;.For.MCP.integration:.;;.-.R | 
| 2be20 |  75 6e 20 4d 2d 78 20 60 67 70 74 65 6c 2d 6d 63    70 2d 63 6f 6e 6e 65 63 74 27 20 61 6e 64 20 4d  | un.M-x.`gptel-mcp-connect'.and.M | 
| 2be40 |  2d 78 20 60 67 70 74 65 6c 2d 6d 63 70 2d 64 69    73 63 6f 6e 6e 65 63 74 27 2c 20 4f 52 0a 3b 3b  | -x.`gptel-mcp-disconnect',.OR.;; | 
| 2be60 |  20 2d 20 55 73 65 20 67 70 74 65 6c 27 73 20 74    6f 6f 6c 73 20 6d 65 6e 75 2c 20 4d 2d 78 20 60  | .-.Use.gptel's.tools.menu,.M-x.` | 
| 2be80 |  67 70 74 65 6c 2d 74 6f 6f 6c 73 27 2c 20 4f 52    0a 3b 3b 20 2d 20 41 63 63 65 73 73 20 74 6f 6f  | gptel-tools',.OR.;;.-.Access.too | 
| 2bea0 |  6c 73 20 66 72 6f 6d 20 60 67 70 74 65 6c 2d 6d    65 6e 75 27 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a  | ls.from.`gptel-menu'..;;;.Code:. | 
| 2bec0 |  28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29    0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69  | (require.'gptel).(require.'cl-li | 
| 2bee0 |  62 29 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f    6d 70 69 6c 65 20 28 72 65 71 75 69 72 65 20 27  | b).(eval-when-compile.(require.' | 
| 2bf00 |  74 72 61 6e 73 69 65 6e 74 29 29 0a 0a 3b 3b 3b    3b 20 4d 43 50 20 69 6e 74 65 67 72 61 74 69 6f  | transient))..;;;;.MCP.integratio | 
| 2bf20 |  6e 20 2d 20 72 65 71 75 69 72 65 73 20 74 68 65    20 6d 63 70 20 70 61 63 6b 61 67 65 0a 28 64 65  | n.-.requires.the.mcp.package.(de | 
| 2bf40 |  63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d    63 70 2d 68 75 62 2d 67 65 74 2d 61 6c 6c 2d 74  | clare-function.mcp-hub-get-all-t | 
| 2bf60 |  6f 6f 6c 20 22 6d 63 70 2d 68 75 62 22 29 0a 28    64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e  | ool."mcp-hub").(declare-function | 
| 2bf80 |  20 6d 63 70 2d 68 75 62 2d 67 65 74 2d 73 65 72    76 65 72 73 20 22 6d 63 70 2d 68 75 62 22 29 0a  | .mcp-hub-get-servers."mcp-hub"). | 
| 2bfa0 |  28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f    6e 20 6d 63 70 2d 68 75 62 2d 73 74 61 72 74 2d  | (declare-function.mcp-hub-start- | 
| 2bfc0 |  61 6c 6c 2d 73 65 72 76 65 72 20 22 6d 63 70 2d    68 75 62 22 29 0a 28 64 65 63 6c 61 72 65 2d 66  | all-server."mcp-hub").(declare-f | 
| 2bfe0 |  75 6e 63 74 69 6f 6e 20 6d 63 70 2d 73 74 6f 70    2d 73 65 72 76 65 72 20 22 6d 63 70 22 29 0a 28  | unction.mcp-stop-server."mcp").( | 
| 2c000 |  64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e    20 6d 63 70 2d 68 75 62 20 22 6d 63 70 2d 68 75  | declare-function.mcp-hub."mcp-hu | 
| 2c020 |  62 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e    63 74 69 6f 6e 20 6d 63 70 2d 2d 73 74 61 74 75  | b").(declare-function.mcp--statu | 
| 2c040 |  73 20 22 6d 63 70 2d 68 75 62 22 29 0a 28 64 65    63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d  | s."mcp-hub").(declare-function.m | 
| 2c060 |  63 70 2d 2d 74 6f 6f 6c 73 20 22 6d 63 70 2d 68    75 62 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75  | cp--tools."mcp-hub").(declare-fu | 
| 2c080 |  6e 63 74 69 6f 6e 20 6d 63 70 2d 6d 61 6b 65 2d    74 65 78 74 2d 74 6f 6f 6c 20 22 6d 63 70 2d 68  | nction.mcp-make-text-tool."mcp-h | 
| 2c0a0 |  75 62 22 29 0a 28 64 65 66 76 61 72 20 6d 63 70    2d 68 75 62 2d 73 65 72 76 65 72 73 29 0a 28 64  | ub").(defvar.mcp-hub-servers).(d | 
| 2c0c0 |  65 66 76 61 72 20 6d 63 70 2d 73 65 72 76 65 72    2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 29 0a 0a 28  | efvar.mcp-server-connections)..( | 
| 2c0e0 |  64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 63 70 2d    63 6f 6e 6e 65 63 74 20 28 26 6f 70 74 69 6f 6e  | defun.gptel-mcp-connect.(&option | 
| 2c100 |  61 6c 20 73 65 72 76 65 72 73 20 73 65 72 76 65    72 2d 63 61 6c 6c 62 61 63 6b 20 69 6e 74 65 72  | al.servers.server-callback.inter | 
| 2c120 |  61 63 74 69 76 65 29 0a 20 20 22 41 64 64 20 67    70 74 65 6c 20 74 6f 6f 6c 73 20 66 72 6f 6d 20  | active)..."Add.gptel.tools.from. | 
| 2c140 |  4d 43 50 20 73 65 72 76 65 72 73 20 75 73 69 6e    67 20 74 68 65 20 6d 63 70 20 70 61 63 6b 61 67  | MCP.servers.using.the.mcp.packag | 
| 2c160 |  65 2e 0a 0a 4d 43 50 20 73 65 72 76 65 72 73 20    61 72 65 20 73 74 61 72 74 65 64 20 69 66 20 72  | e...MCP.servers.are.started.if.r | 
| 2c180 |  65 71 75 69 72 65 64 2e 20 20 53 45 52 56 45 52    53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 73  | equired...SERVERS.is.a.list.of.s | 
| 2c1a0 |  65 72 76 65 72 0a 6e 61 6d 65 73 20 28 73 74 72    69 6e 67 73 29 20 74 6f 20 63 6f 6e 6e 65 63 74  | erver.names.(strings).to.connect | 
| 2c1c0 |  20 74 6f 2e 20 20 49 66 20 6e 69 6c 2c 20 61 6c    6c 20 6b 6e 6f 77 6e 20 73 65 72 76 65 72 73 20  | .to...If.nil,.all.known.servers. | 
| 2c1e0 |  61 72 65 0a 63 6f 6e 73 69 64 65 72 65 64 2e 0a    0a 49 66 20 49 4e 54 45 52 41 43 54 49 56 45 20  | are.considered...If.INTERACTIVE. | 
| 2c200 |  69 73 20 6e 6f 6e 2d 6e 69 6c 20 28 6f 72 20 63    61 6c 6c 65 64 20 69 6e 74 65 72 61 63 74 69 76  | is.non-nil.(or.called.interactiv | 
| 2c220 |  65 6c 79 29 2c 20 67 75 69 64 65 20 74 68 65 20    75 73 65 72 0a 74 68 72 6f 75 67 68 20 73 65 74  | ely),.guide.the.user.through.set | 
| 2c240 |  74 69 6e 67 20 75 70 20 6d 63 70 2c 20 61 6e 64    20 71 75 65 72 79 20 66 6f 72 20 73 65 72 76 65  | ting.up.mcp,.and.query.for.serve | 
| 2c260 |  72 73 20 74 6f 20 72 65 74 72 69 65 76 65 20 74    6f 6f 6c 73 20 66 72 6f 6d 2e 0a 0a 43 61 6c 6c  | rs.to.retrieve.tools.from...Call | 
| 2c280 |  20 53 45 52 56 45 52 2d 43 41 4c 4c 42 41 43 4b    20 61 66 74 65 72 20 73 74 61 72 74 69 6e 67 20  | .SERVER-CALLBACK.after.starting. | 
| 2c2a0 |  4d 43 50 20 73 65 72 76 65 72 73 2e 22 0a 20 20    28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69  | MCP.servers."...(interactive.(li | 
| 2c2c0 |  73 74 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a 20    20 28 69 66 20 28 6c 6f 63 61 74 65 2d 6c 69 62  | st.nil.nil.t))...(if.(locate-lib | 
| 2c2e0 |  72 61 72 79 20 22 6d 63 70 2d 68 75 62 22 29 0a    20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 72  | rary."mcp-hub").......(unless.(r | 
| 2c300 |  65 71 75 69 72 65 20 27 6d 63 70 2d 68 75 62 20    6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 28  | equire.'mcp-hub.nil.t).........( | 
| 2c320 |  75 73 65 72 2d 65 72 72 6f 72 20 22 43 6f 75 6c    64 20 6e 6f 74 20 6c 6f 61 64 20 60 6d 63 70 2d  | user-error."Could.not.load.`mcp- | 
| 2c340 |  68 75 62 27 21 20 20 50 6c 65 61 73 65 20 69 6e    73 74 61 6c 6c 5c 0a 20 6f 72 20 63 6f 6e 66 69  | hub'!..Please.install\..or.confi | 
| 2c360 |  67 75 72 65 20 74 68 65 20 6d 63 70 20 70 61 63    6b 61 67 65 22 29 29 0a 20 20 20 20 28 75 73 65  | gure.the.mcp.package")).....(use | 
| 2c380 |  72 2d 65 72 72 6f 72 20 22 43 6f 75 6c 64 20 6e    6f 74 20 66 69 6e 64 20 6d 63 70 21 20 20 50 6c  | r-error."Could.not.find.mcp!..Pl | 
| 2c3a0 |  65 61 73 65 20 69 6e 73 74 61 6c 6c 20 6f 72 20    63 6f 6e 66 69 67 75 72 65 20 74 68 65 20 6d 63  | ease.install.or.configure.the.mc | 
| 2c3c0 |  70 20 70 61 63 6b 61 67 65 22 29 29 0a 20 20 28    69 66 20 28 6e 75 6c 6c 20 6d 63 70 2d 68 75 62  | p.package"))...(if.(null.mcp-hub | 
| 2c3e0 |  2d 73 65 72 76 65 72 73 29 0a 20 20 20 20 20 20    28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20  | -servers).......(user-error."No. | 
| 2c400 |  4d 43 50 20 73 65 72 76 65 72 73 20 61 76 61 69    6c 61 62 6c 65 21 20 20 50 6c 65 61 73 65 20 63  | MCP.servers.available!..Please.c | 
| 2c420 |  6f 6e 66 69 67 75 72 65 20 60 6d 63 70 2d 68 75    62 2d 73 65 72 76 65 72 73 27 22 29 0a 20 20 20  | onfigure.`mcp-hub-servers'").... | 
| 2c440 |  20 28 73 65 74 71 20 73 65 72 76 65 72 73 0a 20    20 20 20 20 20 20 20 20 20 28 69 66 20 73 65 72  | .(setq.servers...........(if.ser | 
| 2c460 |  76 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62  | vers...............(mapcar.(lamb | 
| 2c480 |  64 61 20 28 73 29 20 28 61 73 73 6f 63 20 73 20    6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72 73 29  | da.(s).(assoc.s.mcp-hub-servers) | 
| 2c4a0 |  29 20 73 65 72 76 65 72 73 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 6d 63 70 2d 68 75 62 2d 73  | ).servers).............mcp-hub-s | 
| 2c4c0 |  65 72 76 65 72 73 29 29 0a 20 20 20 20 28 6c 65    74 20 28 28 75 6e 72 65 67 69 73 74 65 72 65 64  | ervers)).....(let.((unregistered | 
| 2c4e0 |  2d 73 65 72 76 65 72 73 20 3b 41 76 61 69 6c 61    62 6c 65 20 73 65 72 76 65 72 73 20 6d 69 6e 75  | -servers.;Available.servers.minu | 
| 2c500 |  73 20 73 65 72 76 65 72 73 20 61 6c 72 65 61 64    79 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74  | s.servers.already.registered.wit | 
| 2c520 |  68 20 67 70 74 65 6c 0a 20 20 20 20 20 20 20 20    20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20  | h.gptel............(cl-loop.for. | 
| 2c540 |  73 65 72 76 65 72 20 69 6e 20 73 65 72 76 65 72    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | server.in.servers............... | 
| 2c560 |  20 20 20 20 20 20 77 69 74 68 20 72 65 67 69 73    74 65 72 65 64 2d 6e 61 6d 65 73 20 3d 0a 20 20  | ......with.registered-names.=... | 
| 2c580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28  | ..................(cl-loop.for.( | 
| 2c5a0 |  63 61 74 20 2e 20 5f 74 6f 6f 6c 73 29 20 69 6e    20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f  | cat..._tools).in.gptel--known-to | 
| 2c5c0 |  6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ols............................. | 
| 2c5e0 |  20 69 66 20 28 73 74 72 69 6e 67 2d 70 72 65 66    69 78 2d 70 20 22 6d 63 70 2d 22 20 63 61 74 29  | .if.(string-prefix-p."mcp-".cat) | 
| 2c600 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  | ..............................co | 
| 2c620 |  6c 6c 65 63 74 20 28 73 75 62 73 74 72 69 6e 67    20 63 61 74 20 34 29 29 0a 20 20 20 20 20 20 20  | llect.(substring.cat.4))........ | 
| 2c640 |  20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c    65 73 73 20 28 6d 65 6d 62 65 72 20 28 63 61 72  | .............unless.(member.(car | 
| 2c660 |  20 73 65 72 76 65 72 29 20 72 65 67 69 73 74 65    72 65 64 2d 6e 61 6d 65 73 29 0a 20 20 20 20 20  | .server).registered-names)...... | 
| 2c680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63    6f 6c 6c 65 63 74 20 73 65 72 76 65 72 29 29 29  | ...............collect.server))) | 
| 2c6a0 |  0a 20 20 20 20 20 20 28 69 66 20 75 6e 72 65 67    69 73 74 65 72 65 64 2d 73 65 72 76 65 72 73 0a  | .......(if.unregistered-servers. | 
| 2c6c0 |  20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20    28 28 73 65 72 76 65 72 73 0a 20 20 20 20 20 20  | ..........(let*.((servers....... | 
| 2c6e0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20    69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 20  | ............(if.interactive..... | 
| 2c700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6c 65 74 20 28 28 70 69 63 6b 73 0a 20  | ..................(let.((picks.. | 
| 2c720 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d  | ............................(com | 
| 2c740 |  70 6c 65 74 69 6e 67 2d 72 65 61 64 2d 6d 75 6c    74 69 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20  | pleting-read-multiple........... | 
| 2c760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 22 41 64 64 20 74 6f 6f 6c 73 20 66  | ...................."Add.tools.f | 
| 2c780 |  72 6f 6d 20 4d 43 50 20 73 65 72 76 65 72 73 20    28 73 65 70 61 72 61 74 65 20 77 69 74 68 20 5c  | rom.MCP.servers.(separate.with.\ | 
| 2c7a0 |  22 2c 5c 22 29 3a 20 22 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ",\"):."........................ | 
| 2c7c0 |  20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 28 22    41 4c 4c 22 29 20 75 6e 72 65 67 69 73 74 65 72  | .......(cons.'("ALL").unregister | 
| 2c7e0 |  65 64 2d 73 65 72 76 65 72 73 29 20 6e 69 6c 20    74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ed-servers).nil.t)))............ | 
| 2c800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66    20 28 6d 65 6d 62 65 72 20 22 41 4c 4c 22 20 70  | .............(if.(member."ALL".p | 
| 2c820 |  69 63 6b 73 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | icks)........................... | 
| 2c840 |  20 20 75 6e 72 65 67 69 73 74 65 72 65 64 2d 73    65 72 76 65 72 73 0a 20 20 20 20 20 20 20 20 20  | ..unregistered-servers.......... | 
| 2c860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61  | .................(mapcar.(lambda | 
| 2c880 |  20 28 73 29 20 28 61 73 73 6f 63 20 73 20 6d 63    70 2d 68 75 62 2d 73 65 72 76 65 72 73 29 29 20  | .(s).(assoc.s.mcp-hub-servers)). | 
| 2c8a0 |  70 69 63 6b 73 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 72  | picks))).....................unr | 
| 2c8c0 |  65 67 69 73 74 65 72 65 64 2d 73 65 72 76 65 72    73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | egistered-servers))............. | 
| 2c8e0 |  20 20 20 20 20 28 73 65 72 76 65 72 2d 61 63 74    69 76 65 2d 70 0a 20 20 20 20 20 20 20 20 20 20  | .....(server-active-p........... | 
| 2c900 |  20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20    28 73 65 72 76 65 72 29 20 28 67 65 74 68 61 73  | ........(lambda.(server).(gethas | 
| 2c920 |  68 20 28 63 61 72 20 73 65 72 76 65 72 29 20 6d    63 70 2d 73 65 72 76 65 72 2d 63 6f 6e 6e 65 63  | h.(car.server).mcp-server-connec | 
| 2c940 |  74 69 6f 6e 73 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 69 6e 61 63 74  | tions)))..................(inact | 
| 2c960 |  69 76 65 2d 73 65 72 76 65 72 73 20 28 63 6c 2d    72 65 6d 6f 76 65 2d 69 66 20 73 65 72 76 65 72  | ive-servers.(cl-remove-if.server | 
| 2c980 |  2d 61 63 74 69 76 65 2d 70 20 73 65 72 76 65 72    73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | -active-p.servers))............. | 
| 2c9a0 |  20 20 20 20 20 28 61 64 64 2d 61 6c 6c 2d 74 6f    6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .....(add-all-tools............. | 
| 2c9c0 |  20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26    6f 70 74 69 6f 6e 61 6c 20 73 65 72 76 65 72 2d  | ......(lambda.(&optional.server- | 
| 2c9e0 |  6e 61 6d 65 73 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 22 52 65 67 69  | names)....................."Regi | 
| 2ca00 |  73 74 65 72 20 61 6e 64 20 61 64 64 20 74 6f 6f    6c 73 20 66 72 6f 6d 20 73 65 72 76 65 72 73 2e  | ster.and.add.tools.from.servers. | 
| 2ca20 |  20 20 52 65 70 6f 72 74 20 66 61 69 6c 75 72 65    73 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ..Report.failures."............. | 
| 2ca40 |  20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74    6f 6f 6c 73 20 28 67 70 74 65 6c 2d 6d 63 70 2d  | ........(let.((tools.(gptel-mcp- | 
| 2ca60 |  2d 67 65 74 2d 74 6f 6f 6c 73 20 73 65 72 76 65    72 2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20  | -get-tools.server-names))....... | 
| 2ca80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6e 6f 77 2d 61 63 74 69 76 65 20  | ....................(now-active. | 
| 2caa0 |  28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f    74 20 73 65 72 76 65 72 2d 61 63 74 69 76 65 2d  | (cl-remove-if-not.server-active- | 
| 2cac0 |  70 20 6d 63 70 2d 68 75 62 2d 73 65 72 76 65 72    73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | p.mcp-hub-servers)))............ | 
| 2cae0 |  20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63    20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 20  | ...........(mapc.(lambda.(tool). | 
| 2cb00 |  28 61 70 70 6c 79 20 23 27 67 70 74 65 6c 2d 6d    61 6b 65 2d 74 6f 6f 6c 20 74 6f 6f 6c 29 29 20  | (apply.#'gptel-make-tool.tool)). | 
| 2cb20 |  74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70  | tools).......................(gp | 
| 2cb40 |  74 65 6c 2d 6d 63 70 2d 2d 61 63 74 69 76 61 74    65 2d 74 6f 6f 6c 73 20 74 6f 6f 6c 73 29 0a 20  | tel-mcp--activate-tools.tools).. | 
| 2cb60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28  | .....................(if-let*.(( | 
| 2cb80 |  66 61 69 6c 65 64 20 28 63 6c 2d 73 65 74 2d 64    69 66 66 65 72 65 6e 63 65 20 69 6e 61 63 74 69  | failed.(cl-set-difference.inacti | 
| 2cba0 |  76 65 2d 73 65 72 76 65 72 73 20 6e 6f 77 2d 61    63 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20  | ve-servers.now-active........... | 
| 2cbc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2cbe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 74 65 73 74 20 23 27 65 71 75 61 6c 29 29  | .................:test.#'equal)) | 
| 2cc00 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f  | )...........................(pro | 
| 2cc20 |  67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | gn.............................( | 
| 2cc40 |  6d 65 73 73 61 67 65 20 22 49 6e 61 63 74 69 76    65 2d 62 65 66 6f 72 65 3a 20 25 53 2c 20 4e 6f  | message."Inactive-before:.%S,.No | 
| 2cc60 |  77 2d 41 63 74 69 76 65 3a 20 25 53 22 20 69 6e    61 63 74 69 76 65 2d 73 65 72 76 65 72 73 20 6e  | w-Active:.%S".inactive-servers.n | 
| 2cc80 |  6f 77 2d 61 63 74 69 76 65 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ow-active)...................... | 
| 2cca0 |  20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20    28 73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d  | .......(message.(substitute-comm | 
| 2ccc0 |  61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | and-keys........................ | 
| 2cce0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22    25 64 2f 25 64 20 73 65 72 76 65 72 25 73 20 66  | ..............."%d/%d.server%s.f | 
| 2cd00 |  61 69 6c 65 64 20 74 6f 20 73 74 61 72 74 3a 20    25 73 2e 20 20 52 75 6e 20 5c 5c 5b 6d 63 70 2d  | ailed.to.start:.%s...Run.\\[mcp- | 
| 2cd20 |  68 75 62 5d 20 74 6f 20 69 6e 76 65 73 74 69 67    61 74 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20  | hub].to.investigate.").......... | 
| 2cd40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e  | ............................(len | 
| 2cd60 |  67 74 68 20 66 61 69 6c 65 64 29 20 28 6c 65 6e    67 74 68 20 69 6e 61 63 74 69 76 65 2d 73 65 72  | gth.failed).(length.inactive-ser | 
| 2cd80 |  76 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | vers)........................... | 
| 2cda0 |  20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28    3d 20 28 6c 65 6e 67 74 68 20 66 61 69 6c 65 64  | ...........(if.(=.(length.failed | 
| 2cdc0 |  29 20 31 29 20 22 22 20 22 73 22 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).1).""."s").................... | 
| 2cde0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 63  | ..................(mapconcat.#'c | 
| 2ce00 |  61 72 20 66 61 69 6c 65 64 20 22 2c 20 22 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ar.failed.",.")))............... | 
| 2ce20 |  20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28    28 61 64 64 65 64 20 28 6f 72 20 73 65 72 76 65  | ..........(let.((added.(or.serve | 
| 2ce40 |  72 2d 6e 61 6d 65 73 20 28 6d 61 70 63 61 72 20    23 27 63 61 72 20 6e 6f 77 2d 61 63 74 69 76 65  | r-names.(mapcar.#'car.now-active | 
| 2ce60 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ))))...........................( | 
| 2ce80 |  6d 65 73 73 61 67 65 20 22 41 64 64 65 64 20 25    64 20 74 6f 6f 6c 73 20 66 72 6f 6d 20 25 64 20  | message."Added.%d.tools.from.%d. | 
| 2cea0 |  4d 43 50 20 73 65 72 76 65 72 25 73 3a 20 25 73    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | MCP.server%s:.%s"............... | 
| 2cec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6c 65 6e 67 74 68 20 74 6f 6f  | .....................(length.too | 
| 2cee0 |  6c 73 29 20 28 6c 65 6e 67 74 68 20 61 64 64 65    64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ls).(length.added).............. | 
| 2cf00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 69 66 20 28 3d 20 28 6c 65  | ......................(if.(=.(le | 
| 2cf20 |  6e 67 74 68 20 61 64 64 65 64 29 20 31 29 20 22    22 20 22 73 22 29 0a 20 20 20 20 20 20 20 20 20  | ngth.added).1).""."s").......... | 
| 2cf40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f  | ..........................(mapco | 
| 2cf60 |  6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20    61 64 64 65 64 20 22 2c 20 22 29 29 29 29 0a 20  | ncat.#'identity.added.",.")))).. | 
| 2cf80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 77 68 65 6e 20 28 66 75 6e 63  | .....................(when.(func | 
| 2cfa0 |  74 69 6f 6e 70 20 73 65 72 76 65 72 2d 63 61 6c    6c 62 61 63 6b 29 20 28 66 75 6e 63 61 6c 6c 20  | tionp.server-callback).(funcall. | 
| 2cfc0 |  73 65 72 76 65 72 2d 63 61 6c 6c 62 61 63 6b 29    29 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20  | server-callback))))))........... | 
| 2cfe0 |  20 20 20 28 69 66 20 69 6e 61 63 74 69 76 65 2d    73 65 72 76 65 72 73 20 20 20 20 20 20 20 20 3b  | ...(if.inactive-servers........; | 
| 2d000 |  73 74 61 72 74 20 73 65 72 76 65 72 73 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d  | start.servers.................(m | 
| 2d020 |  63 70 2d 68 75 62 2d 73 74 61 72 74 2d 61 6c 6c    2d 73 65 72 76 65 72 0a 20 20 20 20 20 20 20 20  | cp-hub-start-all-server......... | 
| 2d040 |  20 20 20 20 20 20 20 20 20 61 64 64 2d 61 6c 6c    2d 74 6f 6f 6c 73 20 28 6d 61 70 63 61 72 20 23  | .........add-all-tools.(mapcar.# | 
| 2d060 |  27 63 61 72 20 69 6e 61 63 74 69 76 65 2d 73 65    72 76 65 72 73 29 29 0a 20 20 20 20 20 20 20 20  | 'car.inactive-servers))......... | 
| 2d080 |  20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 61    64 64 2d 61 6c 6c 2d 74 6f 6f 6c 73 20 28 6d 61  | ......(funcall.add-all-tools.(ma | 
| 2d0a0 |  70 63 61 72 20 23 27 63 61 72 20 73 65 72 76 65    72 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 28  | pcar.#'car.servers)))).........( | 
| 2d0c0 |  6d 65 73 73 61 67 65 20 22 41 6c 6c 20 4d 43 50    20 74 6f 6f 6c 73 20 61 72 65 20 61 6c 72 65 61  | message."All.MCP.tools.are.alrea | 
| 2d0e0 |  64 79 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20    67 70 74 65 6c 21 22 29 0a 20 20 20 20 20 20 20  | dy.available.to.gptel!")........ | 
| 2d100 |  20 28 77 68 65 6e 20 28 66 75 6e 63 74 69 6f 6e    70 20 73 65 72 76 65 72 2d 63 61 6c 6c 62 61 63  | .(when.(functionp.server-callbac | 
| 2d120 |  6b 29 20 28 66 75 6e 63 61 6c 6c 20 73 65 72 76    65 72 2d 63 61 6c 6c 62 61 63 6b 29 29 29 29 29  | k).(funcall.server-callback))))) | 
| 2d140 |  29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d    6d 63 70 2d 64 69 73 63 6f 6e 6e 65 63 74 20 28  | )..(defun.gptel-mcp-disconnect.( | 
| 2d160 |  26 6f 70 74 69 6f 6e 61 6c 20 73 65 72 76 65 72    73 20 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20  | &optional.servers.interactive).. | 
| 2d180 |  20 22 55 6e 72 65 67 69 73 74 65 72 20 67 70 74    65 6c 20 74 6f 6f 6c 73 20 70 72 6f 76 69 64 65  | ."Unregister.gptel.tools.provide | 
| 2d1a0 |  64 20 62 79 20 4d 43 50 20 73 65 72 76 65 72 73    20 75 73 69 6e 67 20 74 68 65 20 6d 63 70 20 70  | d.by.MCP.servers.using.the.mcp.p | 
| 2d1c0 |  61 63 6b 61 67 65 2e 0a 0a 53 45 52 56 45 52 53    20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 73 65  | ackage...SERVERS.is.a.list.of.se | 
| 2d1e0 |  72 76 65 72 20 6e 61 6d 65 73 20 28 73 74 72 69    6e 67 73 29 20 74 6f 20 64 69 73 63 6f 6e 6e 65  | rver.names.(strings).to.disconne | 
| 2d200 |  63 74 20 66 72 6f 6d 2e 0a 0a 49 66 20 49 4e 54    45 52 41 43 54 49 56 45 20 69 73 20 6e 6f 6e 2d  | ct.from...If.INTERACTIVE.is.non- | 
| 2d220 |  6e 69 6c 2c 20 71 75 65 72 79 20 74 68 65 20 75    73 65 72 20 61 62 6f 75 74 20 77 68 69 63 68 20  | nil,.query.the.user.about.which. | 
| 2d240 |  74 6f 6f 6c 73 20 74 6f 20 72 65 6d 6f 76 65 2e    22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65  | tools.to.remove."...(interactive | 
| 2d260 |  20 28 6c 69 73 74 20 6e 69 6c 20 74 29 29 0a 20    20 28 69 66 2d 6c 65 74 2a 20 28 28 6e 61 6d 65  | .(list.nil.t))...(if-let*.((name | 
| 2d280 |  73 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20  | s-alist..............(cl-loop... | 
| 2d2a0 |  20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20    28 63 61 74 65 67 6f 72 79 20 2e 20 5f 74 6f 6f  | ............for.(category..._too | 
| 2d2c0 |  6c 73 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e    6f 77 6e 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20  | ls).in.gptel--known-tools....... | 
| 2d2e0 |  20 20 20 20 20 20 20 20 69 66 20 28 61 6e 64 20    28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5e  | ........if.(and.(string-match."^ | 
| 2d300 |  6d 63 70 2d 5c 5c 28 2e 2a 5c 5c 29 22 20 63 61    74 65 67 6f 72 79 29 0a 20 20 20 20 20 20 20 20  | mcp-\\(.*\\)".category)......... | 
| 2d320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f    72 20 28 6e 75 6c 6c 20 73 65 72 76 65 72 73 29  | ..............(or.(null.servers) | 
| 2d340 |  20 3b 43 6f 6e 73 69 64 65 72 20 61 6c 6c 20 69    66 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20  | .;Consider.all.if.nil........... | 
| 2d360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6d 65 6d 62 65 72 20 28 6d 61 74 63 68 2d 73  | ................(member.(match-s | 
| 2d380 |  74 72 69 6e 67 20 31 20 63 61 74 65 67 6f 72 79    29 20 73 65 72 76 65 72 73 29 29 29 0a 20 20 20  | tring.1.category).servers))).... | 
| 2d3a0 |  20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65    63 74 20 28 63 6f 6e 73 20 28 6d 61 74 63 68 2d  | ...........collect.(cons.(match- | 
| 2d3c0 |  73 74 72 69 6e 67 20 31 20 63 61 74 65 67 6f 72    79 29 20 63 61 74 65 67 6f 72 79 29 29 29 29 0a  | string.1.category).category)))). | 
| 2d3e0 |  20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 6d    6f 76 65 2d 66 6e 20 28 6c 61 6d 62 64 61 20 28  | ......(let.((remove-fn.(lambda.( | 
| 2d400 |  63 61 74 2d 6e 61 6d 65 73 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | cat-names)...................... | 
| 2d420 |  20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d    74 6f 6f 6c 73 20 3b 52 65 6d 6f 76 65 20 66 72  | ....(setq.gptel-tools.;Remove.fr | 
| 2d440 |  6f 6d 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | om.gptel-tools.................. | 
| 2d460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63    6c 2d 64 65 6c 65 74 65 2d 69 66 20 28 6c 61 6d  | ..............(cl-delete-if.(lam | 
| 2d480 |  62 64 61 20 28 74 6f 6f 6c 29 20 28 6d 65 6d 62    65 72 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 63  | bda.(tool).(member.(gptel-tool-c | 
| 2d4a0 |  61 74 65 67 6f 72 79 20 74 6f 6f 6c 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ategory.tool)................... | 
| 2d4c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2d4e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74    2d 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 20 20  | .............cat-names))........ | 
| 2d500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2d520 |  20 20 20 20 20 20 67 70 74 65 6c 2d 74 6f 6f 6c    73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ......gptel-tools))............. | 
| 2d540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61    70 63 20 28 6c 61 6d 62 64 61 20 28 63 61 74 65  | .............(mapc.(lambda.(cate | 
| 2d560 |  67 6f 72 79 29 20 3b 52 65 6d 6f 76 65 20 66 72    6f 6d 20 72 65 67 69 73 74 72 79 0a 20 20 20 20  | gory).;Remove.from.registry..... | 
| 2d580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65  | .............................(se | 
| 2d5a0 |  74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 63 61    74 65 67 6f 72 79 20 67 70 74 65 6c 2d 2d 6b 6e  | tf.(alist-get.category.gptel--kn | 
| 2d5c0 |  6f 77 6e 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | own-tools....................... | 
| 2d5e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20  | ............................nil. | 
| 2d600 |  74 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.#'equal)...................... | 
| 2d620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20  | ..................nil))......... | 
| 2d640 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 63 61 74 2d 6e 61 6d 65 73  | .......................cat-names | 
| 2d660 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 28 69 66    20 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20  | )))).........(if.interactive.... | 
| 2d680 |  20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c    65 74 2a 20 28 28 73 65 72 76 65 72 2d 6e 61 6d  | .........(when-let*.((server-nam | 
| 2d6a0 |  65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d  | es..........................(com | 
| 2d6c0 |  70 6c 65 74 69 6e 67 2d 72 65 61 64 2d 6d 75 6c    74 69 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20  | pleting-read-multiple........... | 
| 2d6e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    22 52 65 6d 6f 76 65 20 4d 43 50 20 73 65 72 76  | ................"Remove.MCP.serv | 
| 2d700 |  65 72 20 74 6f 6f 6c 73 20 66 6f 72 20 28 73 65    70 61 72 61 74 65 20 77 69 74 68 20 5c 22 2c 5c  | er.tools.for.(separate.with.\",\ | 
| 2d720 |  22 29 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "):."........................... | 
| 2d740 |  28 63 6f 6e 73 20 27 28 22 41 4c 4c 22 20 2e 20    6e 69 6c 29 20 6e 61 6d 65 73 2d 61 6c 69 73 74  | (cons.'("ALL"...nil).names-alist | 
| 2d760 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20  | )...........................nil. | 
| 2d780 |  74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 77 68 65 6e 20 28 6d 65 6d 62 65 72  | t)))...............(when.(member | 
| 2d7a0 |  20 22 41 4c 4c 22 20 73 65 72 76 65 72 2d 6e 61    6d 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ."ALL".server-names)............ | 
| 2d7c0 |  20 20 20 20 20 28 73 65 74 71 20 73 65 72 76 65    72 2d 6e 61 6d 65 73 20 28 6d 61 70 63 61 72 20  | .....(setq.server-names.(mapcar. | 
| 2d7e0 |  23 27 63 61 72 20 6e 61 6d 65 73 2d 61 6c 69 73    74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | #'car.names-alist)))............ | 
| 2d800 |  20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 6d 6f    76 65 2d 66 6e 20 20 20 20 20 20 20 20 3b 72 65  | ...(funcall.remove-fn........;re | 
| 2d820 |  6d 6f 76 65 20 73 65 6c 65 63 74 65 64 20 74 6f    6f 6c 20 63 61 74 65 67 6f 72 69 65 73 0a 20 20  | move.selected.tool.categories... | 
| 2d840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61  | .....................(mapcar.(la | 
| 2d860 |  6d 62 64 61 20 28 73 29 20 28 63 64 72 20 28 61    73 73 6f 63 20 73 20 6e 61 6d 65 73 2d 61 6c 69  | mbda.(s).(cdr.(assoc.s.names-ali | 
| 2d880 |  73 74 29 29 29 20 73 65 72 76 65 72 2d 6e 61 6d    65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | st))).server-names))............ | 
| 2d8a0 |  20 20 20 28 69 66 20 28 79 2d 6f 72 2d 6e 2d 70    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...(if.(y-or-n-p................ | 
| 2d8c0 |  20 20 20 20 28 66 6f 72 6d 61 74 20 22 52 65 6d    6f 76 65 64 20 4d 43 50 20 74 6f 6f 6c 73 20 66  | ....(format."Removed.MCP.tools.f | 
| 2d8e0 |  72 6f 6d 20 25 64 20 73 65 72 76 65 72 25 73 2e    20 20 41 6c 73 6f 20 73 68 75 74 20 64 6f 77 6e  | rom.%d.server%s...Also.shut.down | 
| 2d900 |  20 4d 43 50 20 73 65 72 76 65 72 73 3f 22 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .MCP.servers?".................. | 
| 2d920 |  20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74    68 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 0a  | ..........(length.server-names). | 
| 2d940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28  | ...........................(if.( | 
| 2d960 |  3d 20 28 6c 65 6e 67 74 68 20 73 65 72 76 65 72    2d 6e 61 6d 65 73 29 20 31 29 20 22 22 20 22 73  | =.(length.server-names).1).""."s | 
| 2d980 |  22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 6d  | ")))...................(progn.(m | 
| 2d9a0 |  61 70 63 20 23 27 6d 63 70 2d 73 74 6f 70 2d 73    65 72 76 65 72 20 73 65 72 76 65 72 2d 6e 61 6d  | apc.#'mcp-stop-server.server-nam | 
| 2d9c0 |  65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65  | es)..........................(me | 
| 2d9e0 |  73 73 61 67 65 20 22 53 68 75 74 20 64 6f 77 6e    20 4d 43 50 20 73 65 72 76 65 72 73 3a 20 25 53  | ssage."Shut.down.MCP.servers:.%S | 
| 2da00 |  22 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ".server-names))................ | 
| 2da20 |  20 28 6d 65 73 73 61 67 65 20 22 52 65 6d 6f 76    65 64 20 4d 43 50 20 74 6f 6f 6c 73 20 66 6f 72  | .(message."Removed.MCP.tools.for | 
| 2da40 |  3a 20 25 53 22 20 73 65 72 76 65 72 2d 6e 61 6d    65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | :.%S".server-names)))........... | 
| 2da60 |  28 66 75 6e 63 61 6c 6c 20 72 65 6d 6f 76 65 2d    66 6e 20 28 6d 61 70 63 61 72 20 23 27 63 64 72  | (funcall.remove-fn.(mapcar.#'cdr | 
| 2da80 |  20 6e 61 6d 65 73 2d 61 6c 69 73 74 29 29 29 29    0a 20 20 20 20 3b 3b 20 4e 6f 20 4d 43 50 20 74  | .names-alist)))).....;;.No.MCP.t | 
| 2daa0 |  6f 6f 6c 73 2c 20 61 73 6b 20 74 6f 20 73 68 75    74 20 64 6f 77 6e 20 73 65 72 76 65 72 73 0a 20  | ools,.ask.to.shut.down.servers.. | 
| 2dac0 |  20 20 20 28 69 66 20 28 63 6c 2d 6c 6f 6f 70 0a    20 20 20 20 20 20 20 20 20 66 6f 72 20 76 20 62  | ...(if.(cl-loop..........for.v.b | 
| 2dae0 |  65 69 6e 67 20 74 68 65 20 68 61 73 68 2d 76 61    6c 75 65 73 20 6f 66 20 6d 63 70 2d 73 65 72 76  | eing.the.hash-values.of.mcp-serv | 
| 2db00 |  65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 20    20 20 20 20 20 20 20 20 6e 65 76 65 72 20 76 29  | er-connections..........never.v) | 
| 2db20 |  0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 69    6e 74 65 72 61 63 74 69 76 65 20 28 6d 65 73 73  | .........(when.interactive.(mess | 
| 2db40 |  61 67 65 20 22 4e 6f 20 4d 43 50 20 73 65 72 76    65 72 73 20 61 63 74 69 76 65 21 22 29 29 0a 20  | age."No.MCP.servers.active!")).. | 
| 2db60 |  20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28    6e 6f 74 20 69 6e 74 65 72 61 63 74 69 76 65 29  | .....(when.(or.(not.interactive) | 
| 2db80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 79 2d 6f 72 2d 6e 2d 70 20 22 4e 6f 20 4d  | .................(y-or-n-p."No.M | 
| 2dba0 |  43 50 20 74 6f 6f 6c 73 20 69 6e 20 67 70 74 65    6c 21 20 20 53 68 75 74 20 64 6f 77 6e 20 61 6c  | CP.tools.in.gptel!..Shut.down.al | 
| 2dbc0 |  6c 20 4d 43 50 20 73 65 72 76 65 72 73 3f 20 22    29 29 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69  | l.MCP.servers?.")).........(doli | 
| 2dbe0 |  73 74 20 28 73 65 72 76 65 72 20 6d 63 70 2d 68    75 62 2d 73 65 72 76 65 72 73 29 0a 20 20 20 20  | st.(server.mcp-hub-servers)..... | 
| 2dc00 |  20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74    68 61 73 68 20 28 63 61 72 20 73 65 72 76 65 72  | ......(when.(gethash.(car.server | 
| 2dc20 |  29 20 6d 63 70 2d 73 65 72 76 65 72 2d 63 6f 6e    6e 65 63 74 69 6f 6e 73 29 0a 20 20 20 20 20 20  | ).mcp-server-connections)....... | 
| 2dc40 |  20 20 20 20 20 20 28 6d 63 70 2d 73 74 6f 70 2d    73 65 72 76 65 72 20 28 63 61 72 20 73 65 72 76  | ......(mcp-stop-server.(car.serv | 
| 2dc60 |  65 72 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66    75 6e 20 67 70 74 65 6c 2d 6d 63 70 2d 2d 67 65  | er))))))))..(defun.gptel-mcp--ge | 
| 2dc80 |  74 2d 74 6f 6f 6c 73 20 28 26 6f 70 74 69 6f 6e    61 6c 20 73 65 72 76 65 72 2d 6e 61 6d 65 73 29  | t-tools.(&optional.server-names) | 
| 2dca0 |  0a 20 20 22 52 65 74 75 72 6e 20 74 6f 6f 6c 73    20 66 72 6f 6d 20 72 75 6e 6e 69 6e 67 20 4d 43  | ..."Return.tools.from.running.MC | 
| 2dcc0 |  50 20 73 65 72 76 65 72 73 2e 0a 0a 53 45 52 56    45 52 2d 4e 41 4d 45 53 20 69 73 20 61 20 6c 69  | P.servers...SERVER-NAMES.is.a.li | 
| 2dce0 |  73 74 20 6f 66 20 73 65 72 76 65 72 20 6e 61 6d    65 73 20 74 6f 20 61 64 64 20 74 6f 6f 6c 73 20  | st.of.server.names.to.add.tools. | 
| 2dd00 |  66 72 6f 6d 2e 20 20 41 64 64 20 74 6f 6f 6c 73    0a 66 72 6f 6d 20 61 6c 6c 20 63 6f 6e 6e 65 63  | from...Add.tools.from.all.connec | 
| 2dd20 |  74 65 64 20 73 65 72 76 65 72 73 20 69 66 20 69    74 20 69 73 20 6e 69 6c 2e 22 0a 20 20 28 75 6e  | ted.servers.if.it.is.nil."...(un | 
| 2dd40 |  6c 65 73 73 20 73 65 72 76 65 72 2d 6e 61 6d 65    73 0a 20 20 20 20 28 73 65 74 71 20 73 65 72 76  | less.server-names.....(setq.serv | 
| 2dd60 |  65 72 2d 6e 61 6d 65 73 20 28 68 61 73 68 2d 74    61 62 6c 65 2d 6b 65 79 73 20 6d 63 70 2d 73 65  | er-names.(hash-table-keys.mcp-se | 
| 2dd80 |  72 76 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 73    29 29 29 0a 20 20 28 6c 65 74 20 28 28 73 65 72  | rver-connections)))...(let.((ser | 
| 2dda0 |  76 65 72 73 20 28 6d 61 70 63 61 72 20 28 6c 61    6d 62 64 61 20 28 6e 29 20 28 67 65 74 68 61 73  | vers.(mapcar.(lambda.(n).(gethas | 
| 2ddc0 |  68 20 6e 20 6d 63 70 2d 73 65 72 76 65 72 2d 63    6f 6e 6e 65 63 74 69 6f 6e 73 29 29 0a 20 20 20  | h.n.mcp-server-connections)).... | 
| 2dde0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 73 65 72 76 65 72 2d 6e 61 6d  | ......................server-nam | 
| 2de00 |  65 73 29 29 29 0a 20 20 20 20 28 63 6c 2d 6d 61    70 63 61 6e 0a 20 20 20 20 20 28 6c 61 6d 62 64  | es))).....(cl-mapcan......(lambd | 
| 2de20 |  61 20 28 6e 61 6d 65 20 73 65 72 76 65 72 29 0a    20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e  | a.(name.server)........(when.(an | 
| 2de40 |  64 20 73 65 72 76 65 72 20 28 65 71 75 61 6c 20    28 6d 63 70 2d 2d 73 74 61 74 75 73 20 73 65 72  | d.server.(equal.(mcp--status.ser | 
| 2de60 |  76 65 72 29 20 27 63 6f 6e 6e 65 63 74 65 64 29    29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e  | ver).'connected))..........(when | 
| 2de80 |  2d 6c 65 74 2a 20 28 28 74 6f 6f 6c 73 20 28 6d    63 70 2d 2d 74 6f 6f 6c 73 20 73 65 72 76 65 72  | -let*.((tools.(mcp--tools.server | 
| 2dea0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 6e 61  | ))......................(tool-na | 
| 2dec0 |  6d 65 73 20 28 6d 61 70 63 61 72 20 23 27 28 6c    61 6d 62 64 61 20 28 74 6f 6f 6c 29 20 28 70 6c  | mes.(mapcar.#'(lambda.(tool).(pl | 
| 2dee0 |  69 73 74 2d 67 65 74 20 74 6f 6f 6c 20 3a 6e 61    6d 65 29 29 20 74 6f 6f 6c 73 29 29 29 0a 20 20  | ist-get.tool.:name)).tools)))... | 
| 2df00 |  20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72    20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 6e  | .........(mapcar.(lambda.(tool-n | 
| 2df20 |  61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | ame)......................(plist | 
| 2df40 |  2d 70 75 74 20 28 6d 63 70 2d 6d 61 6b 65 2d 74    65 78 74 2d 74 6f 6f 6c 20 6e 61 6d 65 20 74 6f  | -put.(mcp-make-text-tool.name.to | 
| 2df60 |  6f 6c 2d 6e 61 6d 65 20 74 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ol-name.t)...................... | 
| 2df80 |  20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65    67 6f 72 79 20 28 66 6f 72 6d 61 74 20 22 6d 63  | ...........:category.(format."mc | 
| 2dfa0 |  70 2d 25 73 22 20 6e 61 6d 65 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | p-%s".name)))................... | 
| 2dfc0 |  20 74 6f 6f 6c 2d 6e 61 6d 65 73 29 29 29 29 0a    20 20 20 20 20 73 65 72 76 65 72 2d 6e 61 6d 65  | .tool-names))))......server-name | 
| 2dfe0 |  73 20 73 65 72 76 65 72 73 29 29 29 0a 0a 28 64    65 66 75 6e 20 67 70 74 65 6c 2d 6d 63 70 2d 2d  | s.servers)))..(defun.gptel-mcp-- | 
| 2e000 |  61 63 74 69 76 61 74 65 2d 74 6f 6f 6c 73 20 28    26 6f 70 74 69 6f 6e 61 6c 20 74 6f 6f 6c 73 29  | activate-tools.(&optional.tools) | 
| 2e020 |  0a 20 20 22 41 63 74 69 76 61 74 65 20 54 4f 4f    4c 53 20 6f 72 20 61 6c 6c 20 4d 43 50 20 74 6f  | ..."Activate.TOOLS.or.all.MCP.to | 
| 2e040 |  6f 6c 73 20 69 6e 20 63 75 72 72 65 6e 74 20 67    70 74 65 6c 20 73 65 73 73 69 6f 6e 2e 22 0a 20  | ols.in.current.gptel.session.".. | 
| 2e060 |  20 28 75 6e 6c 65 73 73 20 74 6f 6f 6c 73 20 28    73 65 74 71 20 74 6f 6f 6c 73 20 28 67 70 74 65  | .(unless.tools.(setq.tools.(gpte | 
| 2e080 |  6c 2d 6d 63 70 2d 2d 67 65 74 2d 74 6f 6f 6c 73    29 29 29 0a 20 20 28 64 6f 6c 69 73 74 20 28 74  | l-mcp--get-tools)))...(dolist.(t | 
| 2e0a0 |  6f 6f 6c 20 74 6f 6f 6c 73 29 0a 20 20 20 20 28    63 6c 2d 70 75 73 68 6e 65 77 20 28 67 70 74 65  | ool.tools).....(cl-pushnew.(gpte | 
| 2e0c0 |  6c 2d 67 65 74 2d 74 6f 6f 6c 20 28 6c 69 73 74    20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c  | l-get-tool.(list.(plist-get.tool | 
| 2e0e0 |  20 3a 63 61 74 65 67 6f 72 79 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .:category)..................... | 
| 2e100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f  | ..................(plist-get.too | 
| 2e120 |  6c 20 3a 6e 61 6d 65 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c  | l.:name))).................gptel | 
| 2e140 |  2d 74 6f 6f 6c 73 29 29 29 0a 0a 28 77 69 74 68    2d 65 76 61 6c 2d 61 66 74 65 72 2d 6c 6f 61 64  | -tools)))..(with-eval-after-load | 
| 2e160 |  20 27 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e    74 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 64  | .'gptel-transient...(transient-d | 
| 2e180 |  65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74    65 6c 2d 2d 73 75 66 66 69 78 2d 6d 63 70 2d 63  | efine-suffix.gptel--suffix-mcp-c | 
| 2e1a0 |  6f 6e 6e 65 63 74 20 28 29 0a 20 20 20 20 22 52    65 67 69 73 74 65 72 20 74 6f 6f 6c 73 20 70 72  | onnect.()....."Register.tools.pr | 
| 2e1c0 |  6f 76 69 64 65 64 20 62 79 20 4d 43 50 20 73 65    72 76 65 72 73 2e 22 0a 20 20 20 20 3a 6b 65 79  | ovided.by.MCP.servers.".....:key | 
| 2e1e0 |  20 22 4d 2b 22 0a 20 20 20 20 3a 64 65 73 63 72    69 70 74 69 6f 6e 20 22 41 64 64 20 4d 43 50 20  | ."M+".....:description."Add.MCP. | 
| 2e200 |  73 65 72 76 65 72 20 74 6f 6f 6c 73 22 0a 20 20    20 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 0a 20  | server.tools".....:transient.t.. | 
| 2e220 |  20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29    0a 20 20 20 20 3b 3b 20 67 70 74 65 6c 2d 74 6f  | ...(interactive).....;;.gptel-to | 
| 2e240 |  6f 6c 73 20 73 74 6f 72 65 73 20 69 74 73 20 73    74 61 74 65 20 69 6e 20 69 74 73 20 73 63 6f 70  | ols.stores.its.state.in.its.scop | 
| 2e260 |  65 20 73 6c 6f 74 2e 20 20 52 65 74 61 69 6e 20    74 68 65 20 73 63 6f 70 65 20 62 75 74 0a 20 20  | e.slot...Retain.the.scope.but... | 
| 2e280 |  20 20 3b 3b 20 75 70 64 61 74 65 20 69 74 20 77    69 74 68 20 74 68 65 20 6e 65 77 6c 79 20 73 65  | ..;;.update.it.with.the.newly.se | 
| 2e2a0 |  6c 65 63 74 65 64 20 74 6f 6f 6c 73 2e 20 20 54    68 65 6e 20 73 65 74 20 75 70 20 67 70 74 65 6c  | lected.tools...Then.set.up.gptel | 
| 2e2c0 |  2d 74 6f 6f 6c 73 2e 0a 20 20 20 20 28 63 6f 6e    64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 0a  | -tools......(condition-case.err. | 
| 2e2e0 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d    63 70 2d 63 6f 6e 6e 65 63 74 0a 20 20 20 20 20  | ........(gptel-mcp-connect...... | 
| 2e300 |  20 20 20 20 6e 69 6c 20 28 6c 61 6d 62 64 61 20    28 29 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28  | ....nil.(lambda.().(when-let*.(( | 
| 2e320 |  74 72 61 6e 73 69 65 6e 74 2d 2d 70 72 65 66 69    78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | transient--prefix).............. | 
| 2e340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 28 65 71 20 28 6f 72 65 66 20 74 72 61  | ..................((eq.(oref.tra | 
| 2e360 |  6e 73 69 65 6e 74 2d 2d 70 72 65 66 69 78 20 63    6f 6d 6d 61 6e 64 29 0a 20 20 20 20 20 20 20 20  | nsient--prefix.command)......... | 
| 2e380 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74  | ............................'gpt | 
| 2e3a0 |  65 6c 2d 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | el-tools)))..................... | 
| 2e3c0 |  20 28 6c 65 74 20 28 28 73 74 61 74 65 20 28 74    72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 20 27  | .(let.((state.(transient-scope.' | 
| 2e3e0 |  67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | gptel-tools))).................. | 
| 2e400 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74    20 73 74 61 74 65 20 3a 74 6f 6f 6c 73 0a 20 20  | ......(plist-put.state.:tools... | 
| 2e420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2e440 |  28 64 65 6c 65 74 65 2d 64 75 70 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (delete-dups.................... | 
| 2e460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6e 63 6f 6e 63 20 28 6d 61 70 63 61 72 20 28  | ................(nconc.(mapcar.( | 
| 2e480 |  6c 61 6d 62 64 61 20 28 74 6f 6f 6c 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lambda.(tool)................... | 
| 2e4a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2e4c0 |  20 20 28 6c 69 73 74 20 28 67 70 74 65 6c 2d 74    6f 6f 6c 2d 63 61 74 65 67 6f 72 79 20 74 6f 6f  | ..(list.(gptel-tool-category.too | 
| 2e4e0 |  6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l).............................. | 
| 2e500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70  | .............................(gp | 
| 2e520 |  74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f    6f 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | tel-tool-name.tool)))........... | 
| 2e540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2e560 |  20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 74 6f    6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ........gptel-tools)............ | 
| 2e580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| 2e5a0 |  70 6c 69 73 74 2d 67 65 74 20 73 74 61 74 65 20    3a 74 6f 6f 6c 73 29 29 29 29 0a 20 20 20 20 20  | plist-get.state.:tools))))...... | 
| 2e5c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74  | ..................(transient-set | 
| 2e5e0 |  75 70 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73 20    6e 69 6c 20 6e 69 6c 20 3a 73 63 6f 70 65 20 73  | up.'gptel-tools.nil.nil.:scope.s | 
| 2e600 |  74 61 74 65 29 29 29 29 0a 20 20 20 20 20 20 20    20 20 74 29 0a 20 20 20 20 20 20 28 75 73 65 72  | tate))))..........t).......(user | 
| 2e620 |  2d 65 72 72 6f 72 20 28 6d 65 73 73 61 67 65 20    22 25 73 22 20 28 63 61 64 72 20 65 72 72 29 29  | -error.(message."%s".(cadr.err)) | 
| 2e640 |  29 29 29 0a 0a 20 20 28 74 72 61 6e 73 69 65 6e    74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20  | )))....(transient-define-suffix. | 
| 2e660 |  67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 6d 63    70 2d 64 69 73 63 6f 6e 6e 65 63 74 20 28 29 0a  | gptel--suffix-mcp-disconnect.(). | 
| 2e680 |  20 20 20 20 22 52 65 6d 6f 76 65 20 74 6f 6f 6c    73 20 70 72 6f 76 69 64 65 64 20 62 79 20 4d 43  | ...."Remove.tools.provided.by.MC | 
| 2e6a0 |  50 20 73 65 72 76 65 72 73 20 66 72 6f 6d 20 67    70 74 65 6c 2e 22 0a 20 20 20 20 3a 6b 65 79 20  | P.servers.from.gptel.".....:key. | 
| 2e6c0 |  22 4d 2d 22 0a 20 20 20 20 3a 64 65 73 63 72 69    70 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 29  | "M-".....:description.(lambda.() | 
| 2e6e0 |  20 28 69 66 20 28 63 6c 2d 73 6f 6d 65 20 28 6c    61 6d 62 64 61 20 28 63 61 74 29 20 28 73 74 72  | .(if.(cl-some.(lambda.(cat).(str | 
| 2e700 |  69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 6d 63    70 2d 22 20 63 61 74 29 29 0a 20 20 20 20 20 20  | ing-match-p."^mcp-".cat))....... | 
| 2e720 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d  | ..............................(m | 
| 2e740 |  61 70 2d 6b 65 79 73 20 67 70 74 65 6c 2d 2d 6b    6e 6f 77 6e 2d 74 6f 6f 6c 73 29 29 0a 20 20 20  | ap-keys.gptel--known-tools)).... | 
| 2e760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 22 52 65 6d 6f 76 65 20  | ........................"Remove. | 
| 2e780 |  4d 43 50 20 73 65 72 76 65 72 20 74 6f 6f 6c 73    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | MCP.server.tools"............... | 
| 2e7a0 |  20 20 20 20 20 20 20 20 20 20 20 22 53 68 75 74    20 64 6f 77 6e 20 4d 43 50 20 73 65 72 76 65 72  | ..........."Shut.down.MCP.server | 
| 2e7c0 |  73 22 29 29 0a 20 20 20 20 3a 74 72 61 6e 73 69    65 6e 74 20 74 0a 20 20 20 20 3a 69 6e 61 70 74  | s")).....:transient.t.....:inapt | 
| 2e7e0 |  2d 69 66 0a 20 20 20 20 28 6c 61 6d 62 64 61 20    28 29 20 28 6f 72 20 28 6e 6f 74 20 28 62 6f 75  | -if.....(lambda.().(or.(not.(bou | 
| 2e800 |  6e 64 70 20 27 6d 63 70 2d 68 75 62 2d 73 65 72    76 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20  | ndp.'mcp-hub-servers)).......... | 
| 2e820 |  20 20 20 20 20 28 6e 75 6c 6c 20 6d 63 70 2d 68    75 62 2d 73 65 72 76 65 72 73 29 0a 20 20 20 20  | .....(null.mcp-hub-servers)..... | 
| 2e840 |  20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f    6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........(cl-loop.............. | 
| 2e860 |  20 20 66 6f 72 20 76 20 62 65 69 6e 67 20 74 68    65 20 68 61 73 68 2d 76 61 6c 75 65 73 20 6f 66  | ..for.v.being.the.hash-values.of | 
| 2e880 |  20 6d 63 70 2d 73 65 72 76 65 72 2d 63 6f 6e 6e    65 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20  | .mcp-server-connections......... | 
| 2e8a0 |  20 20 20 20 20 20 20 6e 65 76 65 72 20 76 29 29    29 0a 20 20 20 20 28 69 6e 74 65 72 61 63 74 69  | .......never.v))).....(interacti | 
| 2e8c0 |  76 65 29 0a 20 20 20 20 28 63 61 6c 6c 2d 69 6e    74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70  | ve).....(call-interactively.#'gp | 
| 2e8e0 |  74 65 6c 2d 6d 63 70 2d 64 69 73 63 6f 6e 6e 65    63 74 29 0a 20 20 20 20 3b 3b 20 67 70 74 65 6c  | tel-mcp-disconnect).....;;.gptel | 
| 2e900 |  2d 74 6f 6f 6c 73 20 73 74 6f 72 65 73 20 69 74    73 20 73 74 61 74 65 20 69 6e 20 69 74 73 20 73  | -tools.stores.its.state.in.its.s | 
| 2e920 |  63 6f 70 65 20 73 6c 6f 74 2e 20 20 52 65 74 61    69 6e 20 74 68 65 20 73 63 6f 70 65 20 62 75 74  | cope.slot...Retain.the.scope.but | 
| 2e940 |  0a 20 20 20 20 3b 3b 20 72 65 6d 6f 76 65 20 74    6f 6f 6c 73 20 66 72 6f 6d 20 69 74 20 74 68 61  | .....;;.remove.tools.from.it.tha | 
| 2e960 |  74 20 6e 6f 20 6c 6f 6e 67 65 72 20 65 78 69 73    74 2c 20 74 68 65 6e 20 73 65 74 20 75 70 20 67  | t.no.longer.exist,.then.set.up.g | 
| 2e980 |  70 74 65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 28    63 6c 2d 6c 6f 6f 70 20 77 69 74 68 20 73 74 61  | ptel-tools.....(cl-loop.with.sta | 
| 2e9a0 |  74 65 20 3d 20 28 74 72 61 6e 73 69 65 6e 74 2d    73 63 6f 70 65 20 27 67 70 74 65 6c 2d 74 6f 6f  | te.=.(transient-scope.'gptel-too | 
| 2e9c0 |  6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 77 69 74 68 20 74 6f 6f 6c 73 20 3d 20 28 70  | ls)..............with.tools.=.(p | 
| 2e9e0 |  6c 69 73 74 2d 67 65 74 20 73 74 61 74 65 20 3a    74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20  | list-get.state.:tools).......... | 
| 2ea00 |  20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 73 70 65    63 20 69 6e 20 74 6f 6f 6c 73 0a 20 20 20 20 20  | ....for.tool-spec.in.tools...... | 
| 2ea20 |  20 20 20 20 20 20 20 20 69 66 20 28 6d 61 70 2d    6e 65 73 74 65 64 2d 65 6c 74 20 67 70 74 65 6c  | ........if.(map-nested-elt.gptel | 
| 2ea40 |  2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f 6c 73 20 74 6f    6f 6c 2d 73 70 65 63 29 0a 20 20 20 20 20 20 20  | --known-tools.tool-spec)........ | 
| 2ea60 |  20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 74 6f    6f 6c 2d 73 70 65 63 20 69 6e 74 6f 20 76 61 6c  | ......collect.tool-spec.into.val | 
| 2ea80 |  69 64 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 64 6f  | id-tools..............finally.do | 
| 2eaa0 |  20 28 70 6c 69 73 74 2d 70 75 74 20 73 74 61 74    65 20 3a 74 6f 6f 6c 73 20 76 61 6c 69 64 2d 74  | .(plist-put.state.:tools.valid-t | 
| 2eac0 |  6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65  | ools)..............(transient-se | 
| 2eae0 |  74 75 70 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73    20 6e 69 6c 20 6e 69 6c 20 3a 73 63 6f 70 65 20  | tup.'gptel-tools.nil.nil.:scope. | 
| 2eb00 |  73 74 61 74 65 29 29 29 0a 0a 20 20 28 74 72 61    6e 73 69 65 6e 74 2d 72 65 6d 6f 76 65 2d 73 75  | state)))....(transient-remove-su | 
| 2eb20 |  66 66 69 78 20 27 67 70 74 65 6c 2d 74 6f 6f 6c    73 20 27 28 30 20 32 29 29 0a 20 20 28 74 72 61  | ffix.'gptel-tools.'(0.2))...(tra | 
| 2eb40 |  6e 73 69 65 6e 74 2d 61 70 70 65 6e 64 2d 73 75    66 66 69 78 20 27 67 70 74 65 6c 2d 74 6f 6f 6c  | nsient-append-suffix.'gptel-tool | 
| 2eb60 |  73 20 27 28 30 20 2d 31 29 0a 20 20 20 20 5b 22    22 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73  | s.'(0.-1).....[""......(gptel--s | 
| 2eb80 |  75 66 66 69 78 2d 6d 63 70 2d 63 6f 6e 6e 65 63    74 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d  | uffix-mcp-connect)......(gptel-- | 
| 2eba0 |  73 75 66 66 69 78 2d 6d 63 70 2d 64 69 73 63 6f    6e 6e 65 63 74 29 5d 29 29 0a 0a 28 70 72 6f 76  | suffix-mcp-disconnect)]))..(prov | 
| 2ebc0 |  69 64 65 20 27 67 70 74 65 6c 2d 69 6e 74 65 67    72 61 74 69 6f 6e 73 29 0a 3b 3b 3b 20 67 70 74  | ide.'gptel-integrations).;;;.gpt | 
| 2ebe0 |  65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73 2e    65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b  | el-integrations.el.ends.here..;; | 
| 2ec00 |  20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73    3a 0a 3b 3b 20 62 79 74 65 2d 63 6f 6d 70 69 6c  | .Local.Variables:.;;.byte-compil | 
| 2ec20 |  65 2d 77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74    20 6e 6f 72 75 6e 74 69 6d 65 29 0a 3b 3b 20 45  | e-warnings:.(not.noruntime).;;.E | 
| 2ec40 |  6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | nd:............................. | 
| 2ec60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ec80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2eca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ecc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ece0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ed00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ed20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ed40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ed60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ed80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2eda0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2edc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ede0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ee00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2e 65 6c 00 00 00 00 00 00 00 00 00 00  | gptel-0.9.8.5/gptel.el.......... | 
| 2ee20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ee40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ee60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 2ee80 |  30 35 30 30 37 33 31 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 31 31 30 00 20 30 00 00 00  | 0500731.00000000000.013110..0... | 
| 2eea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2eec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2eee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ef00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 2ef20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 2ef40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ef60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2ef80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2efa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2efc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2efe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2f000 |  3b 3b 3b 20 67 70 74 65 6c 2e 65 6c 20 2d 2d 2d    20 49 6e 74 65 72 61 63 74 20 77 69 74 68 20 43  | ;;;.gptel.el.---.Interact.with.C | 
| 2f020 |  68 61 74 47 50 54 20 6f 72 20 6f 74 68 65 72 20    4c 4c 4d 73 20 20 20 20 20 2d 2a 2d 20 6c 65 78  | hatGPT.or.other.LLMs.....-*-.lex | 
| 2f040 |  69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 3b    20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67  | ical-binding:.t;.-*-..;;.Copyrig | 
| 2f060 |  68 74 20 28 43 29 20 32 30 32 33 2d 32 30 32 35    20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61  | ht.(C).2023-2025..Karthik.Chikma | 
| 2f080 |  67 61 6c 75 72 0a 0a 3b 3b 20 41 75 74 68 6f 72    3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61  | galur..;;.Author:.Karthik.Chikma | 
| 2f0a0 |  67 61 6c 75 72 20 3c 6b 61 72 74 68 69 6b 2e 63    68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c  | galur.<karthik.chikmagalur@gmail | 
| 2f0c0 |  2e 63 6f 6d 3e 0a 3b 3b 20 56 65 72 73 69 6f 6e    3a 20 30 2e 39 2e 38 2e 35 0a 3b 3b 20 50 61 63  | .com>.;;.Version:.0.9.8.5.;;.Pac | 
| 2f0e0 |  6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28    28 65 6d 61 63 73 20 22 32 37 2e 31 22 29 20 28  | kage-Requires:.((emacs."27.1").( | 
| 2f100 |  74 72 61 6e 73 69 65 6e 74 20 22 30 2e 37 2e 34    22 29 20 28 63 6f 6d 70 61 74 20 22 32 39 2e 31  | transient."0.7.4").(compat."29.1 | 
| 2f120 |  2e 34 2e 31 22 29 29 0a 3b 3b 20 4b 65 79 77 6f    72 64 73 3a 20 63 6f 6e 76 65 6e 69 65 6e 63 65  | .4.1")).;;.Keywords:.convenience | 
| 2f140 |  2c 20 74 6f 6f 6c 73 0a 3b 3b 20 55 52 4c 3a 20    68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63  | ,.tools.;;.URL:.https://github.c | 
| 2f160 |  6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 74 65    6c 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65 6e  | om/karthink/gptel..;;.SPDX-Licen | 
| 2f180 |  73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 47    50 4c 2d 33 2e 30 2d 6f 72 2d 6c 61 74 65 72 0a  | se-Identifier:.GPL-3.0-or-later. | 
| 2f1a0 |  0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d    20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72  | .;;.This.program.is.free.softwar | 
| 2f1c0 |  65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73    74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f  | e;.you.can.redistribute.it.and/o | 
| 2f1e0 |  72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75    6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f  | r.modify.;;.it.under.the.terms.o | 
| 2f200 |  66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61    6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65  | f.the.GNU.General.Public.License | 
| 2f220 |  20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79    0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66  | .as.published.by.;;.the.Free.Sof | 
| 2f240 |  74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e    2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e  | tware.Foundation,.either.version | 
| 2f260 |  20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73    65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75  | .3.of.the.License,.or.;;.(at.you | 
| 2f280 |  72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61    74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b  | r.option).any.later.version...;; | 
| 2f2a0 |  20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73    20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20  | .This.program.is.distributed.in. | 
| 2f2c0 |  74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74    20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c  | the.hope.that.it.will.be.useful, | 
| 2f2e0 |  0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20    41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69  | .;;.but.WITHOUT.ANY.WARRANTY;.wi | 
| 2f300 |  74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69    6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20  | thout.even.the.implied.warranty. | 
| 2f320 |  6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42    49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53  | of.;;.MERCHANTABILITY.or.FITNESS | 
| 2f340 |  20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41    52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20  | .FOR.A.PARTICULAR.PURPOSE...See. | 
| 2f360 |  74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72    61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73  | the.;;.GNU.General.Public.Licens | 
| 2f380 |  65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69    6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75  | e.for.more.details...;;.You.shou | 
| 2f3a0 |  6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64    20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47  | ld.have.received.a.copy.of.the.G | 
| 2f3c0 |  4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69    63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f  | NU.General.Public.License.;;.alo | 
| 2f3e0 |  6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f    67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73  | ng.with.this.program...If.not,.s | 
| 2f400 |  65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e    67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73  | ee.<https://www.gnu.org/licenses | 
| 2f420 |  2f 3e 2e 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c    65 20 69 73 20 4e 4f 54 20 70 61 72 74 20 6f 66  | />...;;.This.file.is.NOT.part.of | 
| 2f440 |  20 47 4e 55 20 45 6d 61 63 73 2e 0a 0a 3b 3b 3b    20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b  | .GNU.Emacs...;;;.Commentary:..;; | 
| 2f460 |  20 67 70 74 65 6c 20 69 73 20 61 20 73 69 6d 70    6c 65 20 4c 61 72 67 65 20 4c 61 6e 67 75 61 67  | .gptel.is.a.simple.Large.Languag | 
| 2f480 |  65 20 4d 6f 64 65 6c 20 63 68 61 74 20 63 6c 69    65 6e 74 2c 20 77 69 74 68 20 73 75 70 70 6f 72  | e.Model.chat.client,.with.suppor | 
| 2f4a0 |  74 20 66 6f 72 20 6d 75 6c 74 69 70 6c 65 0a 3b    3b 20 6d 6f 64 65 6c 73 20 61 6e 64 20 62 61 63  | t.for.multiple.;;.models.and.bac | 
| 2f4c0 |  6b 65 6e 64 73 2e 0a 3b 3b 0a 3b 3b 20 49 74 20    77 6f 72 6b 73 20 69 6e 20 74 68 65 20 73 70 69  | kends..;;.;;.It.works.in.the.spi | 
| 2f4e0 |  72 69 74 20 6f 66 20 45 6d 61 63 73 2c 20 61 76    61 69 6c 61 62 6c 65 20 61 74 20 61 6e 79 20 74  | rit.of.Emacs,.available.at.any.t | 
| 2f500 |  69 6d 65 20 61 6e 64 20 69 6e 20 61 6e 79 20 62    75 66 66 65 72 2e 0a 3b 3b 0a 3b 3b 20 67 70 74  | ime.and.in.any.buffer..;;.;;.gpt | 
| 2f520 |  65 6c 20 73 75 70 70 6f 72 74 73 3a 0a 3b 3b 0a    3b 3b 20 2d 20 54 68 65 20 73 65 72 76 69 63 65  | el.supports:.;;.;;.-.The.service | 
| 2f540 |  73 20 43 68 61 74 47 50 54 2c 20 41 7a 75 72 65    2c 20 47 65 6d 69 6e 69 2c 20 41 6e 74 68 72 6f  | s.ChatGPT,.Azure,.Gemini,.Anthro | 
| 2f560 |  70 69 63 20 41 49 2c 20 54 6f 67 65 74 68 65 72    2e 61 69 2c 20 50 65 72 70 6c 65 78 69 74 79 2c  | pic.AI,.Together.ai,.Perplexity, | 
| 2f580 |  0a 3b 3b 20 20 20 41 6e 79 73 63 61 6c 65 2c 20    4f 70 65 6e 52 6f 75 74 65 72 2c 20 47 72 6f 71  | .;;...Anyscale,.OpenRouter,.Groq | 
| 2f5a0 |  2c 20 50 72 69 76 61 74 65 47 50 54 2c 20 44 65    65 70 53 65 65 6b 2c 20 43 65 72 65 62 72 61 73  | ,.PrivateGPT,.DeepSeek,.Cerebras | 
| 2f5c0 |  2c 20 47 69 74 68 75 62 20 4d 6f 64 65 6c 73 2c    0a 3b 3b 20 20 20 47 69 74 48 75 62 20 43 6f 70  | ,.Github.Models,.;;...GitHub.Cop | 
| 2f5e0 |  69 6c 6f 74 20 63 68 61 74 2c 20 41 57 53 20 42    65 64 72 6f 63 6b 2c 20 4e 6f 76 69 74 61 20 41  | ilot.chat,.AWS.Bedrock,.Novita.A | 
| 2f600 |  49 2c 20 78 41 49 2c 20 53 61 6d 62 61 6e 6f 76    61 2c 20 4d 69 73 74 72 61 6c 20 4c 65 0a 3b 3b  | I,.xAI,.Sambanova,.Mistral.Le.;; | 
| 2f620 |  20 20 20 43 68 61 74 20 61 6e 64 20 4b 61 67 69    20 28 46 61 73 74 47 50 54 20 26 20 53 75 6d 6d  | ...Chat.and.Kagi.(FastGPT.&.Summ | 
| 2f640 |  61 72 69 7a 65 72 29 2e 0a 3b 3b 20 2d 20 4c 6f    63 61 6c 20 6d 6f 64 65 6c 73 20 76 69 61 20 4f  | arizer)..;;.-.Local.models.via.O | 
| 2f660 |  6c 6c 61 6d 61 2c 20 4c 6c 61 6d 61 2e 63 70 70    2c 20 4c 6c 61 6d 61 66 69 6c 65 73 20 6f 72 20  | llama,.Llama.cpp,.Llamafiles.or. | 
| 2f680 |  47 50 54 34 41 6c 6c 0a 3b 3b 0a 3b 3b 20 41 64    64 69 74 69 6f 6e 61 6c 6c 79 2c 20 61 6e 79 20  | GPT4All.;;.;;.Additionally,.any. | 
| 2f6a0 |  4c 4c 4d 20 73 65 72 76 69 63 65 20 28 6c 6f 63    61 6c 20 6f 72 20 72 65 6d 6f 74 65 29 20 74 68  | LLM.service.(local.or.remote).th | 
| 2f6c0 |  61 74 20 70 72 6f 76 69 64 65 73 20 61 6e 0a 3b    3b 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69  | at.provides.an.;;.OpenAI-compati | 
| 2f6e0 |  62 6c 65 20 41 50 49 20 69 73 20 73 75 70 70 6f    72 74 65 64 2e 0a 3b 3b 0a 3b 3b 20 46 65 61 74  | ble.API.is.supported..;;.;;.Feat | 
| 2f700 |  75 72 65 73 3a 0a 3b 3b 0a 3b 3b 20 2d 20 49 74    e2 80 99 73 20 61 73 79 6e 63 20 61 6e 64 20 66  | ures:.;;.;;.-.It...s.async.and.f | 
| 2f720 |  61 73 74 2c 20 73 74 72 65 61 6d 73 20 72 65 73    70 6f 6e 73 65 73 2e 0a 3b 3b 20 2d 20 49 6e 74  | ast,.streams.responses..;;.-.Int | 
| 2f740 |  65 72 61 63 74 20 77 69 74 68 20 4c 4c 4d 73 20    66 72 6f 6d 20 61 6e 79 77 68 65 72 65 20 69 6e  | eract.with.LLMs.from.anywhere.in | 
| 2f760 |  20 45 6d 61 63 73 20 28 61 6e 79 20 62 75 66 66    65 72 2c 20 73 68 65 6c 6c 2c 20 6d 69 6e 69 62  | .Emacs.(any.buffer,.shell,.minib | 
| 2f780 |  75 66 66 65 72 2c 0a 3b 3b 20 20 20 77 68 65 72    65 76 65 72 29 2e 0a 3b 3b 20 2d 20 4c 4c 4d 20  | uffer,.;;...wherever)..;;.-.LLM. | 
| 2f7a0 |  72 65 73 70 6f 6e 73 65 73 20 61 72 65 20 69 6e    20 4d 61 72 6b 64 6f 77 6e 20 6f 72 20 4f 72 67  | responses.are.in.Markdown.or.Org | 
| 2f7c0 |  20 6d 61 72 6b 75 70 2e 0a 3b 3b 20 2d 20 53 75    70 70 6f 72 74 73 20 63 6f 6e 76 65 72 73 61 74  | .markup..;;.-.Supports.conversat | 
| 2f7e0 |  69 6f 6e 73 20 61 6e 64 20 6d 75 6c 74 69 70 6c    65 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 65  | ions.and.multiple.independent.se | 
| 2f800 |  73 73 69 6f 6e 73 2e 0a 3b 3b 20 2d 20 53 75 70    70 6f 72 74 73 20 74 6f 6f 6c 2d 75 73 65 20 74  | ssions..;;.-.Supports.tool-use.t | 
| 2f820 |  6f 20 65 71 75 69 70 20 4c 4c 4d 73 20 77 69 74    68 20 61 67 65 6e 74 69 63 20 63 61 70 61 62 69  | o.equip.LLMs.with.agentic.capabi | 
| 2f840 |  6c 69 74 69 65 73 2e 0a 3b 3b 20 2d 20 53 75 70    70 6f 72 74 73 20 4d 6f 64 65 6c 20 43 6f 6e 74  | lities..;;.-.Supports.Model.Cont | 
| 2f860 |  65 78 74 20 50 72 6f 74 6f 63 6f 6c 20 28 4d 43    50 29 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 75  | ext.Protocol.(MCP).integration.u | 
| 2f880 |  73 69 6e 67 20 74 68 65 20 6d 63 70 2e 65 6c 20    70 61 63 6b 61 67 65 2e 0a 3b 3b 20 2d 20 53 75  | sing.the.mcp.el.package..;;.-.Su | 
| 2f8a0 |  70 70 6f 72 74 73 20 6d 75 6c 74 69 2d 6d 6f 64    61 6c 20 6d 6f 64 65 6c 73 20 28 73 65 6e 64 20  | pports.multi-modal.models.(send. | 
| 2f8c0 |  69 6d 61 67 65 73 2c 20 64 6f 63 75 6d 65 6e 74    73 29 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74  | images,.documents)..;;.-.Support | 
| 2f8e0 |  73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f    6e 74 65 6e 74 20 69 6e 20 4c 4c 4d 20 72 65 73  | s."reasoning".content.in.LLM.res | 
| 2f900 |  70 6f 6e 73 65 73 2e 0a 3b 3b 20 2d 20 53 61 76    65 20 63 68 61 74 73 20 61 73 20 72 65 67 75 6c  | ponses..;;.-.Save.chats.as.regul | 
| 2f920 |  61 72 20 4d 61 72 6b 64 6f 77 6e 2f 4f 72 67 2f    54 65 78 74 20 66 69 6c 65 73 20 61 6e 64 20 72  | ar.Markdown/Org/Text.files.and.r | 
| 2f940 |  65 73 75 6d 65 20 74 68 65 6d 20 6c 61 74 65 72    2e 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 67  | esume.them.later..;;.-.You.can.g | 
| 2f960 |  6f 20 62 61 63 6b 20 61 6e 64 20 65 64 69 74 20    79 6f 75 72 20 70 72 65 76 69 6f 75 73 20 70 72  | o.back.and.edit.your.previous.pr | 
| 2f980 |  6f 6d 70 74 73 20 6f 72 20 4c 4c 4d 20 72 65 73    70 6f 6e 73 65 73 20 77 68 65 6e 0a 3b 3b 20 20  | ompts.or.LLM.responses.when.;;.. | 
| 2f9a0 |  20 63 6f 6e 74 69 6e 75 69 6e 67 20 61 20 63 6f    6e 76 65 72 73 61 74 69 6f 6e 2e 20 20 54 68 65  | .continuing.a.conversation...The | 
| 2f9c0 |  73 65 20 77 69 6c 6c 20 62 65 20 66 65 64 20 62    61 63 6b 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c  | se.will.be.fed.back.to.the.model | 
| 2f9e0 |  2e 0a 3b 3b 20 2d 20 52 65 64 69 72 65 63 74 20    70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70  | ..;;.-.Redirect.prompts.and.resp | 
| 2fa00 |  6f 6e 73 65 73 20 65 61 73 69 6c 79 0a 3b 3b 20    2d 20 52 65 77 72 69 74 65 2c 20 72 65 66 61 63  | onses.easily.;;.-.Rewrite,.refac | 
| 2fa20 |  74 6f 72 20 6f 72 20 66 69 6c 6c 20 69 6e 20 72    65 67 69 6f 6e 73 20 69 6e 20 62 75 66 66 65 72  | tor.or.fill.in.regions.in.buffer | 
| 2fa40 |  73 2e 0a 3b 3b 20 2d 20 57 72 69 74 65 20 79 6f    75 72 20 6f 77 6e 20 63 6f 6d 6d 61 6e 64 73 20  | s..;;.-.Write.your.own.commands. | 
| 2fa60 |  66 6f 72 20 63 75 73 74 6f 6d 20 74 61 73 6b 73    20 77 69 74 68 20 61 20 73 69 6d 70 6c 65 20 41  | for.custom.tasks.with.a.simple.A | 
| 2fa80 |  50 49 2e 0a 3b 3b 0a 3b 3b 20 52 65 71 75 69 72    65 6d 65 6e 74 73 20 66 6f 72 20 43 68 61 74 47  | PI..;;.;;.Requirements.for.ChatG | 
| 2faa0 |  50 54 2c 20 41 7a 75 72 65 2c 20 47 65 6d 69 6e    69 20 6f 72 20 4b 61 67 69 3a 0a 3b 3b 0a 3b 3b  | PT,.Azure,.Gemini.or.Kagi:.;;.;; | 
| 2fac0 |  20 2d 20 59 6f 75 20 6e 65 65 64 20 61 6e 20 61    70 70 72 6f 70 72 69 61 74 65 20 41 50 49 20 6b  | .-.You.need.an.appropriate.API.k | 
| 2fae0 |  65 79 2e 20 20 53 65 74 20 74 68 65 20 76 61 72    69 61 62 6c 65 20 60 67 70 74 65 6c 2d 61 70 69  | ey...Set.the.variable.`gptel-api | 
| 2fb00 |  2d 6b 65 79 27 20 74 6f 20 74 68 65 0a 3b 3b 20    20 20 6b 65 79 20 6f 72 20 74 6f 20 61 20 66 75  | -key'.to.the.;;...key.or.to.a.fu | 
| 2fb20 |  6e 63 74 69 6f 6e 20 6f 66 20 6e 6f 20 61 72 67    75 6d 65 6e 74 73 20 74 68 61 74 20 72 65 74 75  | nction.of.no.arguments.that.retu | 
| 2fb40 |  72 6e 73 20 74 68 65 20 6b 65 79 2e 20 20 28 49    74 20 74 72 69 65 73 20 74 6f 0a 3b 3b 20 20 20  | rns.the.key...(It.tries.to.;;... | 
| 2fb60 |  75 73 65 20 60 61 75 74 68 2d 73 6f 75 72 63 65    27 20 62 79 20 64 65 66 61 75 6c 74 29 0a 3b 3b  | use.`auth-source'.by.default).;; | 
| 2fb80 |  0a 3b 3b 20 43 68 61 74 47 50 54 20 69 73 20 63    6f 6e 66 69 67 75 72 65 64 20 6f 75 74 20 6f 66  | .;;.ChatGPT.is.configured.out.of | 
| 2fba0 |  20 74 68 65 20 62 6f 78 2e 20 20 46 6f 72 20 74    68 65 20 6f 74 68 65 72 20 73 6f 75 72 63 65 73  | .the.box...For.the.other.sources | 
| 2fbc0 |  3a 0a 3b 3b 0a 3b 3b 20 2d 20 46 6f 72 20 41 7a    75 72 65 3a 20 64 65 66 69 6e 65 20 61 20 67 70  | :.;;.;;.-.For.Azure:.define.a.gp | 
| 2fbe0 |  74 65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68    20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a 75  | tel-backend.with.`gptel-make-azu | 
| 2fc00 |  72 65 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a    3b 3b 20 2d 20 46 6f 72 20 47 65 6d 69 6e 69 3a  | re',.which.see..;;.-.For.Gemini: | 
| 2fc20 |  20 64 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d    62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70  | .define.a.gptel-backend.with.`gp | 
| 2fc40 |  74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 27    2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20  | tel-make-gemini',.which.see..;;. | 
| 2fc60 |  2d 20 46 6f 72 20 41 6e 74 68 72 6f 70 69 63 20    28 43 6c 61 75 64 65 29 3a 20 64 65 66 69 6e 65  | -.For.Anthropic.(Claude):.define | 
| 2fc80 |  20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64    20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b  | .a.gptel-backend.with.`gptel-mak | 
| 2fca0 |  65 2d 61 6e 74 68 72 6f 70 69 63 27 2c 0a 3b 3b    20 20 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b  | e-anthropic',.;;...which.see..;; | 
| 2fcc0 |  20 2d 20 46 6f 72 20 54 6f 67 65 74 68 65 72 2e    61 69 2c 20 41 6e 79 73 63 61 6c 65 2c 20 47 72  | .-.For.Together.ai,.Anyscale,.Gr | 
| 2fce0 |  6f 71 2c 20 4f 70 65 6e 52 6f 75 74 65 72 2c 20    44 65 65 70 53 65 65 6b 2c 20 43 65 72 65 62 72  | oq,.OpenRouter,.DeepSeek,.Cerebr | 
| 2fd00 |  61 73 20 6f 72 0a 3b 3b 20 20 20 47 69 74 68 75    62 20 4d 6f 64 65 6c 73 3a 20 64 65 66 69 6e 65  | as.or.;;...Github.Models:.define | 
| 2fd20 |  20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64    20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b  | .a.gptel-backend.with.`gptel-mak | 
| 2fd40 |  65 2d 6f 70 65 6e 61 69 27 2c 20 77 68 69 63 68    20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 50  | e-openai',.which.see..;;.-.For.P | 
| 2fd60 |  72 69 76 61 74 65 47 50 54 3a 20 64 65 66 69 6e    65 20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68  | rivateGPT:.define.a.backend.with | 
| 2fd80 |  20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 72 69    76 61 74 65 67 70 74 27 2c 20 77 68 69 63 68 20  | .`gptel-make-privategpt',.which. | 
| 2fda0 |  73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 50 65    72 70 6c 65 78 69 74 79 3a 20 64 65 66 69 6e 65  | see..;;.-.For.Perplexity:.define | 
| 2fdc0 |  20 61 20 62 61 63 6b 65 6e 64 20 77 69 74 68 20    60 67 70 74 65 6c 2d 6d 61 6b 65 2d 70 65 72 70  | .a.backend.with.`gptel-make-perp | 
| 2fde0 |  6c 65 78 69 74 79 27 2c 20 77 68 69 63 68 20 73    65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 44 65 65  | lexity',.which.see..;;.-.For.Dee | 
| 2fe00 |  70 73 65 65 6b 3a 20 64 65 66 69 6e 65 20 61 20    62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70  | pseek:.define.a.backend.with.`gp | 
| 2fe20 |  74 65 6c 2d 6d 61 6b 65 2d 64 65 65 70 73 65 65    6b 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b  | tel-make-deepseek',.which.see..; | 
| 2fe40 |  3b 20 2d 20 46 6f 72 20 4b 61 67 69 3a 20 64 65    66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63  | ;.-.For.Kagi:.define.a.gptel-bac | 
| 2fe60 |  6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c    2d 6d 61 6b 65 2d 6b 61 67 69 27 2c 20 77 68 69  | kend.with.`gptel-make-kagi',.whi | 
| 2fe80 |  63 68 20 73 65 65 2e 0a 3b 3b 0a 3b 3b 20 46 6f    72 20 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 75  | ch.see..;;.;;.For.local.models.u | 
| 2fea0 |  73 69 6e 67 20 4f 6c 6c 61 6d 61 2c 20 4c 6c 61    6d 61 2e 63 70 70 20 6f 72 20 47 50 54 34 41 6c  | sing.Ollama,.Llama.cpp.or.GPT4Al | 
| 2fec0 |  6c 3a 0a 3b 3b 0a 3b 3b 20 2d 20 54 68 65 20 6d    6f 64 65 6c 20 68 61 73 20 74 6f 20 62 65 20 72  | l:.;;.;;.-.The.model.has.to.be.r | 
| 2fee0 |  75 6e 6e 69 6e 67 20 6f 6e 20 61 6e 20 61 63 63    65 73 73 69 62 6c 65 20 61 64 64 72 65 73 73 20  | unning.on.an.accessible.address. | 
| 2ff00 |  28 6f 72 20 6c 6f 63 61 6c 68 6f 73 74 29 0a 3b    3b 20 2d 20 44 65 66 69 6e 65 20 61 20 67 70 74  | (or.localhost).;;.-.Define.a.gpt | 
| 2ff20 |  65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 20    60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61  | el-backend.with.`gptel-make-olla | 
| 2ff40 |  6d 61 27 20 6f 72 20 60 67 70 74 65 6c 2d 6d 61    6b 65 2d 67 70 74 34 61 6c 6c 27 2c 0a 3b 3b 20  | ma'.or.`gptel-make-gpt4all',.;;. | 
| 2ff60 |  20 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20    2d 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 72 20 4c  | ..which.see..;;.-.Llama.cpp.or.L | 
| 2ff80 |  6c 61 6d 61 66 69 6c 65 73 3a 20 44 65 66 69 6e    65 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e  | lamafiles:.Define.a.gptel-backen | 
| 2ffa0 |  64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61    6b 65 2d 6f 70 65 6e 61 69 27 2e 0a 3b 3b 0a 3b  | d.with.`gptel-make-openai'..;;.; | 
| 2ffc0 |  3b 20 43 6f 6e 73 75 6c 74 20 74 68 65 20 70 61    63 6b 61 67 65 20 52 45 41 44 4d 45 20 66 6f 72  | ;.Consult.the.package.README.for | 
| 2ffe0 |  20 65 78 61 6d 70 6c 65 73 20 61 6e 64 20 6d 6f    72 65 20 68 65 6c 70 20 77 69 74 68 20 63 6f 6e  | .examples.and.more.help.with.con | 
| 30000 |  66 69 67 75 72 69 6e 67 0a 3b 3b 20 62 61 63 6b    65 6e 64 73 2e 0a 3b 3b 0a 3b 3b 20 55 73 61 67  | figuring.;;.backends..;;.;;.Usag | 
| 30020 |  65 3a 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 63    61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61 6e  | e:.;;.;;.gptel.can.be.used.in.an | 
| 30040 |  79 20 62 75 66 66 65 72 20 6f 72 20 69 6e 20 61    20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20  | y.buffer.or.in.a.dedicated.chat. | 
| 30060 |  62 75 66 66 65 72 2e 20 20 54 68 65 0a 3b 3b 20    69 6e 74 65 72 61 63 74 69 6f 6e 20 6d 6f 64 65  | buffer...The.;;.interaction.mode | 
| 30080 |  6c 20 69 73 20 73 69 6d 70 6c 65 3a 20 54 79 70    65 20 69 6e 20 61 20 71 75 65 72 79 20 61 6e 64  | l.is.simple:.Type.in.a.query.and | 
| 300a0 |  20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 77 69    6c 6c 20 62 65 0a 3b 3b 20 69 6e 73 65 72 74 65  | .the.response.will.be.;;.inserte | 
| 300c0 |  64 20 62 65 6c 6f 77 2e 20 20 59 6f 75 20 63 61    6e 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63  | d.below...You.can.continue.the.c | 
| 300e0 |  6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 79 20 74    79 70 69 6e 67 20 62 65 6c 6f 77 20 74 68 65 0a  | onversation.by.typing.below.the. | 
| 30100 |  3b 3b 20 72 65 73 70 6f 6e 73 65 2e 0a 3b 3b 0a    3b 3b 20 54 6f 20 75 73 65 20 74 68 69 73 20 69  | ;;.response..;;.;;.To.use.this.i | 
| 30120 |  6e 20 61 6e 79 20 62 75 66 66 65 72 3a 0a 3b 3b    0a 3b 3b 20 2d 20 43 61 6c 6c 20 60 67 70 74 65  | n.any.buffer:.;;.;;.-.Call.`gpte | 
| 30140 |  6c 2d 73 65 6e 64 27 20 74 6f 20 73 65 6e 64 20    74 68 65 20 62 75 66 66 65 72 27 73 20 74 65 78  | l-send'.to.send.the.buffer's.tex | 
| 30160 |  74 20 75 70 20 74 6f 20 74 68 65 20 63 75 72 73    6f 72 2e 20 20 53 65 6c 65 63 74 20 61 0a 3b 3b  | t.up.to.the.cursor...Select.a.;; | 
| 30180 |  20 20 20 72 65 67 69 6f 6e 20 74 6f 20 73 65 6e    64 20 6f 6e 6c 79 20 74 68 65 20 72 65 67 69 6f  | ...region.to.send.only.the.regio | 
| 301a0 |  6e 2e 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 63    61 6e 20 73 65 6c 65 63 74 20 70 72 65 76 69 6f  | n..;;.;;.-.You.can.select.previo | 
| 301c0 |  75 73 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72    65 73 70 6f 6e 73 65 73 20 74 6f 20 63 6f 6e 74  | us.prompts.and.responses.to.cont | 
| 301e0 |  69 6e 75 65 20 74 68 65 20 63 6f 6e 76 65 72 73    61 74 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 2d 20 43  | inue.the.conversation..;;.;;.-.C | 
| 30200 |  61 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27    20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61  | all.`gptel-send'.with.a.prefix.a | 
| 30220 |  72 67 75 6d 65 6e 74 20 74 6f 20 61 63 63 65 73    73 20 61 20 6d 65 6e 75 20 77 68 65 72 65 20 79  | rgument.to.access.a.menu.where.y | 
| 30240 |  6f 75 20 63 61 6e 20 73 65 74 0a 3b 3b 20 20 20    79 6f 75 72 20 62 61 63 6b 65 6e 64 2c 20 6d 6f  | ou.can.set.;;...your.backend,.mo | 
| 30260 |  64 65 6c 20 61 6e 64 20 6f 74 68 65 72 20 70 61    72 61 6d 65 74 65 72 73 2c 20 6f 72 20 74 6f 20  | del.and.other.parameters,.or.to. | 
| 30280 |  72 65 64 69 72 65 63 74 20 74 68 65 0a 3b 3b 20    20 20 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73  | redirect.the.;;...prompt/respons | 
| 302a0 |  65 2e 0a 3b 3b 0a 3b 3b 20 54 6f 20 75 73 65 20    74 68 69 73 20 69 6e 20 61 20 64 65 64 69 63 61  | e..;;.;;.To.use.this.in.a.dedica | 
| 302c0 |  74 65 64 20 62 75 66 66 65 72 3a 0a 3b 3b 20 0a    3b 3b 20 2d 20 4d 2d 78 20 67 70 74 65 6c 3a 20  | ted.buffer:.;;..;;.-.M-x.gptel:. | 
| 302e0 |  53 74 61 72 74 20 61 20 63 68 61 74 20 73 65 73    73 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 2d 20 49 6e  | Start.a.chat.session..;;.;;.-.In | 
| 30300 |  20 74 68 65 20 63 68 61 74 20 73 65 73 73 69 6f    6e 3a 20 50 72 65 73 73 20 60 43 2d 63 20 52 45  | .the.chat.session:.Press.`C-c.RE | 
| 30320 |  54 27 20 28 60 67 70 74 65 6c 2d 73 65 6e 64 27    29 20 74 6f 20 73 65 6e 64 20 79 6f 75 72 20 70  | T'.(`gptel-send').to.send.your.p | 
| 30340 |  72 6f 6d 70 74 2e 0a 3b 3b 20 20 20 55 73 65 20    61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e  | rompt..;;...Use.a.prefix.argumen | 
| 30360 |  74 20 28 60 43 2d 75 20 43 2d 63 20 52 45 54 27    29 20 74 6f 20 61 63 63 65 73 73 20 61 20 6d 65  | t.(`C-u.C-c.RET').to.access.a.me | 
| 30380 |  6e 75 2e 20 20 49 6e 20 74 68 69 73 20 6d 65 6e    75 20 79 6f 75 0a 3b 3b 20 20 20 63 61 6e 20 73  | nu...In.this.menu.you.;;...can.s | 
| 303a0 |  65 74 20 63 68 61 74 20 70 61 72 61 6d 65 74 65    72 73 20 6c 69 6b 65 20 74 68 65 20 73 79 73 74  | et.chat.parameters.like.the.syst | 
| 303c0 |  65 6d 20 64 69 72 65 63 74 69 76 65 73 2c 20 61    63 74 69 76 65 20 62 61 63 6b 65 6e 64 20 6f 72  | em.directives,.active.backend.or | 
| 303e0 |  0a 3b 3b 20 20 20 6d 6f 64 65 6c 2c 20 6f 72 20    63 68 6f 6f 73 65 20 74 6f 20 72 65 64 69 72 65  | .;;...model,.or.choose.to.redire | 
| 30400 |  63 74 20 74 68 65 20 69 6e 70 75 74 20 6f 72 20    6f 75 74 70 75 74 20 65 6c 73 65 77 68 65 72 65  | ct.the.input.or.output.elsewhere | 
| 30420 |  20 28 73 75 63 68 20 61 73 20 74 6f 20 74 68 65    0a 3b 3b 20 20 20 6b 69 6c 6c 20 72 69 6e 67 20  | .(such.as.to.the.;;...kill.ring. | 
| 30440 |  6f 72 20 74 68 65 20 65 63 68 6f 20 61 72 65 61    29 2e 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 63  | or.the.echo.area)..;;.;;.-.You.c | 
| 30460 |  61 6e 20 73 61 76 65 20 74 68 69 73 20 62 75 66    66 65 72 20 74 6f 20 61 20 66 69 6c 65 2e 20 20  | an.save.this.buffer.to.a.file... | 
| 30480 |  57 68 65 6e 20 6f 70 65 6e 69 6e 67 20 74 68 69    73 20 66 69 6c 65 2c 20 74 75 72 6e 20 6f 6e 0a  | When.opening.this.file,.turn.on. | 
| 304a0 |  3b 3b 20 20 20 60 67 70 74 65 6c 2d 6d 6f 64 65    27 20 62 65 66 6f 72 65 20 65 64 69 74 69 6e 67  | ;;...`gptel-mode'.before.editing | 
| 304c0 |  20 69 74 20 74 6f 20 72 65 73 74 6f 72 65 20 74    68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20  | .it.to.restore.the.conversation. | 
| 304e0 |  73 74 61 74 65 20 61 6e 64 0a 3b 3b 20 20 20 63    6f 6e 74 69 6e 75 65 20 63 68 61 74 74 69 6e 67  | state.and.;;...continue.chatting | 
| 30500 |  2e 0a 3b 3b 0a 3b 3b 20 2d 20 54 6f 20 69 6e 63    6c 75 64 65 20 6d 65 64 69 61 20 66 69 6c 65 73  | ..;;.;;.-.To.include.media.files | 
| 30520 |  20 77 69 74 68 20 79 6f 75 72 20 72 65 71 75 65    73 74 2c 20 79 6f 75 20 63 61 6e 20 61 64 64 20  | .with.your.request,.you.can.add. | 
| 30540 |  74 68 65 6d 20 74 6f 20 74 68 65 20 63 6f 6e 74    65 78 74 0a 3b 3b 20 20 20 28 64 65 73 63 72 69  | them.to.the.context.;;...(descri | 
| 30560 |  62 65 64 20 6e 65 78 74 29 2c 20 6f 72 20 69 6e    63 6c 75 64 65 20 74 68 65 6d 20 61 73 20 6c 69  | bed.next),.or.include.them.as.li | 
| 30580 |  6e 6b 73 20 69 6e 20 4f 72 67 20 6f 72 20 4d 61    72 6b 64 6f 77 6e 20 6d 6f 64 65 20 63 68 61 74  | nks.in.Org.or.Markdown.mode.chat | 
| 305a0 |  0a 3b 3b 20 20 20 62 75 66 66 65 72 73 2e 20 20    53 65 6e 64 69 6e 67 20 6d 65 64 69 61 20 69 73  | .;;...buffers...Sending.media.is | 
| 305c0 |  20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66    61 75 6c 74 2c 20 79 6f 75 20 63 61 6e 20 74 75  | .disabled.by.default,.you.can.tu | 
| 305e0 |  72 6e 20 69 74 20 6f 6e 20 67 6c 6f 62 61 6c 6c    79 0a 3b 3b 20 20 20 76 69 61 20 60 67 70 74 65  | rn.it.on.globally.;;...via.`gpte | 
| 30600 |  6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 27 2c 20    6f 72 20 6c 6f 63 61 6c 6c 79 20 69 6e 20 61 20  | l-track-media',.or.locally.in.a. | 
| 30620 |  63 68 61 74 20 62 75 66 66 65 72 20 76 69 61 20    74 68 65 20 68 65 61 64 65 72 20 6c 69 6e 65 2e  | chat.buffer.via.the.header.line. | 
| 30640 |  0a 3b 3b 20 0a 3b 3b 20 49 6e 63 6c 75 64 65 20    6d 6f 72 65 20 63 6f 6e 74 65 78 74 20 77 69 74  | .;;..;;.Include.more.context.wit | 
| 30660 |  68 20 72 65 71 75 65 73 74 73 3a 0a 3b 3b 0a 3b    3b 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f  | h.requests:.;;.;;.If.you.want.to | 
| 30680 |  20 70 72 6f 76 69 64 65 20 74 68 65 20 4c 4c 4d    20 77 69 74 68 20 6d 6f 72 65 20 63 6f 6e 74 65  | .provide.the.LLM.with.more.conte | 
| 306a0 |  78 74 2c 20 79 6f 75 20 63 61 6e 20 61 64 64 20    61 72 62 69 74 72 61 72 79 0a 3b 3b 20 72 65 67  | xt,.you.can.add.arbitrary.;;.reg | 
| 306c0 |  69 6f 6e 73 2c 20 62 75 66 66 65 72 73 2c 20 66    69 6c 65 73 20 6f 72 20 64 69 72 65 63 74 6f 72  | ions,.buffers,.files.or.director | 
| 306e0 |  69 65 73 20 74 6f 20 74 68 65 20 71 75 65 72 79    20 77 69 74 68 20 60 67 70 74 65 6c 2d 61 64 64  | ies.to.the.query.with.`gptel-add | 
| 30700 |  27 2e 20 20 54 6f 20 61 64 64 0a 3b 3b 20 74 65    78 74 20 6f 72 20 6d 65 64 69 61 20 66 69 6c 65  | '...To.add.;;.text.or.media.file | 
| 30720 |  73 2c 20 63 61 6c 6c 20 60 67 70 74 65 6c 2d 61    64 64 27 20 69 6e 20 44 69 72 65 64 20 6f 72 20  | s,.call.`gptel-add'.in.Dired.or. | 
| 30740 |  75 73 65 20 74 68 65 20 64 65 64 69 63 61 74 65    64 0a 3b 3b 20 60 67 70 74 65 6c 2d 61 64 64 2d  | use.the.dedicated.;;.`gptel-add- | 
| 30760 |  66 69 6c 65 27 2e 0a 3b 3b 0a 3b 3b 20 59 6f 75    20 63 61 6e 20 61 6c 73 6f 20 61 64 64 20 63 6f  | file'..;;.;;.You.can.also.add.co | 
| 30780 |  6e 74 65 78 74 20 66 72 6f 6d 20 67 70 74 65 6c    27 73 20 6d 65 6e 75 20 69 6e 73 74 65 61 64 20  | ntext.from.gptel's.menu.instead. | 
| 307a0 |  28 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69    74 68 20 61 0a 3b 3b 20 70 72 65 66 69 78 20 61  | (`gptel-send'.with.a.;;.prefix.a | 
| 307c0 |  72 67 29 2c 20 61 73 20 77 65 6c 6c 20 61 73 20    65 78 61 6d 69 6e 65 20 6f 72 20 6d 6f 64 69 66  | rg),.as.well.as.examine.or.modif | 
| 307e0 |  79 20 63 6f 6e 74 65 78 74 2e 0a 3b 3b 0a 3b 3b    20 57 68 65 6e 20 63 6f 6e 74 65 78 74 20 69 73  | y.context..;;.;;.When.context.is | 
| 30800 |  20 61 76 61 69 6c 61 62 6c 65 2c 20 67 70 74 65    6c 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 69  | .available,.gptel.will.include.i | 
| 30820 |  74 20 77 69 74 68 20 65 61 63 68 20 4c 4c 4d 20    71 75 65 72 79 2e 0a 3b 3b 0a 3b 3b 20 4c 4c 4d  | t.with.each.LLM.query..;;.;;.LLM | 
| 30840 |  20 54 6f 6f 6c 20 75 73 65 3a 0a 3b 3b 0a 3b 3b    20 67 70 74 65 6c 20 73 75 70 70 6f 72 74 73 20  | .Tool.use:.;;.;;.gptel.supports. | 
| 30860 |  22 74 6f 6f 6c 20 63 61 6c 6c 69 6e 67 22 20 62    65 68 61 76 69 6f 72 2c 20 77 68 65 72 65 20 4c  | "tool.calling".behavior,.where.L | 
| 30880 |  4c 4d 73 20 63 61 6e 20 73 70 65 63 69 66 79 20    61 72 67 75 6d 65 6e 74 73 20 77 69 74 68 0a 3b  | LMs.can.specify.arguments.with.; | 
| 308a0 |  3b 20 77 68 69 63 68 20 74 6f 20 63 61 6c 6c 20    70 72 6f 76 69 64 65 64 20 22 74 6f 6f 6c 73 22  | ;.which.to.call.provided."tools" | 
| 308c0 |  20 28 65 6c 69 73 70 20 66 75 6e 63 74 69 6f 6e    73 29 2e 20 20 54 68 65 20 72 65 73 75 6c 74 73  | .(elisp.functions)...The.results | 
| 308e0 |  20 6f 66 20 72 75 6e 6e 69 6e 67 20 74 68 65 0a    3b 3b 20 74 6f 6f 6c 73 20 61 72 65 20 66 65 64  | .of.running.the.;;.tools.are.fed | 
| 30900 |  20 62 61 63 6b 20 74 6f 20 74 68 65 20 4c 4c 4d    2c 20 67 69 76 69 6e 67 20 69 74 20 63 61 70 61  | .back.to.the.LLM,.giving.it.capa | 
| 30920 |  62 69 6c 69 74 69 65 73 20 61 6e 64 20 6b 6e 6f    77 6c 65 64 67 65 20 62 65 79 6f 6e 64 0a 3b 3b  | bilities.and.knowledge.beyond.;; | 
| 30940 |  20 77 68 61 74 20 69 73 20 61 76 61 69 6c 61 62    6c 65 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f  | .what.is.available.out.of.the.bo | 
| 30960 |  78 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c    20 74 6f 6f 6c 73 20 63 61 6e 20 70 65 72 66 6f  | x...For.example,.tools.can.perfo | 
| 30980 |  72 6d 20 77 65 62 0a 3b 3b 20 73 65 61 72 63 68    65 73 20 6f 72 20 41 50 49 20 6c 6f 6f 6b 75 70  | rm.web.;;.searches.or.API.lookup | 
| 309a0 |  73 2c 20 6d 6f 64 69 66 79 20 66 69 6c 65 73 20    61 6e 64 20 64 69 72 65 63 74 6f 72 69 65 73 2c  | s,.modify.files.and.directories, | 
| 309c0 |  20 61 6e 64 20 73 6f 20 6f 6e 2e 0a 3b 3b 0a 3b    3b 20 54 6f 6f 6c 73 20 63 61 6e 20 62 65 20 73  | .and.so.on..;;.;;.Tools.can.be.s | 
| 309e0 |  70 65 63 69 66 69 65 64 20 76 69 61 20 60 67 70    74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2c 20  | pecified.via.`gptel-make-tool',. | 
| 30a00 |  6f 72 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d    20 6f 74 68 65 72 0a 3b 3b 20 72 65 70 6f 73 69  | or.obtained.from.other.;;.reposi | 
| 30a20 |  74 6f 72 69 65 73 2c 20 6f 72 20 66 72 6f 6d 20    4d 6f 64 65 6c 20 43 6f 6e 74 65 78 74 20 50 72  | tories,.or.from.Model.Context.Pr | 
| 30a40 |  6f 74 6f 63 6f 6c 20 28 4d 43 50 29 20 73 65 72    76 65 72 73 20 75 73 69 6e 67 20 74 68 65 20 6d  | otocol.(MCP).servers.using.the.m | 
| 30a60 |  63 70 2e 65 6c 0a 3b 3b 20 70 61 63 6b 61 67 65    2e 20 20 53 65 65 20 74 68 65 20 52 45 41 44 4d  | cp.el.;;.package...See.the.READM | 
| 30a80 |  45 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 3b    3b 0a 3b 3b 20 54 6f 6f 6c 73 20 63 61 6e 20 62  | E.for.details..;;.;;.Tools.can.b | 
| 30aa0 |  65 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20    4c 4c 4d 20 71 75 65 72 69 65 73 20 75 73 69 6e  | e.included.with.LLM.queries.usin | 
| 30ac0 |  67 20 67 70 74 65 6c 27 73 20 6d 65 6e 75 2c 20    6f 72 20 66 72 6f 6d 0a 3b 3b 20 60 67 70 74 65  | g.gptel's.menu,.or.from.;;.`gpte | 
| 30ae0 |  6c 2d 74 6f 6f 6c 73 27 2e 0a 3b 3b 0a 3b 3b 20    52 65 77 72 69 74 65 20 69 6e 74 65 72 66 61 63  | l-tools'..;;.;;.Rewrite.interfac | 
| 30b00 |  65 0a 3b 3b 0a 3b 3b 20 49 6e 20 61 6e 79 20 62    75 66 66 65 72 3a 20 77 69 74 68 20 61 20 72 65  | e.;;.;;.In.any.buffer:.with.a.re | 
| 30b20 |  67 69 6f 6e 20 73 65 6c 65 63 74 65 64 2c 20 79    6f 75 20 63 61 6e 20 72 65 77 72 69 74 65 20 70  | gion.selected,.you.can.rewrite.p | 
| 30b40 |  72 6f 73 65 2c 20 72 65 66 61 63 74 6f 72 20 63    6f 64 65 0a 3b 3b 20 6f 72 20 66 69 6c 6c 20 69  | rose,.refactor.code.;;.or.fill.i | 
| 30b60 |  6e 20 74 68 65 20 72 65 67 69 6f 6e 2e 20 20 54    68 69 73 20 69 73 20 61 63 63 65 73 73 69 62 6c  | n.the.region...This.is.accessibl | 
| 30b80 |  65 20 76 69 61 20 60 67 70 74 65 6c 2d 72 65 77    72 69 74 65 27 2c 20 61 6e 64 20 61 6c 73 6f 20  | e.via.`gptel-rewrite',.and.also. | 
| 30ba0 |  66 72 6f 6d 0a 3b 3b 20 74 68 65 20 60 67 70 74    65 6c 2d 73 65 6e 64 27 20 6d 65 6e 75 2e 0a 3b  | from.;;.the.`gptel-send'.menu..; | 
| 30bc0 |  3b 0a 3b 3b 20 50 72 65 73 65 74 73 0a 3b 3b 0a    3b 3b 20 44 65 66 69 6e 65 20 61 20 62 75 6e 64  | ;.;;.Presets.;;.;;.Define.a.bund | 
| 30be0 |  6c 65 20 6f 66 20 63 6f 6e 66 69 67 75 72 61 74    69 6f 6e 20 28 6d 6f 64 65 6c 2c 20 62 61 63 6b  | le.of.configuration.(model,.back | 
| 30c00 |  65 6e 64 2c 20 73 79 73 74 65 6d 20 6d 65 73 73    61 67 65 2c 20 74 6f 6f 6c 73 20 65 74 63 29 0a  | end,.system.message,.tools.etc). | 
| 30c20 |  3b 3b 20 61 73 20 61 20 22 70 72 65 73 65 74 22    20 74 68 61 74 20 63 61 6e 20 62 65 20 61 70 70  | ;;.as.a."preset".that.can.be.app | 
| 30c40 |  6c 69 65 64 20 74 6f 67 65 74 68 65 72 2c 20 6d    61 6b 69 6e 67 20 69 74 20 65 61 73 79 20 74 6f  | lied.together,.making.it.easy.to | 
| 30c60 |  20 73 77 69 74 63 68 20 62 65 74 77 65 65 6e 0a    3b 3b 20 74 61 73 6b 73 20 69 6e 20 67 70 74 65  | .switch.between.;;.tasks.in.gpte | 
| 30c80 |  6c 2e 20 20 50 72 65 73 65 74 73 20 63 61 6e 20    62 65 20 73 61 76 65 64 20 61 6e 64 20 61 70 70  | l...Presets.can.be.saved.and.app | 
| 30ca0 |  6c 69 65 64 20 66 72 6f 6d 20 67 70 74 65 6c 27    73 20 74 72 61 6e 73 69 65 6e 74 0a 3b 3b 20 6d  | lied.from.gptel's.transient.;;.m | 
| 30cc0 |  65 6e 75 2e 20 20 59 6f 75 20 63 61 6e 20 61 6c    73 6f 20 69 6e 63 6c 75 64 65 20 61 20 63 6f 6f  | enu...You.can.also.include.a.coo | 
| 30ce0 |  6b 69 65 20 6f 66 20 74 68 65 20 66 6f 72 6d 20    22 40 70 72 65 73 65 74 2d 6e 61 6d 65 22 20 69  | kie.of.the.form."@preset-name".i | 
| 30d00 |  6e 20 74 68 65 20 70 72 6f 6d 70 74 0a 3b 3b 20    74 6f 20 73 65 6e 64 20 61 20 72 65 71 75 65 73  | n.the.prompt.;;.to.send.a.reques | 
| 30d20 |  74 20 77 69 74 68 20 61 20 70 72 65 73 65 74 20    61 70 70 6c 69 65 64 2e 20 20 54 68 69 73 20 66  | t.with.a.preset.applied...This.f | 
| 30d40 |  65 61 74 75 72 65 20 77 6f 72 6b 73 20 65 76 65    72 79 77 68 65 72 65 2c 20 62 75 74 0a 3b 3b 20  | eature.works.everywhere,.but.;;. | 
| 30d60 |  70 72 65 73 65 74 20 63 6f 6f 6b 69 65 73 20 61    72 65 20 61 6c 73 6f 20 66 6f 6e 74 69 66 69 65  | preset.cookies.are.also.fontifie | 
| 30d80 |  64 20 69 6e 20 63 68 61 74 20 62 75 66 66 65 72    73 2e 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 69  | d.in.chat.buffers..;;.;;.gptel.i | 
| 30da0 |  6e 20 4f 72 67 20 6d 6f 64 65 3a 0a 3b 3b 0a 3b    3b 20 67 70 74 65 6c 20 6f 66 66 65 72 73 20 61  | n.Org.mode:.;;.;;.gptel.offers.a | 
| 30dc0 |  20 66 65 77 20 65 78 74 72 61 20 63 6f 6e 76 65    6e 69 65 6e 63 65 73 20 69 6e 20 4f 72 67 20 6d  | .few.extra.conveniences.in.Org.m | 
| 30de0 |  6f 64 65 3a 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75    20 63 61 6e 20 6c 69 6d 69 74 20 74 68 65 20 63  | ode:.;;.;;.-.You.can.limit.the.c | 
| 30e00 |  6f 6e 76 65 72 73 61 74 69 6f 6e 20 63 6f 6e 74    65 78 74 20 74 6f 20 61 6e 20 4f 72 67 20 68 65  | onversation.context.to.an.Org.he | 
| 30e20 |  61 64 69 6e 67 20 77 69 74 68 0a 3b 3b 20 20 20    60 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74  | ading.with.;;...`gptel-org-set-t | 
| 30e40 |  6f 70 69 63 27 2e 0a 3b 3b 20 20 20 0a 3b 3b 20    2d 20 59 6f 75 20 63 61 6e 20 68 61 76 65 20 62  | opic'..;;....;;.-.You.can.have.b | 
| 30e60 |  72 61 6e 63 68 69 6e 67 20 63 6f 6e 76 65 72 73    61 74 69 6f 6e 73 20 69 6e 20 4f 72 67 20 6d 6f  | ranching.conversations.in.Org.mo | 
| 30e80 |  64 65 2c 20 77 68 65 72 65 20 65 61 63 68 20 68    69 65 72 61 72 63 68 69 63 61 6c 0a 3b 3b 20 20  | de,.where.each.hierarchical.;;.. | 
| 30ea0 |  20 6f 75 74 6c 69 6e 65 20 70 61 74 68 20 74 68    72 6f 75 67 68 20 74 68 65 20 64 6f 63 75 6d 65  | .outline.path.through.the.docume | 
| 30ec0 |  6e 74 20 69 73 20 61 20 73 65 70 61 72 61 74 65    20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 72  | nt.is.a.separate.conversation.br | 
| 30ee0 |  61 6e 63 68 2e 0a 3b 3b 20 20 20 53 65 65 20 74    68 65 20 76 61 72 69 61 62 6c 65 20 60 67 70 74  | anch..;;...See.the.variable.`gpt | 
| 30f00 |  65 6c 2d 6f 72 67 2d 62 72 61 6e 63 68 69 6e 67    2d 63 6f 6e 74 65 78 74 27 2e 0a 3b 3b 20 20 20  | el-org-branching-context'..;;... | 
| 30f20 |  0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 64 65    63 6c 61 72 65 20 74 68 65 20 67 70 74 65 6c 20  | .;;.-.You.can.declare.the.gptel. | 
| 30f40 |  6d 6f 64 65 6c 2c 20 62 61 63 6b 65 6e 64 2c 20    74 65 6d 70 65 72 61 74 75 72 65 2c 20 73 79 73  | model,.backend,.temperature,.sys | 
| 30f60 |  74 65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 0a    3b 3b 20 20 20 6f 74 68 65 72 20 70 61 72 61 6d  | tem.message.and.;;...other.param | 
| 30f80 |  65 74 65 72 73 20 61 73 20 4f 72 67 20 70 72 6f    70 65 72 74 69 65 73 20 77 69 74 68 20 74 68 65  | eters.as.Org.properties.with.the | 
| 30fa0 |  20 63 6f 6d 6d 61 6e 64 0a 3b 3b 20 20 20 60 67    70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 70 72 6f  | .command.;;...`gptel-org-set-pro | 
| 30fc0 |  70 65 72 74 69 65 73 27 2e 20 20 67 70 74 65 6c    20 71 75 65 72 69 65 73 20 75 6e 64 65 72 20 74  | perties'...gptel.queries.under.t | 
| 30fe0 |  68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67    20 68 65 61 64 69 6e 67 0a 3b 3b 20 20 20 77 69  | he.corresponding.heading.;;...wi | 
| 31000 |  6c 6c 20 61 6c 77 61 79 73 20 75 73 65 20 74 68    65 73 65 20 73 65 74 74 69 6e 67 73 2c 20 61 6c  | ll.always.use.these.settings,.al | 
| 31020 |  6c 6f 77 69 6e 67 20 79 6f 75 20 74 6f 20 63 72    65 61 74 65 20 6d 6f 73 74 6c 79 20 72 65 70 72  | lowing.you.to.create.mostly.repr | 
| 31040 |  6f 64 75 63 69 62 6c 65 0a 3b 3b 20 20 20 4c 4c    4d 20 63 68 61 74 20 6e 6f 74 65 62 6f 6f 6b 73  | oducible.;;...LLM.chat.notebooks | 
| 31060 |  2e 0a 3b 3b 0a 3b 3b 20 46 69 6e 61 6c 6c 79 2c    20 67 70 74 65 6c 20 6f 66 66 65 72 73 20 61 20  | ..;;.;;.Finally,.gptel.offers.a. | 
| 31080 |  67 65 6e 65 72 61 6c 20 70 75 72 70 6f 73 65 20    41 50 49 20 66 6f 72 20 77 72 69 74 69 6e 67 20  | general.purpose.API.for.writing. | 
| 310a0 |  4c 4c 4d 20 69 6e 65 72 61 63 74 69 6f 6e 73 20    74 68 61 74 0a 3b 3b 20 73 75 69 74 20 79 6f 75  | LLM.ineractions.that.;;.suit.you | 
| 310c0 |  72 20 77 6f 72 6b 66 6c 6f 77 2e 20 20 53 65 65    20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27  | r.workflow...See.`gptel-request' | 
| 310e0 |  2c 20 61 6e 64 20 60 67 70 74 65 6c 2d 66 73 6d    27 20 66 6f 72 20 6d 6f 72 65 20 61 64 76 61 6e  | ,.and.`gptel-fsm'.for.more.advan | 
| 31100 |  63 65 64 0a 3b 3b 20 75 73 61 67 65 2e 0a 0a 3b    3b 3b 20 43 6f 64 65 3a 0a 28 64 65 63 6c 61 72  | ced.;;.usage...;;;.Code:.(declar | 
| 31120 |  65 2d 66 75 6e 63 74 69 6f 6e 20 6d 61 72 6b 64    6f 77 6e 2d 6d 6f 64 65 20 22 6d 61 72 6b 64 6f  | e-function.markdown-mode."markdo | 
| 31140 |  77 6e 2d 6d 6f 64 65 22 29 0a 28 64 65 63 6c 61    72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65  | wn-mode").(declare-function.gpte | 
| 31160 |  6c 2d 63 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f    6e 73 65 20 22 67 70 74 65 6c 2d 63 75 72 6c 22  | l-curl-get-response."gptel-curl" | 
| 31180 |  29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74    69 6f 6e 20 67 70 74 65 6c 2d 6d 65 6e 75 20 22  | ).(declare-function.gptel-menu." | 
| 311a0 |  67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22    29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74  | gptel-transient").(declare-funct | 
| 311c0 |  69 6f 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d    2d 70 72 6f 6d 70 74 20 22 67 70 74 65 6c 2d 74  | ion.gptel-system-prompt."gptel-t | 
| 311e0 |  72 61 6e 73 69 65 6e 74 22 29 0a 28 64 65 63 6c    61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74  | ransient").(declare-function.gpt | 
| 31200 |  65 6c 2d 74 6f 6f 6c 73 20 22 67 70 74 65 6c 2d    74 72 61 6e 73 69 65 6e 74 22 29 0a 28 64 65 63  | el-tools."gptel-transient").(dec | 
| 31220 |  6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 75    6c 73 65 2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 69  | lare-function.pulse-momentary-hi | 
| 31240 |  67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 22    70 75 6c 73 65 22 29 0a 0a 28 64 65 63 6c 61 72  | ghlight-region."pulse")..(declar | 
| 31260 |  65 2d 66 75 6e 63 74 69 6f 6e 20 65 64 69 66 66    2d 6d 61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66  | e-function.ediff-make-cloned-buf | 
| 31280 |  66 65 72 20 22 65 64 69 66 66 2d 75 74 69 6c 22    29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74  | fer."ediff-util").(declare-funct | 
| 312a0 |  69 6f 6e 20 65 64 69 66 66 2d 72 65 67 69 6f 6e    73 2d 69 6e 74 65 72 6e 61 6c 20 22 65 64 69 66  | ion.ediff-regions-internal."edif | 
| 312c0 |  66 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e    63 74 69 6f 6e 20 68 6c 2d 6c 69 6e 65 2d 68 69  | f").(declare-function.hl-line-hi | 
| 312e0 |  67 68 6c 69 67 68 74 20 22 68 6c 2d 6c 69 6e 65    22 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e  | ghlight."hl-line")..(declare-fun | 
| 31300 |  63 74 69 6f 6e 20 6f 72 67 2d 65 73 63 61 70 65    2d 63 6f 64 65 2d 69 6e 2d 73 74 72 69 6e 67 20  | ction.org-escape-code-in-string. | 
| 31320 |  22 6f 72 67 2d 73 72 63 22 29 0a 28 64 65 63 6c    61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74  | "org-src").(declare-function.gpt | 
| 31340 |  65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74 65 2d 70    72 6f 6d 70 74 2d 62 75 66 66 65 72 20 22 67 70  | el-org--create-prompt-buffer."gp | 
| 31360 |  74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61    72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65  | tel-org").(declare-function.gpte | 
| 31380 |  6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 20    22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65  | l-org-set-topic."gptel-org").(de | 
| 313a0 |  63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67    70 74 65 6c 2d 6f 72 67 2d 2d 73 61 76 65 2d 73  | clare-function.gptel-org--save-s | 
| 313c0 |  74 61 74 65 20 22 67 70 74 65 6c 2d 6f 72 67 22    29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74  | tate."gptel-org").(declare-funct | 
| 313e0 |  69 6f 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 72    65 73 74 6f 72 65 2d 73 74 61 74 65 20 22 67 70  | ion.gptel-org--restore-state."gp | 
| 31400 |  74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61    72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65  | tel-org").(declare-function.gpte | 
| 31420 |  6c 2d 2d 73 74 72 65 61 6d 2d 63 6f 6e 76 65 72    74 2d 6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 20  | l--stream-convert-markdown->org. | 
| 31440 |  22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65    63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67  | "gptel-org").(declare-function.g | 
| 31460 |  70 74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d 6d 61    72 6b 64 6f 77 6e 2d 3e 6f 72 67 20 22 67 70 74  | ptel--convert-markdown->org."gpt | 
| 31480 |  65 6c 2d 6f 72 67 22 29 0a 28 64 65 66 69 6e 65    2d 6f 62 73 6f 6c 65 74 65 2d 66 75 6e 63 74 69  | el-org").(define-obsolete-functi | 
| 314a0 |  6f 6e 2d 61 6c 69 61 73 0a 20 20 27 67 70 74 65    6c 2d 73 65 74 2d 74 6f 70 69 63 20 27 67 70 74  | on-alias...'gptel-set-topic.'gpt | 
| 314c0 |  65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63    20 22 30 2e 37 2e 35 22 29 0a 0a 28 65 76 61 6c  | el-org-set-topic."0.7.5")..(eval | 
| 314e0 |  2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20    28 72 65 71 75 69 72 65 20 27 73 75 62 72 2d 78  | -when-compile...(require.'subr-x | 
| 31500 |  29 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d    6c 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 63  | )).(require.'cl-lib).(require.'c | 
| 31520 |  6f 6d 70 61 74 20 6e 69 6c 20 74 29 0a 28 72 65    71 75 69 72 65 20 27 75 72 6c 29 0a 28 72 65 71  | ompat.nil.t).(require.'url).(req | 
| 31540 |  75 69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75    69 72 65 20 27 74 65 78 74 2d 70 72 6f 70 65 72  | uire.'map).(require.'text-proper | 
| 31560 |  74 79 2d 73 65 61 72 63 68 29 0a 28 72 65 71 75    69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29  | ty-search).(require.'cl-generic) | 
| 31580 |  0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c    2d 6f 70 65 6e 61 69 29 0a 0a 0c 0a 3b 3b 3b 20  | .(require.'gptel-openai)....;;;. | 
| 315a0 |  55 73 65 72 20 6f 70 74 69 6f 6e 73 0a 0a 28 64    65 66 67 72 6f 75 70 20 67 70 74 65 6c 20 6e 69  | User.options..(defgroup.gptel.ni | 
| 315c0 |  6c 0a 20 20 22 49 6e 74 65 72 61 63 74 20 77 69    74 68 20 4c 4c 4d 73 20 66 72 6f 6d 20 61 6e 79  | l..."Interact.with.LLMs.from.any | 
| 315e0 |  77 68 65 72 65 20 69 6e 20 45 6d 61 63 73 2e 22    0a 20 20 3a 67 72 6f 75 70 20 27 68 79 70 65 72  | where.in.Emacs."...:group.'hyper | 
| 31600 |  6d 65 64 69 61 29 0a 0a 28 64 65 66 63 75 73 74    6f 6d 20 67 70 74 65 6c 2d 70 72 6f 78 79 20 22  | media)..(defcustom.gptel-proxy." | 
| 31620 |  22 0a 20 20 22 50 61 74 68 20 74 6f 20 61 20 70    72 6f 78 79 20 74 6f 20 75 73 65 20 66 6f 72 20  | "..."Path.to.a.proxy.to.use.for. | 
| 31640 |  67 70 74 65 6c 20 69 6e 74 65 72 61 63 74 69 6f    6e 73 2e 0a 50 61 73 73 65 64 20 74 6f 20 63 75  | gptel.interactions..Passed.to.cu | 
| 31660 |  72 6c 20 76 69 61 20 2d 2d 70 72 6f 78 79 20 61    72 67 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20  | rl.via.--proxy.arg,.for.example. | 
| 31680 |  5c 22 70 72 6f 78 79 2e 79 6f 75 72 6f 72 67 2e    63 6f 6d 3a 38 30 5c 22 0a 4c 65 61 76 65 20 69  | \"proxy.yourorg.com:80\".Leave.i | 
| 316a0 |  74 20 65 6d 70 74 79 20 69 66 20 79 6f 75 20 64    6f 6e 27 74 20 75 73 65 20 61 20 70 72 6f 78 79  | t.empty.if.you.don't.use.a.proxy | 
| 316c0 |  2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69    6e 67 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20  | ."...:type.'string)..(defcustom. | 
| 316e0 |  67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 20 23 27    67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72  | gptel-api-key.#'gptel-api-key-fr | 
| 31700 |  6f 6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 0a 20    20 22 41 6e 20 41 50 49 20 6b 65 79 20 28 73 74  | om-auth-source..."An.API.key.(st | 
| 31720 |  72 69 6e 67 29 20 66 6f 72 20 74 68 65 20 64 65    66 61 75 6c 74 20 4c 4c 4d 20 62 61 63 6b 65 6e  | ring).for.the.default.LLM.backen | 
| 31740 |  64 2e 0a 0a 4f 70 65 6e 41 49 20 62 79 20 64 65    66 61 75 6c 74 2e 0a 0a 43 61 6e 20 61 6c 73 6f  | d...OpenAI.by.default...Can.also | 
| 31760 |  20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f    66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 74  | .be.a.function.of.no.arguments.t | 
| 31780 |  68 61 74 20 72 65 74 75 72 6e 73 20 61 6e 20 41    50 49 0a 6b 65 79 20 28 6d 6f 72 65 20 73 65 63  | hat.returns.an.API.key.(more.sec | 
| 317a0 |  75 72 65 29 20 66 6f 72 20 74 68 65 20 61 63 74    69 76 65 20 62 61 63 6b 65 6e 64 2e 22 0a 20 20  | ure).for.the.active.backend."... | 
| 317c0 |  3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20    20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67  | :type.'(choice...........(string | 
| 317e0 |  20 3a 74 61 67 20 22 41 50 49 20 6b 65 79 22 29    0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63  | .:tag."API.key")...........(func | 
| 31800 |  74 69 6f 6e 20 3a 74 61 67 20 22 46 75 6e 63 74    69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73  | tion.:tag."Function.that.returns | 
| 31820 |  20 74 68 65 20 41 50 49 20 6b 65 79 22 29 29 29    0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74  | .the.API.key")))..(defcustom.gpt | 
| 31840 |  65 6c 2d 73 74 72 65 61 6d 20 74 0a 20 20 22 53    74 72 65 61 6d 20 72 65 73 70 6f 6e 73 65 73 20  | el-stream.t..."Stream.responses. | 
| 31860 |  66 72 6f 6d 20 74 68 65 20 4c 4c 4d 20 61 73 20    74 68 65 79 20 61 72 65 20 72 65 63 65 69 76 65  | from.the.LLM.as.they.are.receive | 
| 31880 |  64 2e 0a 0a 54 68 69 73 20 6f 70 74 69 6f 6e 20    69 73 20 69 67 6e 6f 72 65 64 20 75 6e 6c 65 73  | d...This.option.is.ignored.unles | 
| 318a0 |  73 0a 2d 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b    65 6e 64 20 73 75 70 70 6f 72 74 73 20 73 74 72  | s.-.the.LLM.backend.supports.str | 
| 318c0 |  65 61 6d 69 6e 67 2c 20 61 6e 64 0a 2d 20 43 75    72 6c 20 69 73 20 69 6e 20 75 73 65 20 28 73 65  | eaming,.and.-.Curl.is.in.use.(se | 
| 318e0 |  65 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 75 72    6c 27 29 0a 0a 57 68 65 6e 20 73 65 74 20 74 6f  | e.`gptel-use-curl')..When.set.to | 
| 31900 |  20 6e 69 6c 2c 20 45 6d 61 63 73 20 77 61 69 74    73 20 66 6f 72 20 74 68 65 20 66 75 6c 6c 20 72  | .nil,.Emacs.waits.for.the.full.r | 
| 31920 |  65 73 70 6f 6e 73 65 20 61 6e 64 20 69 6e 73 65    72 74 73 20 69 74 0a 61 6c 6c 20 61 74 20 6f 6e  | esponse.and.inserts.it.all.at.on | 
| 31940 |  63 65 2e 20 20 54 68 69 73 20 77 61 69 74 20 69    73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2e 0a  | ce...This.wait.is.asynchronous.. | 
| 31960 |  0a 5c 3d 27 74 69 73 20 61 20 62 69 74 20 73 69    6c 6c 79 2e 22 0a 20 20 3a 74 79 70 65 20 27 62  | .\='tis.a.bit.silly."...:type.'b | 
| 31980 |  6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73    74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 63 75  | oolean)..(defcustom.gptel-use-cu | 
| 319a0 |  72 6c 20 28 61 6e 64 20 28 65 78 65 63 75 74 61    62 6c 65 2d 66 69 6e 64 20 22 63 75 72 6c 22 29  | rl.(and.(executable-find."curl") | 
| 319c0 |  20 74 29 0a 20 20 22 57 68 65 74 68 65 72 20 67    70 74 65 6c 20 73 68 6f 75 6c 64 20 70 72 65 66  | .t)..."Whether.gptel.should.pref | 
| 319e0 |  65 72 20 43 75 72 6c 20 77 68 65 6e 20 61 76 61    69 6c 61 62 6c 65 2e 0a 0a 43 61 6e 20 62 65 20  | er.Curl.when.available...Can.be. | 
| 31a00 |  73 65 74 20 74 6f 20 74 2c 20 6e 69 6c 2c 20 6f    72 20 61 20 73 74 72 69 6e 67 20 70 61 74 68 20  | set.to.t,.nil,.or.a.string.path. | 
| 31a20 |  74 6f 20 74 68 65 20 63 75 72 6c 20 65 78 65 63    75 74 61 62 6c 65 2e 22 0a 20 20 3a 74 79 70 65  | to.the.curl.executable."...:type | 
| 31a40 |  20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20  | .'(choice...........(const.:tag. | 
| 31a60 |  22 44 6f 20 6e 6f 74 20 75 73 65 20 43 75 72 6c    22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20  | "Do.not.use.Curl".nil).......... | 
| 31a80 |  20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 55 73    65 20 43 75 72 6c 22 20 74 29 0a 20 20 20 20 20  | .(const.:tag."Use.Curl".t)...... | 
| 31aa0 |  20 20 20 20 20 28 73 74 72 69 6e 67 20 3a 74 61    67 20 22 53 70 65 63 69 66 79 20 70 61 74 68 20  | .....(string.:tag."Specify.path. | 
| 31ac0 |  74 6f 20 74 68 65 20 43 75 72 6c 20 65 78 65 63    75 74 61 62 6c 65 22 29 29 29 0a 0a 28 64 65 66  | to.the.Curl.executable")))..(def | 
| 31ae0 |  63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6f 72 67    2d 63 6f 6e 76 65 72 74 2d 72 65 73 70 6f 6e 73  | custom.gptel-org-convert-respons | 
| 31b00 |  65 20 74 0a 20 20 22 57 68 65 74 68 65 72 20 67    70 74 65 6c 20 73 68 6f 75 6c 64 20 63 6f 6e 76  | e.t..."Whether.gptel.should.conv | 
| 31b20 |  65 72 74 20 4d 61 72 6b 64 6f 77 6e 20 72 65 73    70 6f 6e 73 65 73 20 74 6f 20 4f 72 67 20 6d 61  | ert.Markdown.responses.to.Org.ma | 
| 31b40 |  72 6b 75 70 2e 0a 0a 54 68 69 73 20 6f 6e 6c 79    20 61 66 66 65 63 74 73 20 72 65 71 75 65 73 74  | rkup...This.only.affects.request | 
| 31b60 |  73 20 6f 72 69 67 69 6e 61 74 69 6e 67 20 66 72    6f 6d 20 4f 72 67 20 6d 6f 64 65 20 62 75 66 66  | s.originating.from.Org.mode.buff | 
| 31b80 |  65 72 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 62    6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73  | ers."...:type.'boolean)..(defcus | 
| 31ba0 |  74 6f 6d 20 67 70 74 65 6c 2d 63 75 72 6c 2d 66    69 6c 65 2d 73 69 7a 65 2d 74 68 72 65 73 68 6f  | tom.gptel-curl-file-size-thresho | 
| 31bc0 |  6c 64 0a 20 20 28 69 66 20 28 6d 65 6d 71 20 73    79 73 74 65 6d 2d 74 79 70 65 20 27 28 77 69 6e  | ld...(if.(memq.system-type.'(win | 
| 31be0 |  64 6f 77 73 2d 6e 74 20 6d 73 2d 64 6f 73 29 29    20 23 78 36 66 66 65 20 31 33 30 30 30 30 29 0a  | dows-nt.ms-dos)).#x6ffe.130000). | 
| 31c00 |  20 20 22 53 69 7a 65 20 74 68 72 65 73 68 6f 6c    64 20 66 6f 72 20 75 73 69 6e 67 20 66 69 6c 65  | .."Size.threshold.for.using.file | 
| 31c20 |  20 69 6e 70 75 74 20 77 69 74 68 20 43 75 72 6c    2e 0a 0a 53 70 65 63 69 66 69 65 73 20 74 68 65  | .input.with.Curl...Specifies.the | 
| 31c40 |  20 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20    66 6f 72 20 77 68 65 6e 20 74 6f 20 75 73 65 20  | .size.threshold.for.when.to.use. | 
| 31c60 |  61 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65    20 74 6f 20 70 61 73 73 20 64 61 74 61 20 74 6f  | a.temporary.file.to.pass.data.to | 
| 31c80 |  0a 43 75 72 6c 20 69 6e 20 67 70 74 65 6c 20 71    75 65 72 69 65 73 2e 20 20 49 66 20 74 68 65 20  | .Curl.in.gptel.queries...If.the. | 
| 31ca0 |  73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61    20 74 6f 20 62 65 20 73 65 6e 74 20 65 78 63 65  | size.of.the.data.to.be.sent.exce | 
| 31cc0 |  65 64 73 20 74 68 69 73 0a 74 68 72 65 73 68 6f    6c 64 2c 20 74 68 65 20 64 61 74 61 20 69 73 20  | eds.this.threshold,.the.data.is. | 
| 31ce0 |  77 72 69 74 74 65 6e 20 74 6f 20 61 20 74 65 6d    70 6f 72 61 72 79 20 66 69 6c 65 20 61 6e 64 20  | written.to.a.temporary.file.and. | 
| 31d00 |  70 61 73 73 65 64 20 74 6f 20 43 75 72 6c 20 75    73 69 6e 67 20 74 68 65 0a 60 2d 2d 64 61 74 61  | passed.to.Curl.using.the.`--data | 
| 31d20 |  2d 62 69 6e 61 72 79 27 20 6f 70 74 69 6f 6e 20    77 69 74 68 20 61 20 66 69 6c 65 20 72 65 66 65  | -binary'.option.with.a.file.refe | 
| 31d40 |  72 65 6e 63 65 2e 20 20 4f 74 68 65 72 77 69 73    65 2c 20 74 68 65 20 64 61 74 61 20 69 73 20 70  | rence...Otherwise,.the.data.is.p | 
| 31d60 |  61 73 73 65 64 0a 64 69 72 65 63 74 6c 79 20 61    73 20 61 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65  | assed.directly.as.a.command-line | 
| 31d80 |  20 61 72 67 75 6d 65 6e 74 2e 0a 0a 54 68 65 20    76 61 6c 75 65 20 69 73 20 61 6e 20 69 6e 74 65  | .argument...The.value.is.an.inte | 
| 31da0 |  67 65 72 20 72 65 70 72 65 73 65 6e 74 69 6e 67    20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62  | ger.representing.the.number.of.b | 
| 31dc0 |  79 74 65 73 2e 0a 0a 41 64 6a 75 73 74 69 6e 67    20 74 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20  | ytes...Adjusting.this.value.may. | 
| 31de0 |  62 65 20 6e 65 63 65 73 73 61 72 79 20 64 65 70    65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 65 6e  | be.necessary.depending.on.the.en | 
| 31e00 |  76 69 72 6f 6e 6d 65 6e 74 0a 61 6e 64 20 74 68    65 20 74 79 70 69 63 61 6c 20 73 69 7a 65 20 6f  | vironment.and.the.typical.size.o | 
| 31e20 |  66 20 74 68 65 20 64 61 74 61 20 62 65 69 6e 67    20 73 65 6e 74 20 69 6e 20 67 70 74 65 6c 20 71  | f.the.data.being.sent.in.gptel.q | 
| 31e40 |  75 65 72 69 65 73 2e 0a 41 20 6c 61 72 67 65 72    20 76 61 6c 75 65 20 6d 61 79 20 69 6d 70 72 6f  | ueries..A.larger.value.may.impro | 
| 31e60 |  76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 62    79 20 61 76 6f 69 64 69 6e 67 20 74 68 65 20 6f  | ve.performance.by.avoiding.the.o | 
| 31e80 |  76 65 72 68 65 61 64 20 6f 66 20 63 72 65 61 74    69 6e 67 0a 74 65 6d 70 6f 72 61 72 79 20 66 69  | verhead.of.creating.temporary.fi | 
| 31ea0 |  6c 65 73 20 66 6f 72 20 73 6d 61 6c 6c 20 64 61    74 61 20 70 61 79 6c 6f 61 64 73 2c 20 77 68 69  | les.for.small.data.payloads,.whi | 
| 31ec0 |  6c 65 20 61 20 73 6d 61 6c 6c 65 72 20 76 61 6c    75 65 20 6d 61 79 20 62 65 20 6e 65 65 64 65 64  | le.a.smaller.value.may.be.needed | 
| 31ee0 |  0a 69 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2d    6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 20 73 69  | .if.the.command-line.argument.si | 
| 31f00 |  7a 65 20 69 73 20 6c 69 6d 69 74 65 64 20 62 79    20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73  | ze.is.limited.by.the.operating.s | 
| 31f20 |  79 73 74 65 6d 2e 0a 0a 54 68 65 20 64 65 66 61    75 6c 74 20 6f 66 20 23 78 38 30 30 30 20 66 6f  | ystem...The.default.of.#x8000.fo | 
| 31f40 |  72 20 77 69 6e 64 6f 77 73 20 63 6f 6d 65 73 20    66 72 6f 6d 20 4d 69 63 72 6f 73 6f 66 74 20 64  | r.windows.comes.from.Microsoft.d | 
| 31f60 |  6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a 6c 6f 63    61 74 65 64 20 68 65 72 65 3a 0a 68 74 74 70 73  | ocumentation.located.here:.https | 
| 31f80 |  3a 2f 2f 6c 65 61 72 6e 2e 6d 69 63 72 6f 73 6f    66 74 2e 63 6f 6d 2f 65 6e 2d 75 73 2f 77 69 6e  | ://learn.microsoft.com/en-us/win | 
| 31fa0 |  64 6f 77 73 2f 77 69 6e 33 32 2f 61 70 69 2f 70    72 6f 63 65 73 73 74 68 72 65 61 64 73 61 70 69  | dows/win32/api/processthreadsapi | 
| 31fc0 |  2f 6e 66 2d 70 72 6f 63 65 73 73 74 68 72 65 61    64 73 61 70 69 2d 63 72 65 61 74 65 70 72 6f 63  | /nf-processthreadsapi-createproc | 
| 31fe0 |  65 73 73 61 0a 0a 49 74 20 69 73 20 73 65 74 20    74 6f 20 28 23 78 38 30 30 30 20 2d 20 23 78 31  | essa..It.is.set.to.(#x8000.-.#x1 | 
| 32000 |  30 30 30 20 2d 20 32 29 20 74 6f 20 61 63 63 6f    75 6e 74 20 66 6f 72 20 6f 74 68 65 72 20 28 6e  | 000.-.2).to.account.for.other.(n | 
| 32020 |  6f 6e 2d 64 61 74 61 29 20 43 75 72 6c 0a 63 6f    6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d  | on-data).Curl.command.line.argum | 
| 32040 |  65 6e 74 73 2e 22 0a 20 20 3a 74 79 70 65 20 27    6e 61 74 6e 75 6d 29 0a 0a 28 64 65 66 69 6e 65  | ents."...:type.'natnum)..(define | 
| 32060 |  2d 6f 62 73 6f 6c 65 74 65 2d 76 61 72 69 61 62    6c 65 2d 61 6c 69 61 73 20 27 67 70 74 65 6c 2d  | -obsolete-variable-alias.'gptel- | 
| 32080 |  70 72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f    6f 6b 0a 20 20 27 67 70 74 65 6c 2d 70 72 6f 6d  | prompt-filter-hook...'gptel-prom | 
| 320a0 |  70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e    63 74 69 6f 6e 73 20 22 30 2e 39 2e 39 22 29 0a  | pt-transform-functions."0.9.9"). | 
| 320c0 |  0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65    6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f  | .(defcustom.gptel-prompt-transfo | 
| 320e0 |  72 6d 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 27    28 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72  | rm-functions...'(gptel--transfor | 
| 32100 |  6d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 67    70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d  | m-apply-preset.gptel--transform- | 
| 32120 |  61 64 64 2d 63 6f 6e 74 65 78 74 29 0a 20 20 22    48 61 6e 64 6c 65 72 73 20 74 6f 20 61 75 67 6d  | add-context)..."Handlers.to.augm | 
| 32140 |  65 6e 74 20 6f 72 20 74 72 61 6e 73 66 6f 72 6d    20 61 20 71 75 65 72 79 20 62 65 66 6f 72 65 20  | ent.or.transform.a.query.before. | 
| 32160 |  73 65 6e 64 69 6e 67 20 69 74 2e 0a 0a 54 68 69    73 20 68 6f 6f 6b 20 69 73 20 63 61 6c 6c 65 64  | sending.it...This.hook.is.called | 
| 32180 |  20 69 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20    62 75 66 66 65 72 20 63 6f 6e 74 61 69 6e 69 6e  | .in.a.temporary.buffer.containin | 
| 321a0 |  67 20 74 68 65 20 74 65 78 74 20 74 6f 0a 62 65    20 73 65 6e 74 2c 20 77 69 74 68 20 74 68 65 20  | g.the.text.to.be.sent,.with.the. | 
| 321c0 |  63 75 72 73 6f 72 20 61 74 20 74 68 65 20 65 6e    64 20 6f 66 20 74 68 65 20 70 72 6f 6d 70 74 2e  | cursor.at.the.end.of.the.prompt. | 
| 321e0 |  20 20 59 6f 75 20 63 61 6e 20 75 73 65 0a 69 74    20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 62  | ..You.can.use.it.to.modify.the.b | 
| 32200 |  75 66 66 65 72 20 6f 72 20 62 75 66 66 65 72 2d    6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 73 20  | uffer.or.buffer-local.variables. | 
| 32220 |  61 73 20 72 65 71 75 69 72 65 64 2e 0a 0a 53 69    6e 63 65 20 74 68 65 73 65 20 66 75 6e 63 74 69  | as.required...Since.these.functi | 
| 32240 |  6f 6e 73 20 6d 6f 64 69 66 79 20 74 68 65 20 70    72 6f 6d 70 74 20 63 6f 6e 73 74 72 75 63 74 69  | ons.modify.the.prompt.constructi | 
| 32260 |  6f 6e 20 62 75 66 66 65 72 2c 20 74 68 65 20 6f    72 64 65 72 0a 69 6e 20 77 68 69 63 68 20 74 68  | on.buffer,.the.order.in.which.th | 
| 32280 |  65 79 20 72 75 6e 20 69 73 20 73 69 67 6e 69 66    69 63 61 6e 74 21 20 20 49 6e 20 70 61 72 74 69  | ey.run.is.significant!..In.parti | 
| 322a0 |  63 75 6c 61 72 2c 20 79 6f 75 20 6d 61 79 20 77    61 6e 74 20 74 6f 20 61 64 64 0a 79 6f 75 72 20  | cular,.you.may.want.to.add.your. | 
| 322c0 |  66 75 6e 63 74 69 6f 6e 20 62 65 66 6f 72 65 20    28 74 68 65 20 64 65 66 61 75 6c 74 29 20 6f 72  | function.before.(the.default).or | 
| 322e0 |  20 61 66 74 65 72 0a 60 67 70 74 65 6c 2d 2d 74    72 61 6e 73 66 6f 72 6d 2d 61 64 64 2d 63 6f 6e  | .after.`gptel--transform-add-con | 
| 32300 |  74 65 78 74 27 2c 20 77 68 69 63 68 20 61 64 64    73 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78  | text',.which.adds.gptel's.contex | 
| 32320 |  74 20 28 6f 74 68 65 72 0a 62 75 66 66 65 72 73    2c 20 66 69 6c 65 73 20 65 74 63 29 20 74 6f 20  | t.(other.buffers,.files.etc).to. | 
| 32340 |  74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a 45 78    61 6d 70 6c 65 3a 20 41 20 74 79 70 69 63 61 6c  | this.buffer...Example:.A.typical | 
| 32360 |  20 75 73 65 20 63 61 73 65 20 6d 69 67 68 74 20    62 65 20 74 6f 20 73 65 61 72 63 68 20 66 6f 72  | .use.case.might.be.to.search.for | 
| 32380 |  20 6f 63 63 75 72 72 65 6e 63 65 73 20 6f 66 20    24 28 63 6d 64 29 0a 61 6e 64 20 72 65 70 6c 61  | .occurrences.of.$(cmd).and.repla | 
| 323a0 |  63 65 20 69 74 20 77 69 74 68 20 74 68 65 20 6f    75 74 70 75 74 20 6f 66 20 74 68 65 20 73 68 65  | ce.it.with.the.output.of.the.she | 
| 323c0 |  6c 6c 20 63 6f 6d 6d 61 6e 64 20 63 6d 64 2c 20    6d 61 6b 69 6e 67 20 69 74 20 65 61 73 79 0a 74  | ll.command.cmd,.making.it.easy.t | 
| 323e0 |  6f 20 73 65 6e 64 20 74 68 65 20 6f 75 74 70 75    74 20 6f 66 20 73 68 65 6c 6c 20 63 6f 6d 6d 61  | o.send.the.output.of.shell.comma | 
| 32400 |  6e 64 73 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a    0a 54 72 61 6e 73 66 6f 72 6d 20 66 75 6e 63 74  | nds.to.the.LLM...Transform.funct | 
| 32420 |  69 6f 6e 73 20 63 61 6e 20 62 65 20 73 79 6e 63    68 72 6f 6e 6f 75 73 20 6f 72 20 61 73 79 6e 63  | ions.can.be.synchronous.or.async | 
| 32440 |  68 72 6f 6e 6f 75 73 2e 0a 0a 53 79 6e 63 68 72    6f 6e 6f 75 73 20 68 6f 6f 6b 20 66 75 6e 63 74  | hronous...Synchronous.hook.funct | 
| 32460 |  69 6f 6e 73 20 6d 75 73 74 20 61 63 63 65 70 74    20 7a 65 72 6f 20 6f 72 20 6f 6e 65 20 61 72 67  | ions.must.accept.zero.or.one.arg | 
| 32480 |  75 6d 65 6e 74 3a 20 74 68 65 20 49 4e 46 4f 0a    70 6c 69 73 74 20 66 6f 72 20 74 68 65 20 63 75  | ument:.the.INFO.plist.for.the.cu | 
| 324a0 |  72 72 65 6e 74 20 72 65 71 75 65 73 74 2e 0a 0a    41 73 79 6e 63 68 72 6f 6e 6f 75 73 20 68 6f 6f  | rrent.request...Asynchronous.hoo | 
| 324c0 |  6b 20 66 75 6e 63 74 69 6f 6e 73 20 6d 75 73 74    20 61 63 63 65 70 74 20 74 77 6f 20 61 72 67 75  | k.functions.must.accept.two.argu | 
| 324e0 |  6d 65 6e 74 73 3a 20 61 20 63 61 6c 6c 62 61 63    6b 20 74 6f 0a 63 61 6c 6c 20 61 66 74 65 72 20  | ments:.a.callback.to.call.after. | 
| 32500 |  74 68 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69    6f 6e 20 69 73 20 63 6f 6d 70 6c 65 74 65 2c 20  | the.transformation.is.complete,. | 
| 32520 |  61 6e 64 20 74 68 65 20 49 4e 46 4f 20 70 6c 69    73 74 20 66 6f 72 20 74 68 65 0a 63 75 72 72 65  | and.the.INFO.plist.for.the.curre | 
| 32540 |  6e 74 20 72 65 71 75 65 73 74 2e 0a 0a 4e 6f 74    65 20 74 68 61 74 20 77 68 69 6c 65 20 74 68 69  | nt.request...Note.that.while.thi | 
| 32560 |  73 20 73 65 74 20 6f 66 20 68 61 6e 64 6c 65 72    73 20 63 61 6e 20 63 65 72 74 61 69 6e 6c 79 20  | s.set.of.handlers.can.certainly. | 
| 32580 |  62 65 20 73 65 74 20 77 69 74 68 20 61 20 67 6c    6f 62 61 6c 0a 76 61 6c 75 65 20 74 6f 20 62 65  | be.set.with.a.global.value.to.be | 
| 325a0 |  20 61 70 70 6c 69 65 64 20 74 6f 20 61 6c 6c 20    71 75 65 72 69 65 73 20 69 6e 20 61 6c 6c 20 62  | .applied.to.all.queries.in.all.b | 
| 325c0 |  75 66 66 65 72 73 2c 20 69 74 20 6d 65 61 6e 74    20 74 6f 20 62 65 20 73 65 74 0a 6c 6f 63 61 6c  | uffers,.it.meant.to.be.set.local | 
| 325e0 |  6c 79 20 66 6f 72 20 61 20 73 70 65 63 69 66 69    63 20 62 75 66 66 65 72 2c 20 6f 72 20 63 68 61  | ly.for.a.specific.buffer,.or.cha | 
| 32600 |  74 20 74 6f 70 69 63 2c 20 6f 72 20 6f 6e 6c 79    20 74 68 65 20 63 6f 6e 74 65 78 74 20 6f 66 20  | t.topic,.or.only.the.context.of. | 
| 32620 |  61 0a 63 65 72 74 61 69 6e 20 74 61 73 6b 2e 22    0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a  | a.certain.task."...:type.'hook). | 
| 32640 |  0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65    6c 2d 70 6f 73 74 2d 72 65 71 75 65 73 74 2d 68  | .(defcustom.gptel-post-request-h | 
| 32660 |  6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20    72 75 6e 20 61 66 74 65 72 20 73 65 6e 64 69 6e  | ook.nil..."Hook.run.after.sendin | 
| 32680 |  67 20 61 20 67 70 74 65 6c 20 72 65 71 75 65 73    74 2e 0a 0a 54 68 69 73 20 72 75 6e 73 20 28 70  | g.a.gptel.request...This.runs.(p | 
| 326a0 |  6f 73 73 69 62 6c 79 29 20 62 65 66 6f 72 65 20    61 6e 79 20 72 65 73 70 6f 6e 73 65 20 69 73 20  | ossibly).before.any.response.is. | 
| 326c0 |  72 65 63 65 69 76 65 64 2e 22 0a 20 20 3a 74 79    70 65 20 27 68 6f 6f 6b 29 0a 0a 3b 3b 20 54 4f  | received."...:type.'hook)..;;.TO | 
| 326e0 |  44 4f 28 76 31 2e 30 29 3a 20 52 65 6d 6f 76 65    20 74 68 69 73 2e 0a 28 64 65 66 76 61 72 20 67  | DO(v1.0):.Remove.this..(defvar.g | 
| 32700 |  70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 66 69    6c 74 65 72 2d 66 75 6e 63 74 69 6f 6e 73 20 6e  | ptel-response-filter-functions.n | 
| 32720 |  69 6c 29 0a 28 6d 61 6b 65 2d 6f 62 73 6f 6c 65    74 65 2d 76 61 72 69 61 62 6c 65 0a 20 27 67 70  | il).(make-obsolete-variable..'gp | 
| 32740 |  74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 66 69 6c    74 65 72 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 22  | tel-response-filter-functions.." | 
| 32760 |  52 65 73 70 6f 6e 73 65 20 66 69 6c 74 65 72 69    6e 67 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20  | Response.filtering.is.no.longer. | 
| 32780 |  73 75 70 70 6f 72 74 65 64 20 69 6e 20 67 70 74    65 6c 2e 20 20 54 6f 20 74 6f 67 67 6c 65 0a 6d  | supported.in.gptel...To.toggle.m | 
| 327a0 |  61 72 6b 64 6f 77 6e 20 74 6f 20 4f 72 67 20 63    6f 6e 76 65 72 73 69 6f 6e 2c 20 73 65 65 20 60  | arkdown.to.Org.conversion,.see.` | 
| 327c0 |  67 70 74 65 6c 2d 6f 72 67 2d 63 6f 6e 76 65 72    74 2d 72 65 73 70 6f 6e 73 65 27 2e 20 20 54 6f  | gptel-org-convert-response'...To | 
| 327e0 |  0a 66 69 6c 74 65 72 20 4c 4c 4d 20 72 65 73 70    6f 6e 73 65 20 74 65 78 74 2c 20 65 69 74 68 65  | .filter.LLM.response.text,.eithe | 
| 32800 |  72 20 75 73 65 20 60 67 70 74 65 6c 2d 72 65 71    75 65 73 74 27 20 77 69 74 68 20 61 0a 63 75 73  | r.use.`gptel-request'.with.a.cus | 
| 32820 |  74 6f 6d 20 63 61 6c 6c 62 61 63 6b 2c 20 6f 72    20 75 73 65 20 60 67 70 74 65 6c 2d 70 6f 73 74  | tom.callback,.or.use.`gptel-post | 
| 32840 |  2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69    6f 6e 73 27 2e 22 0a 20 22 30 2e 39 2e 37 22 29  | -response-functions'.".."0.9.7") | 
| 32860 |  0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74    65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d  | ..(defcustom.gptel-pre-response- | 
| 32880 |  68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b    20 72 75 6e 20 62 65 66 6f 72 65 20 69 6e 73 65  | hook.nil..."Hook.run.before.inse | 
| 328a0 |  72 74 69 6e 67 20 74 68 65 20 4c 4c 4d 20 72 65    73 70 6f 6e 73 65 20 69 6e 74 6f 20 74 68 65 20  | rting.the.LLM.response.into.the. | 
| 328c0 |  63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 0a    0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61  | current.buffer...This.hook.is.ca | 
| 328e0 |  6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66    65 72 20 77 68 65 72 65 20 74 68 65 20 4c 4c 4d  | lled.in.the.buffer.where.the.LLM | 
| 32900 |  20 72 65 73 70 6f 6e 73 65 20 77 69 6c 6c 20 62    65 0a 69 6e 73 65 72 74 65 64 2e 0a 0a 4e 6f 74  | .response.will.be.inserted...Not | 
| 32920 |  65 3a 20 74 68 69 73 20 68 6f 6f 6b 20 6f 6e 6c    79 20 72 75 6e 73 20 69 66 20 74 68 65 20 72 65  | e:.this.hook.only.runs.if.the.re | 
| 32940 |  71 75 65 73 74 20 73 75 63 63 65 65 64 73 2e 22    0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a  | quest.succeeds."...:type.'hook). | 
| 32960 |  0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74    65 2d 76 61 72 69 61 62 6c 65 2d 61 6c 69 61 73  | .(define-obsolete-variable-alias | 
| 32980 |  0a 20 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72    65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 20 27 67 70  | ...'gptel-post-response-hook.'gp | 
| 329a0 |  74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73    65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 22 30  | tel-post-response-functions..."0 | 
| 329c0 |  2e 36 2e 30 22 0a 20 20 22 50 6f 73 74 2d 72 65    73 70 6f 6e 73 65 20 66 75 6e 63 74 69 6f 6e 73  | .6.0"..."Post-response.functions | 
| 329e0 |  20 61 72 65 20 6e 6f 77 20 63 61 6c 6c 65 64 20    77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e  | .are.now.called.with.two.argumen | 
| 32a00 |  74 73 3a 20 74 68 65 0a 73 74 61 72 74 20 61 6e    64 20 65 6e 64 20 62 75 66 66 65 72 20 70 6f 73  | ts:.the.start.and.end.buffer.pos | 
| 32a20 |  69 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 72 65    73 70 6f 6e 73 65 2e 22 29 0a 0a 28 64 65 66 63  | itions.of.the.response.")..(defc | 
| 32a40 |  75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74    2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69  | ustom.gptel-post-response-functi | 
| 32a60 |  6f 6e 73 20 6e 69 6c 0a 20 20 22 41 62 6e 6f 72    6d 61 6c 20 68 6f 6f 6b 20 72 75 6e 20 61 66 74  | ons.nil..."Abnormal.hook.run.aft | 
| 32a80 |  65 72 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65    20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 6e  | er.inserting.the.LLM.response.in | 
| 32aa0 |  74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62    75 66 66 65 72 2e 0a 0a 54 68 69 73 20 68 6f 6f  | to.the.current.buffer...This.hoo | 
| 32ac0 |  6b 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 74    68 65 20 62 75 66 66 65 72 20 74 6f 20 77 68 69  | k.is.called.in.the.buffer.to.whi | 
| 32ae0 |  63 68 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f    6e 73 65 20 69 73 0a 73 65 6e 74 2c 20 61 6e 64  | ch.the.LLM.response.is.sent,.and | 
| 32b00 |  20 61 66 74 65 72 20 74 68 65 20 66 75 6c 6c 20    72 65 73 70 6f 6e 73 65 20 68 61 73 20 62 65 65  | .after.the.full.response.has.bee | 
| 32b20 |  6e 20 69 6e 73 65 72 74 65 64 2e 20 20 45 61 63    68 0a 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61  | n.inserted...Each.function.is.ca | 
| 32b40 |  6c 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61 72    67 75 6d 65 6e 74 73 3a 20 74 68 65 20 72 65 73  | lled.with.two.arguments:.the.res | 
| 32b60 |  70 6f 6e 73 65 20 62 65 67 69 6e 6e 69 6e 67 20    61 6e 64 0a 65 6e 64 20 70 6f 73 69 74 69 6f 6e  | ponse.beginning.and.end.position | 
| 32b80 |  73 2e 0a 0a 4e 6f 74 65 3a 20 74 68 69 73 20 68    6f 6f 6b 20 72 75 6e 73 20 65 76 65 6e 20 69 66  | s...Note:.this.hook.runs.even.if | 
| 32ba0 |  20 74 68 65 20 72 65 71 75 65 73 74 20 66 61 69    6c 73 2e 20 20 49 6e 20 74 68 69 73 20 63 61 73  | .the.request.fails...In.this.cas | 
| 32bc0 |  65 20 74 68 65 0a 72 65 73 70 6f 6e 73 65 20 62    65 67 69 6e 6e 69 6e 67 20 61 6e 64 20 65 6e 64  | e.the.response.beginning.and.end | 
| 32be0 |  20 70 6f 73 69 74 69 6f 6e 73 20 61 72 65 20 62    6f 74 68 20 74 68 65 20 63 75 72 73 6f 72 20 70  | .positions.are.both.the.cursor.p | 
| 32c00 |  6f 73 69 74 69 6f 6e 0a 61 74 20 74 68 65 20 74    69 6d 65 20 6f 66 20 74 68 65 20 72 65 71 75 65  | osition.at.the.time.of.the.reque | 
| 32c20 |  73 74 2e 22 0a 20 20 3a 74 79 70 65 20 27 68 6f    6f 6b 29 0a 0a 3b 3b 20 28 64 65 66 63 75 73 74  | st."...:type.'hook)..;;.(defcust | 
| 32c40 |  6f 6d 20 67 70 74 65 6c 2d 70 72 65 2d 73 74 72    65 61 6d 2d 69 6e 73 65 72 74 2d 68 6f 6f 6b 20  | om.gptel-pre-stream-insert-hook. | 
| 32c60 |  6e 69 6c 0a 3b 3b 20 20 20 22 48 6f 6f 6b 20 72    75 6e 20 62 65 66 6f 72 65 20 65 61 63 68 20 69  | nil.;;..."Hook.run.before.each.i | 
| 32c80 |  6e 73 65 72 74 69 6f 6e 20 6f 66 20 74 68 65 20    4c 4c 4d 27 73 20 73 74 72 65 61 6d 69 6e 67 20  | nsertion.of.the.LLM's.streaming. | 
| 32ca0 |  72 65 73 70 6f 6e 73 65 2e 0a 0a 3b 3b 20 54 68    69 73 20 68 6f 6f 6b 20 69 73 20 63 61 6c 6c 65  | response...;;.This.hook.is.calle | 
| 32cc0 |  64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20    66 72 6f 6d 20 77 68 69 63 68 20 74 68 65 20 70  | d.in.the.buffer.from.which.the.p | 
| 32ce0 |  72 6f 6d 70 74 20 77 61 73 20 73 65 6e 74 0a 3b    3b 20 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 69 6d  | rompt.was.sent.;;.to.the.LLM,.im | 
| 32d00 |  6d 65 64 69 61 74 65 6c 79 20 62 65 66 6f 72 65    20 74 65 78 74 20 69 6e 73 65 72 74 69 6f 6e 2e  | mediately.before.text.insertion. | 
| 32d20 |  22 0a 3b 3b 20 20 20 3a 67 72 6f 75 70 20 27 67    70 74 65 6c 0a 3b 3b 20 20 20 3a 74 79 70 65 20  | ".;;...:group.'gptel.;;...:type. | 
| 32d40 |  27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74    6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74  | 'hook)..(defcustom.gptel-post-st | 
| 32d60 |  72 65 61 6d 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20    22 48 6f 6f 6b 20 72 75 6e 20 61 66 74 65 72 20  | ream-hook.nil..."Hook.run.after. | 
| 32d80 |  65 61 63 68 20 69 6e 73 65 72 74 69 6f 6e 20 6f    66 20 74 68 65 20 4c 4c 4d 27 73 20 73 74 72 65  | each.insertion.of.the.LLM's.stre | 
| 32da0 |  61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 2e 0a    0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61  | aming.response...This.hook.is.ca | 
| 32dc0 |  6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66    65 72 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68  | lled.in.the.buffer.from.which.th | 
| 32de0 |  65 20 70 72 6f 6d 70 74 20 77 61 73 20 73 65 6e    74 0a 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 61 6e  | e.prompt.was.sent.to.the.LLM,.an | 
| 32e00 |  64 20 61 66 74 65 72 20 61 20 74 65 78 74 20 69    6e 73 65 72 74 69 6f 6e 2e 22 0a 20 20 3a 74 79  | d.after.a.text.insertion."...:ty | 
| 32e20 |  70 65 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63    75 73 74 6f 6d 20 67 70 74 65 6c 2d 73 61 76 65  | pe.'hook)..(defcustom.gptel-save | 
| 32e40 |  2d 73 74 61 74 65 2d 68 6f 6f 6b 20 6e 69 6c 0a    20 20 22 48 6f 6f 6b 20 72 75 6e 20 62 65 66 6f  | -state-hook.nil..."Hook.run.befo | 
| 32e60 |  72 65 20 67 70 74 65 6c 20 73 61 76 65 73 20 6d    6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 20  | re.gptel.saves.model.parameters. | 
| 32e80 |  74 6f 20 61 20 66 69 6c 65 2e 0a 0a 59 6f 75 20    63 61 6e 20 75 73 65 20 74 68 69 73 20 68 6f 6f  | to.a.file...You.can.use.this.hoo | 
| 32ea0 |  6b 20 74 6f 20 73 74 6f 72 65 20 61 64 64 69 74    69 6f 6e 61 6c 20 63 6f 6e 76 65 72 73 61 74 69  | k.to.store.additional.conversati | 
| 32ec0 |  6f 6e 20 73 74 61 74 65 20 6f 72 0a 6d 6f 64 65    6c 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20  | on.state.or.model.parameters.to. | 
| 32ee0 |  74 68 65 20 63 68 61 74 20 62 75 66 66 65 72 2c    20 6f 72 20 74 6f 20 6d 6f 64 69 66 79 20 74 68  | the.chat.buffer,.or.to.modify.th | 
| 32f00 |  65 20 62 75 66 66 65 72 20 69 6e 0a 73 6f 6d 65    20 6f 74 68 65 72 20 77 61 79 2e 22 0a 20 20 3a  | e.buffer.in.some.other.way."...: | 
| 32f20 |  74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 28 64 65    66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 64 65  | type.'hook)..(defcustom.gptel-de | 
| 32f40 |  66 61 75 6c 74 2d 6d 6f 64 65 20 28 69 66 20 28    66 62 6f 75 6e 64 70 20 27 6d 61 72 6b 64 6f 77  | fault-mode.(if.(fboundp.'markdow | 
| 32f60 |  6e 2d 6d 6f 64 65 29 0a 09 09 09 09 20 20 27 6d    61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 0a 09 09 09  | n-mode).......'markdown-mode.... | 
| 32f80 |  09 27 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 22    54 68 65 20 64 65 66 61 75 6c 74 20 6d 61 6a 6f  | .'text-mode)..."The.default.majo | 
| 32fa0 |  72 20 6d 6f 64 65 20 66 6f 72 20 64 65 64 69 63    61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72  | r.mode.for.dedicated.chat.buffer | 
| 32fc0 |  73 2e 0a 0a 49 66 20 60 6d 61 72 6b 64 6f 77 6e    2d 6d 6f 64 65 27 20 69 73 20 61 76 61 69 6c 61  | s...If.`markdown-mode'.is.availa | 
| 32fe0 |  62 6c 65 2c 20 69 74 20 69 73 20 75 73 65 64 2e    20 20 4f 74 68 65 72 77 69 73 65 20 67 70 74 65  | ble,.it.is.used...Otherwise.gpte | 
| 33000 |  6c 0a 64 65 66 61 75 6c 74 73 20 74 6f 20 60 74    65 78 74 2d 6d 6f 64 65 27 2e 22 0a 20 20 3a 74  | l.defaults.to.`text-mode'."...:t | 
| 33020 |  79 70 65 20 27 66 75 6e 63 74 69 6f 6e 29 0a 0a    3b 3b 20 54 4f 44 4f 3a 20 48 61 6e 64 6c 65 20  | ype.'function)..;;.TODO:.Handle. | 
| 33040 |  60 70 72 6f 67 2d 6d 6f 64 65 27 20 75 73 69 6e    67 20 74 68 65 20 60 63 6f 6d 6d 65 6e 74 2d 73  | `prog-mode'.using.the.`comment-s | 
| 33060 |  74 61 72 74 27 20 76 61 72 69 61 62 6c 65 0a 28    64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d  | tart'.variable.(defcustom.gptel- | 
| 33080 |  70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c    69 73 74 0a 20 20 27 28 28 6d 61 72 6b 64 6f 77  | prompt-prefix-alist...'((markdow | 
| 330a0 |  6e 2d 6d 6f 64 65 20 2e 20 22 23 23 23 20 22 29    0a 20 20 20 20 28 6f 72 67 2d 6d 6f 64 65 20 2e  | n-mode..."###.").....(org-mode.. | 
| 330c0 |  20 22 2a 2a 2a 20 22 29 0a 20 20 20 20 28 74 65    78 74 2d 6d 6f 64 65 20 2e 20 22 23 23 23 20 22  | ."***.").....(text-mode..."###." | 
| 330e0 |  29 29 0a 20 20 22 53 74 72 69 6e 67 20 75 73 65    64 20 61 73 20 61 20 70 72 65 66 69 78 20 74 6f  | ))..."String.used.as.a.prefix.to | 
| 33100 |  20 74 68 65 20 71 75 65 72 79 20 62 65 69 6e 67    20 73 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c 4d  | .the.query.being.sent.to.the.LLM | 
| 33120 |  2e 0a 0a 54 68 69 73 20 69 73 20 6d 65 61 6e 74    20 66 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f  | ...This.is.meant.for.the.user.to | 
| 33140 |  20 64 69 73 74 69 6e 67 75 69 73 68 20 62 65 74    77 65 65 6e 20 71 75 65 72 69 65 73 20 61 6e 64  | .distinguish.between.queries.and | 
| 33160 |  0a 72 65 73 70 6f 6e 73 65 73 2c 20 61 6e 64 20    69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  | .responses,.and.is.removed.from. | 
| 33180 |  74 68 65 20 71 75 65 72 79 20 62 65 66 6f 72 65    20 69 74 20 69 73 20 73 65 6e 74 2e 0a 0a 54 68  | the.query.before.it.is.sent...Th | 
| 331a0 |  69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6d    61 70 70 69 6e 67 20 6d 61 6a 6f 72 20 6d 6f 64  | is.is.an.alist.mapping.major.mod | 
| 331c0 |  65 73 20 74 6f 20 74 68 65 20 70 72 65 66 69 78    20 73 74 72 69 6e 67 73 2e 20 20 54 68 69 73 0a  | es.to.the.prefix.strings...This. | 
| 331e0 |  69 73 20 6f 6e 6c 79 20 69 6e 73 65 72 74 65 64    20 69 6e 20 64 65 64 69 63 61 74 65 64 20 67 70  | is.only.inserted.in.dedicated.gp | 
| 33200 |  74 65 6c 20 62 75 66 66 65 72 73 2e 22 0a 20 20    3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b  | tel.buffers."...:type.'(alist.:k | 
| 33220 |  65 79 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a    76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e  | ey-type.symbol.:value-type.strin | 
| 33240 |  67 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20    67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70  | g))..(defcustom.gptel-response-p | 
| 33260 |  72 65 66 69 78 2d 61 6c 69 73 74 0a 20 20 27 28    28 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 20 2e  | refix-alist...'((markdown-mode.. | 
| 33280 |  20 22 22 29 0a 20 20 20 20 28 6f 72 67 2d 6d 6f    64 65 20 2e 20 22 22 29 0a 20 20 20 20 28 74 65  | ."").....(org-mode..."").....(te | 
| 332a0 |  78 74 2d 6d 6f 64 65 20 2e 20 22 22 29 29 0a 20    20 22 53 74 72 69 6e 67 20 69 6e 73 65 72 74 65  | xt-mode...""))..."String.inserte | 
| 332c0 |  64 20 62 65 66 6f 72 65 20 74 68 65 20 72 65 73    70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 4c  | d.before.the.response.from.the.L | 
| 332e0 |  4c 4d 2e 0a 0a 54 68 69 73 20 69 73 20 6d 65 61    6e 74 20 66 6f 72 20 74 68 65 20 75 73 65 72 20  | LM...This.is.meant.for.the.user. | 
| 33300 |  74 6f 20 64 69 73 74 69 6e 67 75 69 73 68 20 62    65 74 77 65 65 6e 20 71 75 65 72 69 65 73 20 61  | to.distinguish.between.queries.a | 
| 33320 |  6e 64 0a 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 54    68 69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 20  | nd.responses...This.is.an.alist. | 
| 33340 |  6d 61 70 70 69 6e 67 20 6d 61 6a 6f 72 20 6d 6f    64 65 73 20 74 6f 20 74 68 65 20 72 65 70 6c 79  | mapping.major.modes.to.the.reply | 
| 33360 |  20 70 72 65 66 69 78 20 73 74 72 69 6e 67 73 2e    20 20 54 68 69 73 0a 69 73 20 6f 6e 6c 79 20 69  | .prefix.strings...This.is.only.i | 
| 33380 |  6e 73 65 72 74 65 64 20 69 6e 20 64 65 64 69 63    61 74 65 64 20 67 70 74 65 6c 20 62 75 66 66 65  | nserted.in.dedicated.gptel.buffe | 
| 333a0 |  72 73 20 62 65 66 6f 72 65 20 74 68 65 20 41 49    27 73 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 20  | rs.before.the.AI's.response."... | 
| 333c0 |  3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b    65 79 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a  | :type.'(alist.:key-type.symbol.: | 
| 333e0 |  76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e    67 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20  | value-type.string))..(defcustom. | 
| 33400 |  67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73    65 70 61 72 61 74 6f 72 20 22 5c 6e 5c 6e 22 0a  | gptel-response-separator."\n\n". | 
| 33420 |  20 20 22 53 74 72 69 6e 67 20 69 6e 73 65 72 74    65 64 20 62 65 66 6f 72 65 20 72 65 73 70 6f 6e  | .."String.inserted.before.respon | 
| 33440 |  73 65 73 2e 0a 0a 41 6c 73 6f 20 69 6e 73 65 72    74 65 64 20 62 65 66 6f 72 65 20 61 6e 64 20 61  | ses...Also.inserted.before.and.a | 
| 33460 |  66 74 65 72 20 6e 6f 6e 2d 63 6f 6e 73 65 63 75    74 69 76 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 2e  | fter.non-consecutive.tool.calls. | 
| 33480 |  22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e    67 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67  | "...:type.'string)..(defcustom.g | 
| 334a0 |  70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d    6c 69 6e 65 20 74 0a 20 20 22 57 68 65 74 68 65  | ptel-use-header-line.t..."Whethe | 
| 334c0 |  72 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 73    68 6f 75 6c 64 20 75 73 65 20 68 65 61 64 65 72  | r.`gptel-mode'.should.use.header | 
| 334e0 |  2d 6c 69 6e 65 20 66 6f 72 20 73 74 61 74 75 73    20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 57  | -line.for.status.information...W | 
| 33500 |  68 65 6e 20 73 65 74 20 74 6f 20 6e 69 6c 2c 20    75 73 65 20 74 68 65 20 6d 6f 64 65 20 6c 69 6e  | hen.set.to.nil,.use.the.mode.lin | 
| 33520 |  65 20 66 6f 72 20 28 6d 69 6e 69 6d 61 6c 29 20    73 74 61 74 75 73 0a 69 6e 66 6f 72 6d 61 74 69  | e.for.(minimal).status.informati | 
| 33540 |  6f 6e 20 61 6e 64 20 74 68 65 20 65 63 68 6f 20    61 72 65 61 20 66 6f 72 20 6d 65 73 73 61 67 65  | on.and.the.echo.area.for.message | 
| 33560 |  73 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f    6c 65 61 6e 29 0a 0a 3b 3b 20 53 65 74 20 6d 69  | s."...:type.'boolean)..;;.Set.mi | 
| 33580 |  6e 69 6d 61 6c 6c 79 20 74 6f 20 61 76 6f 69 64    20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20  | nimally.to.avoid.display-buffer. | 
| 335a0 |  61 63 74 69 6f 6e 20 61 6c 69 73 74 20 63 6f 6e    66 6c 69 63 74 73 20 28 23 35 33 33 29 0a 28 64  | action.alist.conflicts.(#533).(d | 
| 335c0 |  65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 64    69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63  | efcustom.gptel-display-buffer-ac | 
| 335e0 |  74 69 6f 6e 20 60 28 6e 69 6c 20 28 62 6f 64 79    2d 66 75 6e 63 74 69 6f 6e 20 2e 20 2c 23 27 73  | tion.`(nil.(body-function...,#'s | 
| 33600 |  65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 29 0a 20    20 22 54 68 65 20 61 63 74 69 6f 6e 20 75 73 65  | elect-window))..."The.action.use | 
| 33620 |  64 20 74 6f 20 64 69 73 70 6c 61 79 20 67 70 74    65 6c 20 63 68 61 74 20 62 75 66 66 65 72 73 2e  | d.to.display.gptel.chat.buffers. | 
| 33640 |  0a 0a 54 68 65 20 67 70 74 65 6c 20 62 75 66 66    65 72 20 69 73 20 64 69 73 70 6c 61 79 65 64 20  | ..The.gptel.buffer.is.displayed. | 
| 33660 |  69 6e 20 61 20 77 69 6e 64 6f 77 20 75 73 69 6e    67 0a 0a 20 20 28 64 69 73 70 6c 61 79 2d 62 75  | in.a.window.using....(display-bu | 
| 33680 |  66 66 65 72 20 42 55 46 46 45 52 20 67 70 74 65    6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72  | ffer.BUFFER.gptel-display-buffer | 
| 336a0 |  2d 61 63 74 69 6f 6e 29 0a 0a 54 68 65 20 76 61    6c 75 65 20 6f 66 20 74 68 69 73 20 6f 70 74 69  | -action)..The.value.of.this.opti | 
| 336c0 |  6f 6e 20 68 61 73 20 74 68 65 20 66 6f 72 6d 20    28 46 55 4e 43 54 49 4f 4e 20 2e 20 41 4c 49 53  | on.has.the.form.(FUNCTION...ALIS | 
| 336e0 |  54 29 2c 0a 77 68 65 72 65 20 46 55 4e 43 54 49    4f 4e 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e  | T),.where.FUNCTION.is.a.function | 
| 33700 |  20 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 66 75    6e 63 74 69 6f 6e 73 2e 20 20 45 61 63 68 20 73  | .or.a.list.of.functions...Each.s | 
| 33720 |  75 63 68 0a 66 75 6e 63 74 69 6f 6e 20 73 68 6f    75 6c 64 20 61 63 63 65 70 74 20 74 77 6f 20 61  | uch.function.should.accept.two.a | 
| 33740 |  72 67 75 6d 65 6e 74 73 3a 20 61 20 62 75 66 66    65 72 20 74 6f 20 64 69 73 70 6c 61 79 20 61 6e  | rguments:.a.buffer.to.display.an | 
| 33760 |  64 20 61 6e 0a 61 6c 69 73 74 20 6f 66 20 74 68    65 20 73 61 6d 65 20 66 6f 72 6d 20 61 73 20 41  | d.an.alist.of.the.same.form.as.A | 
| 33780 |  4c 49 53 54 2e 20 20 53 65 65 20 69 6e 66 6f 20    6e 6f 64 65 20 60 28 65 6c 69 73 70 29 43 68 6f  | LIST...See.info.node.`(elisp)Cho | 
| 337a0 |  6f 73 69 6e 67 0a 57 69 6e 64 6f 77 27 20 66 6f    72 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 3a 74  | osing.Window'.for.details."...:t | 
| 337c0 |  79 70 65 20 64 69 73 70 6c 61 79 2d 62 75 66 66    65 72 2d 2d 61 63 74 69 6f 6e 2d 63 75 73 74 6f  | ype.display-buffer--action-custo | 
| 337e0 |  6d 2d 74 79 70 65 29 0a 0a 28 64 65 66 63 75 73    74 6f 6d 20 67 70 74 65 6c 2d 63 72 6f 77 64 73  | m-type)..(defcustom.gptel-crowds | 
| 33800 |  6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66    69 6c 65 0a 20 20 28 6c 65 74 20 28 28 63 61 63  | ourced-prompts-file...(let.((cac | 
| 33820 |  68 65 2d 64 69 72 20 28 6f 72 20 28 65 76 61 6c    2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 09 09  | he-dir.(or.(eval-when-compile... | 
| 33840 |  09 20 28 72 65 71 75 69 72 65 20 27 78 64 67 29    0a 09 09 09 20 28 78 64 67 2d 63 61 63 68 65 2d  | ..(require.'xdg).....(xdg-cache- | 
| 33860 |  68 6f 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73  | home))........................us | 
| 33880 |  65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f    72 79 29 29 29 0a 20 20 20 20 28 65 78 70 61 6e  | er-emacs-directory))).....(expan | 
| 338a0 |  64 2d 66 69 6c 65 2d 6e 61 6d 65 20 22 67 70 74    65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d  | d-file-name."gptel-crowdsourced- | 
| 338c0 |  70 72 6f 6d 70 74 73 2e 63 73 76 22 20 63 61 63    68 65 2d 64 69 72 29 29 0a 20 20 22 46 69 6c 65  | prompts.csv".cache-dir))..."File | 
| 338e0 |  20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 63    72 6f 77 64 73 6f 75 72 63 65 64 20 73 79 73 74  | .used.to.store.crowdsourced.syst | 
| 33900 |  65 6d 20 70 72 6f 6d 70 74 73 2e 0a 0a 54 68 65    73 65 20 61 72 65 20 70 72 6f 6d 70 74 73 20 63  | em.prompts...These.are.prompts.c | 
| 33920 |  61 63 68 65 64 20 66 72 6f 6d 20 61 6e 20 6f 6e    6c 69 6e 65 20 73 6f 75 72 63 65 20 28 73 65 65  | ached.from.an.online.source.(see | 
| 33940 |  0a 60 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f    75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 75 72  | .`gptel--crowdsourced-prompts-ur | 
| 33960 |  6c 27 29 2c 20 61 6e 64 20 63 61 6e 20 62 65 20    73 65 74 20 66 72 6f 6d 20 74 68 65 0a 74 72 61  | l'),.and.can.be.set.from.the.tra | 
| 33980 |  6e 73 69 65 6e 74 20 6d 65 6e 75 20 69 6e 74 65    72 66 61 63 65 20 70 72 6f 76 69 64 65 64 20 62  | nsient.menu.interface.provided.b | 
| 339a0 |  79 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 22    0a 20 20 3a 74 79 70 65 20 27 66 69 6c 65 29 0a  | y.`gptel-menu'."...:type.'file). | 
| 339c0 |  0a 3b 3b 20 4d 6f 64 65 6c 20 61 6e 64 20 69 6e    74 65 72 61 63 74 69 6f 6e 20 70 61 72 61 6d 65  | .;;.Model.and.interaction.parame | 
| 339e0 |  74 65 72 73 0a 28 64 65 66 63 75 73 74 6f 6d 20    67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73  | ters.(defcustom.gptel-directives | 
| 33a00 |  0a 20 20 27 28 28 64 65 66 61 75 6c 74 20 20 20    20 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c  | ...'((default......."You.are.a.l | 
| 33a20 |  61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d 6f    64 65 6c 20 6c 69 76 69 6e 67 20 69 6e 20 45 6d  | arge.language.model.living.in.Em | 
| 33a40 |  61 63 73 20 61 6e 64 20 61 20 68 65 6c 70 66 75    6c 20 61 73 73 69 73 74 61 6e 74 2e 20 52 65 73  | acs.and.a.helpful.assistant..Res | 
| 33a60 |  70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22    29 0a 20 20 20 20 28 70 72 6f 67 72 61 6d 6d 69  | pond.concisely.").....(programmi | 
| 33a80 |  6e 67 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20    6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d  | ng..."You.are.a.large.language.m | 
| 33aa0 |  6f 64 65 6c 20 61 6e 64 20 61 20 63 61 72 65 66    75 6c 20 70 72 6f 67 72 61 6d 6d 65 72 2e 20 50  | odel.and.a.careful.programmer..P | 
| 33ac0 |  72 6f 76 69 64 65 20 63 6f 64 65 20 61 6e 64 20    6f 6e 6c 79 20 63 6f 64 65 20 61 73 20 6f 75 74  | rovide.code.and.only.code.as.out | 
| 33ae0 |  70 75 74 20 77 69 74 68 6f 75 74 20 61 6e 79 20    61 64 64 69 74 69 6f 6e 61 6c 20 74 65 78 74 2c  | put.without.any.additional.text, | 
| 33b00 |  20 70 72 6f 6d 70 74 20 6f 72 20 6e 6f 74 65 2e    22 29 0a 20 20 20 20 28 77 72 69 74 69 6e 67 20  | .prompt.or.note.").....(writing. | 
| 33b20 |  20 20 20 20 2e 20 22 59 6f 75 20 61 72 65 20 61    20 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20  | ......"You.are.a.large.language. | 
| 33b40 |  6d 6f 64 65 6c 20 61 6e 64 20 61 20 77 72 69 74    69 6e 67 20 61 73 73 69 73 74 61 6e 74 2e 20 52  | model.and.a.writing.assistant..R | 
| 33b60 |  65 73 70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79    2e 22 29 0a 20 20 20 20 28 63 68 61 74 20 20 20  | espond.concisely.").....(chat... | 
| 33b80 |  20 20 20 20 20 2e 20 22 59 6f 75 20 61 72 65 20    61 20 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65  | ......."You.are.a.large.language | 
| 33ba0 |  20 6d 6f 64 65 6c 20 61 6e 64 20 61 20 63 6f 6e    76 65 72 73 61 74 69 6f 6e 20 70 61 72 74 6e 65  | .model.and.a.conversation.partne | 
| 33bc0 |  72 2e 20 52 65 73 70 6f 6e 64 20 63 6f 6e 63 69    73 65 6c 79 2e 22 29 29 0a 20 20 22 53 79 73 74  | r..Respond.concisely."))..."Syst | 
| 33be0 |  65 6d 20 70 72 6f 6d 70 74 73 20 6f 72 20 64 69    72 65 63 74 69 76 65 73 20 66 6f 72 20 74 68 65  | em.prompts.or.directives.for.the | 
| 33c00 |  20 4c 4c 4d 2e 0a 0a 45 61 63 68 20 65 6e 74 72    79 20 69 6e 20 74 68 69 73 20 61 6c 69 73 74 20  | .LLM...Each.entry.in.this.alist. | 
| 33c20 |  6d 61 70 73 20 61 20 73 79 6d 62 6f 6c 20 6e 61    6d 69 6e 67 20 74 68 65 20 64 69 72 65 63 74 69  | maps.a.symbol.naming.the.directi | 
| 33c40 |  76 65 20 74 6f 0a 74 68 65 20 64 69 72 65 63 74    69 76 65 20 69 74 73 65 6c 66 2e 20 20 42 79 20  | ve.to.the.directive.itself...By. | 
| 33c60 |  64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20 75    73 65 73 20 74 68 65 20 64 69 72 65 63 74 69 76  | default,.gptel.uses.the.directiv | 
| 33c80 |  65 20 77 69 74 68 0a 74 68 65 20 6b 65 79 20 5c    5c 2b 60 64 65 66 61 75 6c 74 27 2e 0a 0a 54 6f  | e.with.the.key.\\+`default'...To | 
| 33ca0 |  20 73 65 74 20 74 68 65 20 64 69 72 65 63 74 69    76 65 20 66 6f 72 20 61 20 63 68 61 74 20 73 65  | .set.the.directive.for.a.chat.se | 
| 33cc0 |  73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76    65 6c 79 20 63 61 6c 6c 0a 60 67 70 74 65 6c 2d  | ssion.interactively.call.`gptel- | 
| 33ce0 |  73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65    66 69 78 20 61 72 67 75 6d 65 6e 74 2c 20 6f 72  | send'.with.a.prefix.argument,.or | 
| 33d00 |  20 63 61 6c 6c 20 60 67 70 74 65 6c 2d 6d 65 6e    75 27 2e 0a 0a 41 20 5c 22 64 69 72 65 63 74 69  | .call.`gptel-menu'...A.\"directi | 
| 33d20 |  76 65 5c 22 20 69 73 20 74 79 70 69 63 61 6c 6c    79 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73  | ve\".is.typically.the.system.mes | 
| 33d40 |  73 61 67 65 20 28 61 6c 73 6f 20 63 61 6c 6c 65    64 0a 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 20  | sage.(also.called.system.prompt. | 
| 33d60 |  6f 72 20 73 79 73 74 65 6d 20 69 6e 73 74 72 75    63 74 69 6f 6e 29 20 73 65 6e 74 20 61 74 20 74  | or.system.instruction).sent.at.t | 
| 33d80 |  68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 0a    65 61 63 68 20 72 65 71 75 65 73 74 20 74 6f 20  | he.beginning.of.each.request.to. | 
| 33da0 |  74 68 65 20 4c 4c 4d 2e 20 20 49 74 20 69 73 20    75 73 65 64 20 74 6f 20 73 65 74 20 67 65 6e 65  | the.LLM...It.is.used.to.set.gene | 
| 33dc0 |  72 61 6c 20 69 6e 73 74 72 75 63 74 69 6f 6e 73    2c 0a 65 78 70 65 63 74 61 74 69 6f 6e 73 20 61  | ral.instructions,.expectations.a | 
| 33de0 |  6e 64 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 74    6f 6e 65 2e 0a 0a 67 70 74 65 6c 27 73 20 69 64  | nd.the.overall.tone...gptel's.id | 
| 33e00 |  65 61 20 6f 66 20 74 68 65 20 64 69 72 65 63 74    69 76 65 20 69 73 20 6d 6f 72 65 20 67 65 6e 65  | ea.of.the.directive.is.more.gene | 
| 33e20 |  72 61 6c 2e 20 20 41 20 64 69 72 65 63 74 69 76    65 20 69 6e 0a 60 67 70 74 65 6c 2d 64 69 72 65  | ral...A.directive.in.`gptel-dire | 
| 33e40 |  63 74 69 76 65 73 27 20 63 61 6e 20 62 65 0a 0a    2d 20 41 20 73 74 72 69 6e 67 2c 20 69 6e 74 65  | ctives'.can.be..-.A.string,.inte | 
| 33e60 |  72 70 72 65 74 65 64 20 61 73 20 74 68 65 20 73    79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 0a 0a  | rpreted.as.the.system.message... | 
| 33e80 |  2d 20 41 20 6c 69 73 74 20 6f 66 20 73 74 72 69    6e 67 73 2c 20 77 68 6f 73 65 20 66 69 72 73 74  | -.A.list.of.strings,.whose.first | 
| 33ea0 |  20 28 70 6f 73 73 69 62 6c 79 20 6e 69 6c 29 20    65 6c 65 6d 65 6e 74 20 69 73 0a 20 20 69 6e 74  | .(possibly.nil).element.is...int | 
| 33ec0 |  65 72 70 72 65 74 65 64 20 61 73 20 74 68 65 20    73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c 20  | erpreted.as.the.system.message,. | 
| 33ee0 |  61 6e 64 20 74 68 65 20 72 65 6d 61 69 6e 69 6e    67 20 65 6c 65 6d 65 6e 74 73 0a 20 20 61 73 20  | and.the.remaining.elements...as. | 
| 33f00 |  28 70 6f 73 73 69 62 6c 79 20 6e 69 6c 29 20 61    6c 74 65 72 6e 61 74 69 6e 67 20 75 73 65 72 20  | (possibly.nil).alternating.user. | 
| 33f20 |  70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d 20    72 65 73 70 6f 6e 73 65 73 2e 0a 20 20 54 68 69  | prompts.and.LLM.responses....Thi | 
| 33f40 |  73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f    20 74 65 6d 70 6c 61 74 65 20 74 68 65 20 69 6e  | s.can.be.used.to.template.the.in | 
| 33f60 |  69 74 69 61 6c 20 70 61 72 74 20 6f 66 20 61 20    63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 0a 2d  | itial.part.of.a.conversation...- | 
| 33f80 |  20 41 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74    20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e  | .A.function.that.returns.a.strin | 
| 33fa0 |  67 20 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 73    74 72 69 6e 67 73 2c 0a 20 20 69 6e 74 65 72 70  | g.or.a.list.of.strings,...interp | 
| 33fc0 |  72 65 74 65 64 20 61 73 20 74 68 65 20 61 62 6f    76 65 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65  | reted.as.the.above...This.can.be | 
| 33fe0 |  20 75 73 65 64 20 74 6f 20 64 79 6e 61 6d 69 63    61 6c 6c 79 0a 20 20 67 65 6e 65 72 61 74 65 20  | .used.to.dynamically...generate. | 
| 34000 |  61 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65    20 61 6e 64 2f 6f 72 20 63 6f 6e 76 65 72 73 61  | a.system.message.and/or.conversa | 
| 34020 |  74 69 6f 6e 20 74 65 6d 70 6c 61 74 65 20 62 61    73 65 64 20 6f 6e 0a 20 20 74 68 65 20 63 75 72  | tion.template.based.on...the.cur | 
| 34040 |  72 65 6e 74 20 63 6f 6e 74 65 78 74 2e 20 20 53    65 65 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f  | rent.context...See.the.definitio | 
| 34060 |  6e 20 6f 66 0a 20 20 60 67 70 74 65 6c 2d 2d 72    65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65  | n.of...`gptel--rewrite-directive | 
| 34080 |  2d 64 65 66 61 75 6c 74 27 20 66 6f 72 20 61 6e    20 65 78 61 6d 70 6c 65 2e 22 0a 20 20 3a 73 61  | -default'.for.an.example."...:sa | 
| 340a0 |  66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74    79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 79  | fe.#'always...:type.'(alist.:key | 
| 340c0 |  2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a 76 61    6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e 67 29  | -type.symbol.:value-type.string) | 
| 340e0 |  29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70    74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 6e  | )..(defcustom.gptel-max-tokens.n | 
| 34100 |  69 6c 0a 20 20 22 4d 61 78 20 74 6f 6b 65 6e 73    20 70 65 72 20 72 65 73 70 6f 6e 73 65 2e 0a 0a  | il..."Max.tokens.per.response... | 
| 34120 |  54 68 69 73 20 69 73 20 72 6f 75 67 68 6c 79 20    74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 77 6f  | This.is.roughly.the.number.of.wo | 
| 34140 |  72 64 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f    6e 73 65 2e 20 20 31 30 30 2d 33 30 30 20 69 73  | rds.in.the.response...100-300.is | 
| 34160 |  20 61 0a 72 65 61 73 6f 6e 61 62 6c 65 20 72 61    6e 67 65 20 66 6f 72 20 73 68 6f 72 74 20 61 6e  | .a.reasonable.range.for.short.an | 
| 34180 |  73 77 65 72 73 2c 20 34 30 30 20 6f 72 20 6d 6f    72 65 20 66 6f 72 20 6c 6f 6e 67 65 72 0a 72 65  | swers,.400.or.more.for.longer.re | 
| 341a0 |  73 70 6f 6e 73 65 73 2e 0a 0a 54 6f 20 73 65 74    20 74 68 65 20 74 61 72 67 65 74 20 74 6f 6b 65  | sponses...To.set.the.target.toke | 
| 341c0 |  6e 20 63 6f 75 6e 74 20 66 6f 72 20 61 20 63 68    61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72  | n.count.for.a.chat.session.inter | 
| 341e0 |  61 63 74 69 76 65 6c 79 0a 63 61 6c 6c 20 60 67    70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20  | actively.call.`gptel-send'.with. | 
| 34200 |  61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e    74 2e 22 0a 20 20 3a 73 61 66 65 20 23 27 61 6c  | a.prefix.argument."...:safe.#'al | 
| 34220 |  77 61 79 73 0a 20 20 3a 74 79 70 65 20 27 28 63    68 6f 69 63 65 20 28 6e 61 74 6e 75 6d 20 3a 74  | ways...:type.'(choice.(natnum.:t | 
| 34240 |  61 67 20 22 53 70 65 63 69 66 79 20 54 6f 6b 65    6e 20 63 6f 75 6e 74 22 29 0a 20 20 20 20 20 20  | ag."Specify.Token.count")....... | 
| 34260 |  20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73    74 20 3a 74 61 67 20 22 44 65 66 61 75 6c 74 22  | ...........(const.:tag."Default" | 
| 34280 |  20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 63 75 73    74 6f 6d 20 67 70 74 65 6c 2d 74 65 6d 70 65 72  | .nil)))..(defcustom.gptel-temper | 
| 342a0 |  61 74 75 72 65 20 31 2e 30 0a 20 20 22 5c 22 54    65 6d 70 65 72 61 74 75 72 65 5c 22 20 6f 66 20  | ature.1.0..."\"Temperature\".of. | 
| 342c0 |  74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65    2e 0a 0a 54 68 69 73 20 69 73 20 61 20 6e 75 6d  | the.LLM.response...This.is.a.num | 
| 342e0 |  62 65 72 20 62 65 74 77 65 65 6e 20 30 2e 30 20    61 6e 64 20 32 2e 30 20 74 68 61 74 20 63 6f 6e  | ber.between.0.0.and.2.0.that.con | 
| 34300 |  74 72 6f 6c 73 20 74 68 65 20 72 61 6e 64 6f 6d    6e 65 73 73 0a 6f 66 20 74 68 65 20 72 65 73 70  | trols.the.randomness.of.the.resp | 
| 34320 |  6f 6e 73 65 2c 20 77 69 74 68 20 32 2e 30 20 62    65 69 6e 67 20 74 68 65 20 6d 6f 73 74 20 72 61  | onse,.with.2.0.being.the.most.ra | 
| 34340 |  6e 64 6f 6d 2e 0a 0a 54 6f 20 73 65 74 20 74 68    65 20 74 65 6d 70 65 72 61 74 75 72 65 20 66 6f  | ndom...To.set.the.temperature.fo | 
| 34360 |  72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e    20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63  | r.a.chat.session.interactively.c | 
| 34380 |  61 6c 6c 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27    20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61  | all.`gptel-send'.with.a.prefix.a | 
| 343a0 |  72 67 75 6d 65 6e 74 2e 22 0a 20 20 3a 73 61 66    65 20 28 6c 61 6d 62 64 61 20 28 76 29 20 28 6f  | rgument."...:safe.(lambda.(v).(o | 
| 343c0 |  72 20 28 6e 75 6c 6c 20 76 29 20 28 6e 75 6d 62    65 72 70 20 76 29 29 29 0a 20 20 3a 74 79 70 65  | r.(null.v).(numberp.v)))...:type | 
| 343e0 |  20 27 28 63 68 6f 69 63 65 20 28 6e 75 6d 62 65    72 20 3a 74 61 67 20 22 54 65 6d 70 65 72 61 74  | .'(choice.(number.:tag."Temperat | 
| 34400 |  75 72 65 20 76 61 6c 75 65 22 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f  | ure.value")..................(co | 
| 34420 |  6e 73 74 20 3a 74 61 67 20 22 55 73 65 20 64 65    66 61 75 6c 74 22 20 6e 69 6c 29 29 29 0a 0a 28  | nst.:tag."Use.default".nil)))..( | 
| 34440 |  64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d    63 61 63 68 65 20 6e 69 6c 0a 20 20 22 57 68 65  | defcustom.gptel-cache.nil..."Whe | 
| 34460 |  74 68 65 72 20 74 68 65 20 4c 4c 4d 20 73 68 6f    75 6c 64 20 63 61 63 68 65 20 72 65 71 75 65 73  | ther.the.LLM.should.cache.reques | 
| 34480 |  74 20 63 6f 6e 74 65 6e 74 2e 0a 0a 53 6f 6d 65    20 4c 4c 4d 20 62 61 63 6b 65 6e 64 73 20 63 61  | t.content...Some.LLM.backends.ca | 
| 344a0 |  6e 20 63 61 63 68 65 20 63 6f 6e 74 65 6e 74 20    73 65 6e 74 20 74 6f 20 69 74 20 62 79 20 67 70  | n.cache.content.sent.to.it.by.gp | 
| 344c0 |  74 65 6c 2c 20 73 6f 20 74 68 61 74 0a 6f 6e 6c    79 20 74 68 65 20 6e 65 77 6c 79 20 69 6e 63 6c  | tel,.so.that.only.the.newly.incl | 
| 344e0 |  75 64 65 64 20 70 61 72 74 20 6f 66 20 74 68 65    20 74 65 78 74 20 6e 65 65 64 73 20 74 6f 20 62  | uded.part.of.the.text.needs.to.b | 
| 34500 |  65 20 70 72 6f 63 65 73 73 65 64 20 6f 6e 0a 73    75 62 73 65 71 75 65 6e 74 20 63 6f 6e 76 65 72  | e.processed.on.subsequent.conver | 
| 34520 |  73 61 74 69 6f 6e 20 74 75 72 6e 73 2e 20 20 54    68 69 73 20 72 65 73 75 6c 74 73 20 69 6e 20 66  | sation.turns...This.results.in.f | 
| 34540 |  61 73 74 65 72 20 61 6e 64 0a 73 69 67 6e 69 66    69 63 61 6e 74 6c 79 20 63 68 65 61 70 65 72 20  | aster.and.significantly.cheaper. | 
| 34560 |  70 72 6f 63 65 73 73 69 6e 67 2e 0a 0a 4e 4f 54    45 3a 20 4d 61 6e 75 61 6c 20 6f 72 20 63 6c 69  | processing...NOTE:.Manual.or.cli | 
| 34580 |  65 6e 74 2d 63 6f 6e 66 69 67 75 72 61 62 6c 65    20 63 61 63 68 69 6e 67 20 69 73 20 63 75 72 72  | ent-configurable.caching.is.curr | 
| 345a0 |  65 6e 74 6c 79 0a 73 75 70 70 6f 72 74 65 64 20    6f 6e 6c 79 20 62 79 20 74 68 65 20 41 6e 74 68  | ently.supported.only.by.the.Anth | 
| 345c0 |  72 6f 70 69 63 20 41 50 49 20 61 6e 64 20 74 68    75 73 20 74 68 65 0a 60 67 70 74 65 6c 2d 61 6e  | ropic.API.and.thus.the.`gptel-an | 
| 345e0 |  74 68 72 6f 70 69 63 27 20 62 61 63 6b 65 6e 64    2e 20 20 54 68 69 73 20 76 61 72 69 61 62 6c 65  | thropic'.backend...This.variable | 
| 34600 |  20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f    6e 20 74 68 65 0a 62 65 68 61 76 69 6f 72 20 6f  | .has.no.effect.on.the.behavior.o | 
| 34620 |  66 20 6f 74 68 65 72 20 62 61 63 6b 65 6e 64 73    2e 0a 0a 54 68 69 73 20 76 61 72 69 61 62 6c 65  | f.other.backends...This.variable | 
| 34640 |  20 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68 20    70 61 72 74 73 20 6f 66 20 74 68 65 20 71 75 65  | .controls.which.parts.of.the.que | 
| 34660 |  72 79 20 77 69 6c 6c 20 62 65 20 63 61 63 68 65    64 2c 0a 61 6e 64 20 63 61 6e 20 62 65 20 74 68  | ry.will.be.cached,.and.can.be.th | 
| 34680 |  65 20 73 79 6d 62 6f 6c 73 20 74 20 6f 72 20 6e    69 6c 20 74 6f 20 63 61 63 68 65 20 65 76 65 72  | e.symbols.t.or.nil.to.cache.ever | 
| 346a0 |  79 74 68 69 6e 67 20 6f 72 20 6e 6f 74 68 69 6e    67 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20  | ything.or.nothing.respectively.. | 
| 346c0 |  49 74 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 61    20 6c 69 73 74 20 6f 66 20 73 79 6d 62 6f 6c 73  | It.can.also.be.a.list.of.symbols | 
| 346e0 |  3a 0a 0a 2d 20 6d 65 73 73 61 67 65 3a 20 43 61    63 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e  | :..-.message:.Cache.conversation | 
| 34700 |  20 6d 65 73 73 61 67 65 73 0a 2d 20 73 79 73 74    65 6d 3a 20 43 61 63 68 65 20 74 68 65 20 73 79  | .messages.-.system:.Cache.the.sy | 
| 34720 |  73 74 65 6d 20 6d 65 73 73 61 67 65 0a 2d 20 74    6f 6f 6c 3a 20 43 61 63 68 65 20 74 6f 6f 6c 20  | stem.message.-.tool:.Cache.tool. | 
| 34740 |  64 65 66 69 6e 69 74 69 6f 6e 73 0a 0a 45 78 61    6d 70 6c 65 73 3a 0a 0a 53 65 74 74 69 6e 67 20  | definitions..Examples:..Setting. | 
| 34760 |  69 74 20 74 6f 20 28 6d 65 73 73 61 67 65 20 73    79 73 74 65 6d 29 20 77 69 6c 6c 20 63 61 63 68  | it.to.(message.system).will.cach | 
| 34780 |  65 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73    73 61 67 65 20 61 6e 64 0a 74 68 65 20 63 6f 6e  | e.the.system.message.and.the.con | 
| 347a0 |  76 65 72 73 61 74 69 6f 6e 20 74 65 78 74 2e 0a    0a 53 65 74 74 69 6e 67 20 69 74 20 74 6f 20 28  | versation.text...Setting.it.to.( | 
| 347c0 |  6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 20 74    6f 6f 6c 29 20 77 69 6c 6c 20 63 61 63 68 65 20  | message.system.tool).will.cache. | 
| 347e0 |  65 76 65 72 79 74 68 69 6e 67 20 61 6e 64 20 69    73 0a 74 68 65 20 73 61 6d 65 20 61 73 20 74 2e  | everything.and.is.the.same.as.t. | 
| 34800 |  22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69    63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f  | "...:type.'(choice...........(co | 
| 34820 |  6e 73 74 20 3a 74 61 67 20 22 43 61 63 68 65 20    65 76 65 72 79 74 68 69 6e 67 22 20 74 29 0a 20  | nst.:tag."Cache.everything".t).. | 
| 34840 |  20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20    3a 74 61 67 20 22 44 6f 20 6e 6f 74 20 63 61 63  | .........(const.:tag."Do.not.cac | 
| 34860 |  68 65 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20    20 20 20 28 72 65 70 65 61 74 20 73 79 6d 62 6f  | he".nil)...........(repeat.symbo | 
| 34880 |  6c 29 29 0a 20 20 3a 67 72 6f 75 70 20 27 67 70    74 65 6c 29 0a 0a 28 64 65 66 76 61 72 20 67 70  | l))...:group.'gptel)..(defvar.gp | 
| 348a0 |  74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65    6e 64 73 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20  | tel--known-backends)..(defconst. | 
| 348c0 |  67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f    64 65 6c 73 0a 20 20 27 28 28 67 70 74 2d 34 6f  | gptel--openai-models...'((gpt-4o | 
| 348e0 |  0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69    6f 6e 20 22 41 64 76 61 6e 63 65 64 20 6d 6f 64  | ......:description."Advanced.mod | 
| 34900 |  65 6c 20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 74    61 73 6b 73 3b 20 63 68 65 61 70 65 72 20 26 20  | el.for.complex.tasks;.cheaper.&. | 
| 34920 |  66 61 73 74 65 72 20 74 68 61 6e 20 47 50 54 2d    54 75 72 62 6f 22 0a 20 20 20 20 20 3a 63 61 70  | faster.than.GPT-Turbo"......:cap | 
| 34940 |  61 62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61    20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75  | abilities.(media.tool-use.json.u | 
| 34960 |  72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74    79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65  | rl)......:mime-types.("image/jpe | 
| 34980 |  67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22    69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67  | g"."image/png"."image/gif"."imag | 
| 349a0 |  65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63    6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32  | e/webp")......:context-window.12 | 
| 349c0 |  38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f    73 74 20 32 2e 35 30 0a 20 20 20 20 20 3a 6f 75  | 8......:input-cost.2.50......:ou | 
| 349e0 |  74 70 75 74 2d 63 6f 73 74 20 31 30 0a 20 20 20    20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22  | tput-cost.10......:cutoff-date." | 
| 34a00 |  32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 67    70 74 2d 34 6f 2d 6d 69 6e 69 0a 20 20 20 20 20  | 2023-10").....(gpt-4o-mini...... | 
| 34a20 |  3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 43 68    65 61 70 20 6d 6f 64 65 6c 20 66 6f 72 20 66 61  | :description."Cheap.model.for.fa | 
| 34a40 |  73 74 20 74 61 73 6b 73 3b 20 63 68 65 61 70 65    72 20 26 20 6d 6f 72 65 20 63 61 70 61 62 6c 65  | st.tasks;.cheaper.&.more.capable | 
| 34a60 |  20 74 68 61 6e 20 47 50 54 2d 33 2e 35 20 54 75    72 62 6f 22 0a 20 20 20 20 20 3a 63 61 70 61 62  | .than.GPT-3.5.Turbo"......:capab | 
| 34a80 |  69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74    6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c  | ilities.(media.tool-use.json.url | 
| 34aa0 |  29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70    65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22  | )......:mime-types.("image/jpeg" | 
| 34ac0 |  20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d    61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f  | ."image/png"."image/gif"."image/ | 
| 34ae0 |  77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e    74 65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38 0a  | webp")......:context-window.128. | 
| 34b00 |  20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74    20 30 2e 31 35 0a 20 20 20 20 20 3a 6f 75 74 70  | .....:input-cost.0.15......:outp | 
| 34b20 |  75 74 2d 63 6f 73 74 20 30 2e 36 30 0a 20 20 20    20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22  | ut-cost.0.60......:cutoff-date." | 
| 34b40 |  32 30 32 33 2d 31 30 22 29 0a 20 20 20 20 28 67    70 74 2d 34 2e 31 0a 20 20 20 20 20 3a 64 65 73  | 2023-10").....(gpt-4.1......:des | 
| 34b60 |  63 72 69 70 74 69 6f 6e 20 22 46 6c 61 67 73 68    69 70 20 6d 6f 64 65 6c 20 66 6f 72 20 63 6f 6d  | cription."Flagship.model.for.com | 
| 34b80 |  70 6c 65 78 20 74 61 73 6b 73 22 0a 20 20 20 20    20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28  | plex.tasks"......:capabilities.( | 
| 34ba0 |  6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a    73 6f 6e 20 75 72 6c 29 0a 20 20 20 20 20 3a 6d  | media.tool-use.json.url)......:m | 
| 34bc0 |  69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67    65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70  | ime-types.("image/jpeg"."image/p | 
| 34be0 |  6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20    22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20  | ng"."image/gif"."image/webp")... | 
| 34c00 |  20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64    6f 77 20 31 30 32 34 0a 20 20 20 20 20 3a 69 6e  | ...:context-window.1024......:in | 
| 34c20 |  70 75 74 2d 63 6f 73 74 20 32 2e 30 0a 20 20 20    20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 38  | put-cost.2.0......:output-cost.8 | 
| 34c40 |  2e 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d    64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29 0a  | .0......:cutoff-date."2024-05"). | 
| 34c60 |  20 20 20 20 28 67 70 74 2d 34 2e 35 2d 70 72 65    76 69 65 77 0a 20 20 20 20 20 3a 64 65 73 63 72  | ....(gpt-4.5-preview......:descr | 
| 34c80 |  69 70 74 69 6f 6e 20 22 44 45 50 52 45 43 41 54    45 44 3a 20 55 73 65 20 67 70 74 2d 34 2e 31 20  | iption."DEPRECATED:.Use.gpt-4.1. | 
| 34ca0 |  69 6e 73 74 65 61 64 22 0a 20 20 20 20 20 3a 63    61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64  | instead"......:capabilities.(med | 
| 34cc0 |  69 61 20 74 6f 6f 6c 2d 75 73 65 20 75 72 6c 29    0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65  | ia.tool-use.url)......:mime-type | 
| 34ce0 |  73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20    22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61  | s.("image/jpeg"."image/png"."ima | 
| 34d00 |  67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77    65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74  | ge/gif"."image/webp")......:cont | 
| 34d20 |  65 78 74 2d 77 69 6e 64 6f 77 20 31 32 38 0a 20    20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20  | ext-window.128......:input-cost. | 
| 34d40 |  37 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d    63 6f 73 74 20 31 35 30 0a 20 20 20 20 20 3a 63  | 75......:output-cost.150......:c | 
| 34d60 |  75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 33    2d 31 30 22 29 0a 20 20 20 20 28 67 70 74 2d 34  | utoff-date."2023-10").....(gpt-4 | 
| 34d80 |  2e 31 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65    73 63 72 69 70 74 69 6f 6e 20 22 42 61 6c 61 6e  | .1-mini......:description."Balan | 
| 34da0 |  63 65 20 62 65 74 77 65 65 6e 20 69 6e 74 65 6c    6c 69 67 65 6e 63 65 2c 20 73 70 65 65 64 20 61  | ce.between.intelligence,.speed.a | 
| 34dc0 |  6e 64 20 63 6f 73 74 22 0a 20 20 20 20 20 3a 63    61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64  | nd.cost"......:capabilities.(med | 
| 34de0 |  69 61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e    20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65  | ia.tool-use.json.url)......:mime | 
| 34e00 |  2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a    70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22  | -types.("image/jpeg"."image/png" | 
| 34e20 |  20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d    61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20  | ."image/gif"."image/webp")...... | 
| 34e40 |  3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20    31 30 32 34 0a 20 20 20 20 20 3a 69 6e 70 75 74  | :context-window.1024......:input | 
| 34e60 |  2d 63 6f 73 74 20 30 2e 34 0a 20 20 20 20 20 3a    6f 75 74 70 75 74 2d 63 6f 73 74 20 31 2e 36 29  | -cost.0.4......:output-cost.1.6) | 
| 34e80 |  0a 20 20 20 20 28 67 70 74 2d 34 2e 31 2d 6e 61    6e 6f 0a 20 20 20 20 20 3a 64 65 73 63 72 69 70  | .....(gpt-4.1-nano......:descrip | 
| 34ea0 |  74 69 6f 6e 20 22 46 61 73 74 65 73 74 2c 20 6d    6f 73 74 20 63 6f 73 74 2d 65 66 66 65 63 74 69  | tion."Fastest,.most.cost-effecti | 
| 34ec0 |  76 65 20 47 50 54 2d 34 2e 31 20 6d 6f 64 65 6c    22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69  | ve.GPT-4.1.model"......:capabili | 
| 34ee0 |  74 69 65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c    2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c 29 0a 20  | ties.(media.tool-use.json.url).. | 
| 34f00 |  20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20    28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69  | ....:mime-types.("image/jpeg"."i | 
| 34f20 |  6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65    2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62  | mage/png"."image/gif"."image/web | 
| 34f40 |  70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78    74 2d 77 69 6e 64 6f 77 20 31 30 32 34 0a 20 20  | p")......:context-window.1024... | 
| 34f60 |  20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30    2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74  | ...:input-cost.0.10......:output | 
| 34f80 |  2d 63 6f 73 74 20 30 2e 34 30 0a 20 20 20 20 20    3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30  | -cost.0.40......:cutoff-date."20 | 
| 34fa0 |  32 34 2d 30 35 22 29 0a 20 20 20 20 28 67 70 74    2d 34 2d 74 75 72 62 6f 0a 20 20 20 20 20 3a 64  | 24-05").....(gpt-4-turbo......:d | 
| 34fc0 |  65 73 63 72 69 70 74 69 6f 6e 20 22 50 72 65 76    69 6f 75 73 20 68 69 67 68 2d 69 6e 74 65 6c 6c  | escription."Previous.high-intell | 
| 34fe0 |  69 67 65 6e 63 65 20 6d 6f 64 65 6c 22 0a 20 20    20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73  | igence.model"......:capabilities | 
| 35000 |  20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65    20 75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65  | .(media.tool-use.url)......:mime | 
| 35020 |  2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a    70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22  | -types.("image/jpeg"."image/png" | 
| 35040 |  20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d    61 67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20  | ."image/gif"."image/webp")...... | 
| 35060 |  3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20    31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d  | :context-window.128......:input- | 
| 35080 |  63 6f 73 74 20 31 30 0a 20 20 20 20 20 3a 6f 75    74 70 75 74 2d 63 6f 73 74 20 33 30 0a 20 20 20  | cost.10......:output-cost.30.... | 
| 350a0 |  20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22    32 30 32 33 2d 31 31 22 29 0a 20 20 20 20 28 67  | ..:cutoff-date."2023-11").....(g | 
| 350c0 |  70 74 2d 34 0a 20 20 20 20 20 3a 64 65 73 63 72    69 70 74 69 6f 6e 20 22 47 50 54 2d 34 20 73 6e  | pt-4......:description."GPT-4.sn | 
| 350e0 |  61 70 73 68 6f 74 20 66 72 6f 6d 20 4a 75 6e 65    20 32 30 32 33 20 77 69 74 68 20 69 6d 70 72 6f  | apshot.from.June.2023.with.impro | 
| 35100 |  76 65 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c    6c 69 6e 67 20 73 75 70 70 6f 72 74 22 0a 20 20  | ved.function.calling.support"... | 
| 35120 |  20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28    22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d  | ...:mime-types.("image/jpeg"."im | 
| 35140 |  61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f    67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62 70  | age/png"."image/gif"."image/webp | 
| 35160 |  22 29 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c    69 74 69 65 73 20 28 6d 65 64 69 61 20 75 72 6c  | ")......:capabilities.(media.url | 
| 35180 |  29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d    77 69 6e 64 6f 77 20 38 2e 31 39 32 0a 20 20 20  | )......:context-window.8.192.... | 
| 351a0 |  20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 30    0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f  | ..:input-cost.30......:output-co | 
| 351c0 |  73 74 20 36 30 0a 20 20 20 20 20 3a 63 75 74 6f    66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 31 31  | st.60......:cutoff-date."2023-11 | 
| 351e0 |  22 29 0a 20 20 20 20 28 6f 31 0a 20 20 20 20 20    3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65  | ").....(o1......:description."Re | 
| 35200 |  61 73 6f 6e 69 6e 67 20 6d 6f 64 65 6c 20 64 65    73 69 67 6e 65 64 20 74 6f 20 73 6f 6c 76 65 20  | asoning.model.designed.to.solve. | 
| 35220 |  68 61 72 64 20 70 72 6f 62 6c 65 6d 73 20 61 63    72 6f 73 73 20 64 6f 6d 61 69 6e 73 22 0a 20 20  | hard.problems.across.domains"... | 
| 35240 |  20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73    20 28 6d 65 64 69 61 20 72 65 61 73 6f 6e 69 6e  | ...:capabilities.(media.reasonin | 
| 35260 |  67 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79    70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67  | g)......:mime-types.("image/jpeg | 
| 35280 |  22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69    6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65  | "."image/png"."image/gif"."image | 
| 352a0 |  2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f    6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30  | /webp")......:context-window.200 | 
| 352c0 |  0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73    74 20 31 35 0a 20 20 20 20 20 3a 6f 75 74 70 75  | ......:input-cost.15......:outpu | 
| 352e0 |  74 2d 63 6f 73 74 20 36 30 0a 20 20 20 20 20 3a    63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32  | t-cost.60......:cutoff-date."202 | 
| 35300 |  33 2d 31 30 22 29 0a 20 20 20 20 28 6f 31 2d 6d    69 6e 69 0a 20 20 20 20 20 3a 64 65 73 63 72 69  | 3-10").....(o1-mini......:descri | 
| 35320 |  70 74 69 6f 6e 20 22 46 61 73 74 65 72 20 61 6e    64 20 63 68 65 61 70 65 72 20 72 65 61 73 6f 6e  | ption."Faster.and.cheaper.reason | 
| 35340 |  69 6e 67 20 6d 6f 64 65 6c 20 67 6f 6f 64 20 61    74 20 63 6f 64 69 6e 67 2c 20 6d 61 74 68 2c 20  | ing.model.good.at.coding,.math,. | 
| 35360 |  61 6e 64 20 73 63 69 65 6e 63 65 22 0a 20 20 20    20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f  | and.science"......:context-windo | 
| 35380 |  77 20 31 32 38 0a 20 20 20 20 20 3a 69 6e 70 75    74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a 6f  | w.128......:input-cost.3......:o | 
| 353a0 |  75 74 70 75 74 2d 63 6f 73 74 20 31 32 0a 20 20    20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20  | utput-cost.12......:cutoff-date. | 
| 353c0 |  22 32 30 32 33 2d 31 30 22 0a 20 20 20 20 20 3a    63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6e 6f  | "2023-10"......:capabilities.(no | 
| 353e0 |  73 79 73 74 65 6d 20 72 65 61 73 6f 6e 69 6e 67    29 29 0a 20 20 20 20 28 6f 33 0a 20 20 20 20 20  | system.reasoning)).....(o3...... | 
| 35400 |  3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 57 65    6c 6c 2d 72 6f 75 6e 64 65 64 20 61 6e 64 20 70  | :description."Well-rounded.and.p | 
| 35420 |  6f 77 65 72 66 75 6c 20 6d 6f 64 65 6c 20 61 63    72 6f 73 73 20 64 6f 6d 61 69 6e 73 22 0a 20 20  | owerful.model.across.domains"... | 
| 35440 |  20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73    20 28 72 65 61 73 6f 6e 69 6e 67 20 6d 65 64 69  | ...:capabilities.(reasoning.medi | 
| 35460 |  61 20 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20    75 72 6c 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d  | a.tool-use.json.url)......:mime- | 
| 35480 |  74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a 70    65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20  | types.("image/jpeg"."image/png". | 
| 354a0 |  22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61    67 65 2f 77 65 62 70 22 29 0a 20 20 20 20 20 3a  | "image/gif"."image/webp")......: | 
| 354c0 |  63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32    30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63  | context-window.200......:input-c | 
| 354e0 |  6f 73 74 20 32 0a 20 20 20 20 20 3a 6f 75 74 70    75 74 2d 63 6f 73 74 20 38 0a 20 20 20 20 20 3a  | ost.2......:output-cost.8......: | 
| 35500 |  63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32    34 2d 30 35 22 29 0a 20 20 20 20 28 6f 33 2d 6d  | cutoff-date."2024-05").....(o3-m | 
| 35520 |  69 6e 69 0a 20 20 20 20 20 3a 64 65 73 63 72 69    70 74 69 6f 6e 20 22 48 69 67 68 20 69 6e 74 65  | ini......:description."High.inte | 
| 35540 |  6c 6c 69 67 65 6e 63 65 20 61 74 20 74 68 65 20    73 61 6d 65 20 63 6f 73 74 20 61 6e 64 20 6c 61  | lligence.at.the.same.cost.and.la | 
| 35560 |  74 65 6e 63 79 20 74 61 72 67 65 74 73 20 6f 66    20 6f 31 2d 6d 69 6e 69 22 0a 20 20 20 20 20 3a  | tency.targets.of.o1-mini"......: | 
| 35580 |  63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 32    30 30 0a 20 20 20 20 20 3a 69 6e 70 75 74 2d 63  | context-window.200......:input-c | 
| 355a0 |  6f 73 74 20 31 2e 31 30 0a 20 20 20 20 20 3a 6f    75 74 70 75 74 2d 63 6f 73 74 20 34 2e 34 30 0a  | ost.1.10......:output-cost.4.40. | 
| 355c0 |  20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74    65 20 22 32 30 32 33 2d 31 30 22 0a 20 20 20 20  | .....:cutoff-date."2023-10"..... | 
| 355e0 |  20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28    72 65 61 73 6f 6e 69 6e 67 20 74 6f 6f 6c 2d 75  | .:capabilities.(reasoning.tool-u | 
| 35600 |  73 65 20 6a 73 6f 6e 29 29 0a 20 20 20 20 28 6f    34 2d 6d 69 6e 69 0a 20 20 20 20 20 3a 64 65 73  | se.json)).....(o4-mini......:des | 
| 35620 |  63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 2c 20    65 66 66 65 63 74 69 76 65 20 72 65 61 73 6f 6e  | cription."Fast,.effective.reason | 
| 35640 |  69 6e 67 20 77 69 74 68 20 65 66 66 69 63 69 65    6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69  | ing.with.efficient.performance.i | 
| 35660 |  6e 20 63 6f 64 69 6e 67 20 61 6e 64 20 76 69 73    75 61 6c 20 74 61 73 6b 73 22 0a 20 20 20 20 20  | n.coding.and.visual.tasks"...... | 
| 35680 |  3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 72    65 61 73 6f 6e 69 6e 67 20 6d 65 64 69 61 20 74  | :capabilities.(reasoning.media.t | 
| 356a0 |  6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 75 72 6c    29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70  | ool-use.json.url)......:mime-typ | 
| 356c0 |  65 73 20 28 22 69 6d 61 67 65 2f 6a 70 65 67 22    20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d  | es.("image/jpeg"."image/png"."im | 
| 356e0 |  61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65 2f    77 65 62 70 22 29 0a 20 20 20 20 20 3a 63 6f 6e  | age/gif"."image/webp")......:con | 
| 35700 |  74 65 78 74 2d 77 69 6e 64 6f 77 20 32 30 30 0a    20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74  | text-window.200......:input-cost | 
| 35720 |  20 31 2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70    75 74 2d 63 6f 73 74 20 34 2e 34 30 0a 20 20 20  | .1.10......:output-cost.4.40.... | 
| 35740 |  20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22    32 30 32 34 2d 30 35 22 29 0a 20 20 20 20 28 67  | ..:cutoff-date."2024-05").....(g | 
| 35760 |  70 74 2d 33 2e 35 2d 74 75 72 62 6f 0a 20 20 20    20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22  | pt-3.5-turbo......:description." | 
| 35780 |  4d 6f 72 65 20 65 78 70 65 6e 73 69 76 65 20 26    20 6c 65 73 73 20 63 61 70 61 62 6c 65 20 74 68  | More.expensive.&.less.capable.th | 
| 357a0 |  61 6e 20 47 50 54 2d 34 6f 2d 6d 69 6e 69 3b 20    75 73 65 20 74 68 61 74 20 69 6e 73 74 65 61 64  | an.GPT-4o-mini;.use.that.instead | 
| 357c0 |  22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69    74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 29 0a  | "......:capabilities.(tool-use). | 
| 357e0 |  20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69    6e 64 6f 77 20 31 36 2e 33 35 38 0a 20 20 20 20  | .....:context-window.16.358..... | 
| 35800 |  20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 35    30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63  | .:input-cost.0.50......:output-c | 
| 35820 |  6f 73 74 20 31 2e 35 30 0a 20 20 20 20 20 3a 63    75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 31  | ost.1.50......:cutoff-date."2021 | 
| 35840 |  2d 30 39 22 29 0a 20 20 20 20 28 67 70 74 2d 33    2e 35 2d 74 75 72 62 6f 2d 31 36 6b 0a 20 20 20  | -09").....(gpt-3.5-turbo-16k.... | 
| 35860 |  20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22    4d 6f 72 65 20 65 78 70 65 6e 73 69 76 65 20 26  | ..:description."More.expensive.& | 
| 35880 |  20 6c 65 73 73 20 63 61 70 61 62 6c 65 20 74 68    61 6e 20 47 50 54 2d 34 6f 2d 6d 69 6e 69 3b 20  | .less.capable.than.GPT-4o-mini;. | 
| 358a0 |  75 73 65 20 74 68 61 74 20 69 6e 73 74 65 61 64    22 0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69  | use.that.instead"......:capabili | 
| 358c0 |  74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 29 0a    20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69  | ties.(tool-use)......:context-wi | 
| 358e0 |  6e 64 6f 77 20 31 36 2e 33 38 35 0a 20 20 20 20    20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20  | ndow.16.385......:input-cost.3.. | 
| 35900 |  20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74    20 34 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d  | ....:output-cost.4......:cutoff- | 
| 35920 |  64 61 74 65 20 22 32 30 32 31 2d 30 39 22 29 29    0a 20 20 22 4c 69 73 74 20 6f 66 20 61 76 61 69  | date."2021-09"))..."List.of.avai | 
| 35940 |  6c 61 62 6c 65 20 4f 70 65 6e 41 49 20 6d 6f 64    65 6c 73 20 61 6e 64 20 61 73 73 6f 63 69 61 74  | lable.OpenAI.models.and.associat | 
| 35960 |  65 64 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 4b    65 79 73 3a 0a 0a 2d 20 60 3a 64 65 73 63 72 69  | ed.properties..Keys:..-.`:descri | 
| 35980 |  70 74 69 6f 6e 27 3a 20 61 20 62 72 69 65 66 20    64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  | ption':.a.brief.description.of.t | 
| 359a0 |  68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20 60 3a 63    61 70 61 62 69 6c 69 74 69 65 73 27 3a 20 61 20  | he.model...-.`:capabilities':.a. | 
| 359c0 |  6c 69 73 74 20 6f 66 20 63 61 70 61 62 69 6c 69    74 69 65 73 20 73 75 70 70 6f 72 74 65 64 20 62  | list.of.capabilities.supported.b | 
| 359e0 |  79 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20    60 3a 6d 69 6d 65 2d 74 79 70 65 73 27 3a 20 61  | y.the.model...-.`:mime-types':.a | 
| 35a00 |  20 6c 69 73 74 20 6f 66 20 73 75 70 70 6f 72 74    65 64 20 4d 49 4d 45 20 74 79 70 65 73 20 66 6f  | .list.of.supported.MIME.types.fo | 
| 35a20 |  72 20 6d 65 64 69 61 20 66 69 6c 65 73 2e 0a 0a    2d 20 60 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64  | r.media.files...-.`:context-wind | 
| 35a40 |  6f 77 27 3a 20 74 68 65 20 63 6f 6e 74 65 78 74    20 77 69 6e 64 6f 77 20 73 69 7a 65 2c 20 69 6e  | ow':.the.context.window.size,.in | 
| 35a60 |  20 74 68 6f 75 73 61 6e 64 73 20 6f 66 20 74 6f    6b 65 6e 73 2e 0a 0a 2d 20 60 3a 69 6e 70 75 74  | .thousands.of.tokens...-.`:input | 
| 35a80 |  2d 63 6f 73 74 27 3a 20 74 68 65 20 69 6e 70 75    74 20 63 6f 73 74 2c 20 69 6e 20 55 53 20 64 6f  | -cost':.the.input.cost,.in.US.do | 
| 35aa0 |  6c 6c 61 72 73 20 70 65 72 20 6d 69 6c 6c 69 6f    6e 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 6f  | llars.per.million.tokens...-.`:o | 
| 35ac0 |  75 74 70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65    20 6f 75 74 70 75 74 20 63 6f 73 74 2c 20 69 6e  | utput-cost':.the.output.cost,.in | 
| 35ae0 |  20 55 53 20 64 6f 6c 6c 61 72 73 20 70 65 72 20    6d 69 6c 6c 69 6f 6e 20 74 6f 6b 65 6e 73 2e 0a  | .US.dollars.per.million.tokens.. | 
| 35b00 |  0a 2d 20 60 3a 63 75 74 6f 66 66 2d 64 61 74 65    27 3a 20 74 68 65 20 6b 6e 6f 77 6c 65 64 67 65  | .-.`:cutoff-date':.the.knowledge | 
| 35b20 |  20 63 75 74 6f 66 66 20 64 61 74 65 2e 0a 0a 2d    20 60 3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d  | .cutoff.date...-.`:request-param | 
| 35b40 |  73 27 3a 20 61 20 70 6c 69 73 74 20 6f 66 20 61    64 64 69 74 69 6f 6e 61 6c 20 72 65 71 75 65 73  | s':.a.plist.of.additional.reques | 
| 35b60 |  74 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 0a    20 20 69 6e 63 6c 75 64 65 20 77 68 65 6e 20 75  | t.parameters.to...include.when.u | 
| 35b80 |  73 69 6e 67 20 74 68 69 73 20 6d 6f 64 65 6c 2e    0a 0a 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  | sing.this.model...Information.ab | 
| 35ba0 |  6f 75 74 20 74 68 65 20 4f 70 65 6e 41 49 20 6d    6f 64 65 6c 73 20 77 61 73 20 6f 62 74 61 69 6e  | out.the.OpenAI.models.was.obtain | 
| 35bc0 |  65 64 20 66 72 6f 6d 20 74 68 65 20 66 6f 6c 6c    6f 77 69 6e 67 0a 73 6f 75 72 63 65 73 3a 0a 0a  | ed.from.the.following.sources:.. | 
| 35be0 |  2d 20 3c 68 74 74 70 73 3a 2f 2f 70 6c 61 74 66    6f 72 6d 2e 6f 70 65 6e 61 69 2e 63 6f 6d 2f 64  | -.<https://platform.openai.com/d | 
| 35c00 |  6f 63 73 2f 70 72 69 63 69 6e 67 3e 0a 2d 20 3c    68 74 74 70 73 3a 2f 2f 70 6c 61 74 66 6f 72 6d  | ocs/pricing>.-.<https://platform | 
| 35c20 |  2e 6f 70 65 6e 61 69 2e 63 6f 6d 2f 64 6f 63 73    2f 6d 6f 64 65 6c 73 3e 22 29 0a 0a 28 64 65 66  | .openai.com/docs/models>")..(def | 
| 35c40 |  63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6d 6f 64    65 6c 20 27 67 70 74 2d 34 6f 2d 6d 69 6e 69 0a  | custom.gptel-model.'gpt-4o-mini. | 
| 35c60 |  20 20 28 63 6f 6e 63 61 74 0a 20 20 20 22 4d 6f    64 65 6c 20 66 6f 72 20 63 68 61 74 2e 0a 0a 54  | ..(concat...."Model.for.chat...T | 
| 35c80 |  68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d    6f 64 65 6c 2c 20 61 73 20 61 20 73 79 6d 62 6f  | he.name.of.the.model,.as.a.symbo | 
| 35ca0 |  6c 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20    6e 61 6d 65 20 61 73 20 65 78 70 65 63 74 65 64  | l...This.is.the.name.as.expected | 
| 35cc0 |  0a 62 79 20 74 68 65 20 4c 4c 4d 20 70 72 6f 76    69 64 65 72 27 73 20 41 50 49 2e 0a 0a 54 6f 20  | .by.the.LLM.provider's.API...To. | 
| 35ce0 |  73 65 74 20 74 68 65 20 6d 6f 64 65 6c 20 66 6f    72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e  | set.the.model.for.a.chat.session | 
| 35d00 |  20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63    61 6c 6c 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27  | .interactively.call.`gptel-send' | 
| 35d20 |  20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61    72 67 75 6d 65 6e 74 2e 22 29 0a 20 20 3a 73 61  | .with.a.prefix.argument.")...:sa | 
| 35d40 |  66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74    79 70 65 20 60 28 63 68 6f 69 63 65 0a 09 20 20  | fe.#'always...:type.`(choice.... | 
| 35d60 |  28 73 79 6d 62 6f 6c 20 3a 74 61 67 20 22 53 70    65 63 69 66 79 20 6d 6f 64 65 6c 20 6e 61 6d 65  | (symbol.:tag."Specify.model.name | 
| 35d80 |  22 29 0a 09 20 20 2c 40 28 6d 61 70 63 61 72 20    28 6c 61 6d 62 64 61 20 28 6d 6f 64 65 6c 29 0a  | ")....,@(mapcar.(lambda.(model). | 
| 35da0 |  09 09 20 20 20 20 20 20 28 6c 69 73 74 20 27 63    6f 6e 73 74 20 3a 74 61 67 20 28 73 79 6d 62 6f  | ........(list.'const.:tag.(symbo | 
| 35dc0 |  6c 2d 6e 61 6d 65 20 28 63 61 72 20 6d 6f 64 65    6c 29 29 0a 09 09 09 20 20 20 20 28 63 61 72 20  | l-name.(car.model))........(car. | 
| 35de0 |  6d 6f 64 65 6c 29 29 29 0a 09 09 20 20 20 20 67    70 74 65 6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f 64  | model))).......gptel--openai-mod | 
| 35e00 |  65 6c 73 29 29 29 0a 0a 28 64 65 66 76 61 72 20    67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 0a 20 20  | els)))..(defvar.gptel--openai... | 
| 35e20 |  28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e    61 69 0a 20 20 20 20 20 20 22 43 68 61 74 47 50  | (gptel-make-openai......."ChatGP | 
| 35e40 |  54 22 0a 20 20 20 20 3a 6b 65 79 20 27 67 70 74    65 6c 2d 61 70 69 2d 6b 65 79 0a 20 20 20 20 3a  | T".....:key.'gptel-api-key.....: | 
| 35e60 |  73 74 72 65 61 6d 20 74 0a 20 20 20 20 3a 6d 6f    64 65 6c 73 20 67 70 74 65 6c 2d 2d 6f 70 65 6e  | stream.t.....:models.gptel--open | 
| 35e80 |  61 69 2d 6d 6f 64 65 6c 73 29 29 0a 0a 28 64 65    66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 62 61  | ai-models))..(defcustom.gptel-ba | 
| 35ea0 |  63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 6f 70 65    6e 61 69 0a 20 20 22 4c 4c 4d 20 62 61 63 6b 65  | ckend.gptel--openai..."LLM.backe | 
| 35ec0 |  6e 64 20 74 6f 20 75 73 65 2e 0a 0a 54 68 69 73    20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  | nd.to.use...This.is.the.default. | 
| 35ee0 |  5c 22 62 61 63 6b 65 6e 64 5c 22 2c 20 61 6e 20    6f 62 6a 65 63 74 20 6f 66 20 74 79 70 65 0a 60  | \"backend\",.an.object.of.type.` | 
| 35f00 |  67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20 63    6f 6e 74 61 69 6e 69 6e 67 20 63 6f 6e 6e 65 63  | gptel-backend'.containing.connec | 
| 35f20 |  74 69 6f 6e 2c 20 61 75 74 68 65 6e 74 69 63 61    74 69 6f 6e 20 61 6e 64 20 6d 6f 64 65 6c 0a 69  | tion,.authentication.and.model.i | 
| 35f40 |  6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 41 20 62    61 63 6b 65 6e 64 20 66 6f 72 20 43 68 61 74 47  | nformation...A.backend.for.ChatG | 
| 35f60 |  50 54 20 69 73 20 70 72 65 2d 64 65 66 69 6e 65    64 20 62 79 20 67 70 74 65 6c 2e 20 20 42 61 63  | PT.is.pre-defined.by.gptel...Bac | 
| 35f80 |  6b 65 6e 64 73 20 66 6f 72 0a 6f 74 68 65 72 20    4c 4c 4d 20 70 72 6f 76 69 64 65 72 73 20 28 6c  | kends.for.other.LLM.providers.(l | 
| 35fa0 |  6f 63 61 6c 20 6f 72 20 72 65 6d 6f 74 65 29 20    6d 61 79 20 62 65 20 63 6f 6e 73 74 72 75 63 74  | ocal.or.remote).may.be.construct | 
| 35fc0 |  65 64 20 75 73 69 6e 67 0a 6f 6e 65 20 6f 66 20    74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 62 61  | ed.using.one.of.the.available.ba | 
| 35fe0 |  63 6b 65 6e 64 20 63 72 65 61 74 69 6f 6e 20 66    75 6e 63 74 69 6f 6e 73 3a 0a 2d 20 60 67 70 74  | ckend.creation.functions:.-.`gpt | 
| 36000 |  65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 0a    2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a  | el-make-openai'.-.`gptel-make-az | 
| 36020 |  75 72 65 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61    6b 65 2d 6f 6c 6c 61 6d 61 27 0a 2d 20 60 67 70  | ure'.-.`gptel-make-ollama'.-.`gp | 
| 36040 |  74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c    27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d  | tel-make-gpt4all'.-.`gptel-make- | 
| 36060 |  67 65 6d 69 6e 69 27 0a 53 65 65 20 74 68 65 69    72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  | gemini'.See.their.documentation. | 
| 36080 |  66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61    74 69 6f 6e 20 61 6e 64 20 74 68 65 20 70 61 63  | for.more.information.and.the.pac | 
| 360a0 |  6b 61 67 65 0a 52 45 41 44 4d 45 20 66 6f 72 20    65 78 61 6d 70 6c 65 73 2e 22 0a 20 20 3a 73 61  | kage.README.for.examples."...:sa | 
| 360c0 |  66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 74    79 70 65 20 60 28 63 68 6f 69 63 65 0a 20 20 20  | fe.#'always...:type.`(choice.... | 
| 360e0 |  20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74    61 67 20 22 43 68 61 74 47 50 54 22 20 2c 67 70  | .......(const.:tag."ChatGPT".,gp | 
| 36100 |  74 65 6c 2d 2d 6f 70 65 6e 61 69 29 0a 20 20 20    20 20 20 20 20 20 20 28 72 65 73 74 72 69 63 74  | tel--openai)...........(restrict | 
| 36120 |  65 64 2d 73 65 78 70 20 3a 6d 61 74 63 68 2d 61    6c 74 65 72 6e 61 74 69 76 65 73 20 28 67 70 74  | ed-sexp.:match-alternatives.(gpt | 
| 36140 |  65 6c 2d 62 61 63 6b 65 6e 64 2d 70 20 27 6e 69    6c 29 0a 09 09 09 20 20 20 3a 74 61 67 20 22 4f  | el-backend-p.'nil).......:tag."O | 
| 36160 |  74 68 65 72 20 62 61 63 6b 65 6e 64 22 29 29 29    0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d  | ther.backend")))..(defvar.gptel- | 
| 36180 |  65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64 73 20    6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 65  | expert-commands.nil..."Whether.e | 
| 361a0 |  78 70 65 72 69 6d 65 6e 74 61 6c 20 67 70 74 65    6c 20 6f 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64  | xperimental.gptel.options.should | 
| 361c0 |  20 62 65 20 65 6e 61 62 6c 65 64 2e 0a 0a 54 68    69 73 20 6f 70 65 6e 73 20 75 70 20 61 64 76 61  | .be.enabled...This.opens.up.adva | 
| 361e0 |  6e 63 65 64 20 6f 70 74 69 6f 6e 73 20 69 6e 20    60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 22 29 0a  | nced.options.in.`gptel-menu'."). | 
| 36200 |  0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67    70 74 65 6c 2d 2d 62 6f 75 6e 64 73 20 6e 69 6c  | .(defvar-local.gptel--bounds.nil | 
| 36220 |  29 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 62    6f 75 6e 64 73 20 27 73 61 66 65 2d 6c 6f 63 61  | ).(put.'gptel--bounds.'safe-loca | 
| 36240 |  6c 2d 76 61 72 69 61 62 6c 65 20 23 27 61 6c 77    61 79 73 29 0a 0a 28 64 65 66 76 61 72 20 67 70  | l-variable.#'always)..(defvar.gp | 
| 36260 |  74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65    73 2d 74 6f 2d 73 65 6e 64 20 6e 69 6c 29 0a 28  | tel--num-messages-to-send.nil).( | 
| 36280 |  70 75 74 20 27 67 70 74 65 6c 2d 2d 6e 75 6d 2d    6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64  | put.'gptel--num-messages-to-send | 
| 362a0 |  20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 72    69 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a  | .'safe-local-variable.#'always). | 
| 362c0 |  0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65    6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 6e 69 6c 0a  | .(defcustom.gptel-log-level.nil. | 
| 362e0 |  20 20 22 4c 6f 67 67 69 6e 67 20 6c 65 76 65 6c    20 66 6f 72 20 67 70 74 65 6c 2e 0a 0a 54 68 69  | .."Logging.level.for.gptel...Thi | 
| 36300 |  73 20 69 73 20 6f 6e 65 20 6f 66 20 6e 69 6c 20    6f 72 20 74 68 65 20 73 79 6d 62 6f 6c 73 20 69  | s.is.one.of.nil.or.the.symbols.i | 
| 36320 |  6e 66 6f 20 61 6e 64 20 64 65 62 75 67 3a 0a 0a    6e 69 6c 3a 20 44 6f 6e 27 74 20 6c 6f 67 20 72  | nfo.and.debug:..nil:.Don't.log.r | 
| 36340 |  65 73 70 6f 6e 73 65 73 0a 69 6e 66 6f 3a 20 4c    6f 67 20 72 65 71 75 65 73 74 20 61 6e 64 20 72  | esponses.info:.Log.request.and.r | 
| 36360 |  65 73 70 6f 6e 73 65 20 62 6f 64 69 65 73 0a 64    65 62 75 67 3a 20 4c 6f 67 20 72 65 71 75 65 73  | esponse.bodies.debug:.Log.reques | 
| 36380 |  74 2f 72 65 73 70 6f 6e 73 65 20 62 6f 64 69 65    73 2c 20 68 65 61 64 65 72 73 20 61 6e 64 20 61  | t/response.bodies,.headers.and.a | 
| 363a0 |  6c 6c 20 6f 74 68 65 72 0a 20 20 20 20 20 20 20    63 6f 6e 6e 65 63 74 69 6f 6e 20 73 65 74 74 69  | ll.other........connection.setti | 
| 363c0 |  6e 67 73 2e 0a 0a 57 68 65 6e 20 6e 6f 6e 2d 6e    69 6c 2c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  | ngs...When.non-nil,.information. | 
| 363e0 |  69 73 20 6c 6f 67 67 65 64 20 74 6f 20 60 67 70    74 65 6c 2d 2d 6c 6f 67 2d 62 75 66 66 65 72 2d  | is.logged.to.`gptel--log-buffer- | 
| 36400 |  6e 61 6d 65 27 2c 0a 77 68 69 63 68 20 73 65 65    2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f  | name',.which.see."...:type.'(cho | 
| 36420 |  69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63    6f 6e 73 74 20 3a 74 61 67 20 22 4e 6f 20 6c 6f  | ice...........(const.:tag."No.lo | 
| 36440 |  67 67 69 6e 67 22 20 6e 69 6c 29 0a 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61  | gging".nil)...........(const.:ta | 
| 36460 |  67 20 22 4c 69 6d 69 74 65 64 22 20 69 6e 66 6f    29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e  | g."Limited".info)...........(con | 
| 36480 |  73 74 20 3a 74 61 67 20 22 46 75 6c 6c 22 20 64    65 62 75 67 29 29 29 0a 0a 28 64 65 66 63 75 73  | st.:tag."Full".debug)))..(defcus | 
| 364a0 |  74 6f 6d 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d    72 65 73 70 6f 6e 73 65 20 74 0a 20 20 22 44 69  | tom.gptel-track-response.t..."Di | 
| 364c0 |  73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65    6e 20 75 73 65 72 20 6d 65 73 73 61 67 65 73 20  | stinguish.between.user.messages. | 
| 364e0 |  61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65    73 2e 0a 0a 57 68 65 6e 20 63 72 65 61 74 69 6e  | and.LLM.responses...When.creatin | 
| 36500 |  67 20 61 20 70 72 6f 6d 70 74 20 74 6f 20 73 65    6e 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 67  | g.a.prompt.to.send.to.the.LLM,.g | 
| 36520 |  70 74 65 6c 20 64 69 73 74 69 6e 67 75 69 73 68    65 73 0a 62 65 74 77 65 65 6e 20 74 65 78 74 20  | ptel.distinguishes.between.text. | 
| 36540 |  65 6e 74 65 72 65 64 20 62 79 20 74 68 65 20 75    73 65 72 20 61 6e 64 20 70 61 73 74 20 4c 4c 4d  | entered.by.the.user.and.past.LLM | 
| 36560 |  20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 69    73 0a 64 69 73 74 69 6e 63 74 69 6f 6e 20 69 73  | .responses...This.distinction.is | 
| 36580 |  20 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 62    61 63 6b 2d 61 6e 64 2d 66 6f 72 74 68 20 63 6f  | .necessary.for.back-and-forth.co | 
| 365a0 |  6e 76 65 72 73 61 74 69 6f 6e 20 77 69 74 68 20    61 6e 0a 4c 4c 4d 2e 0a 0a 49 6e 20 72 65 67 75  | nversation.with.an.LLM...In.regu | 
| 365c0 |  6c 61 72 20 45 6d 61 63 73 20 62 75 66 66 65 72    73 20 79 6f 75 20 63 61 6e 20 74 75 72 6e 20 74  | lar.Emacs.buffers.you.can.turn.t | 
| 365e0 |  68 69 73 20 62 65 68 61 76 69 6f 72 20 6f 66 66    20 62 79 0a 73 65 74 74 69 6e 67 20 60 67 70 74  | his.behavior.off.by.setting.`gpt | 
| 36600 |  65 6c 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73    65 27 20 74 6f 20 6e 69 6c 2e 20 20 41 6c 6c 20  | el-track-response'.to.nil...All. | 
| 36620 |  74 65 78 74 2c 20 69 6e 63 6c 75 64 69 6e 67 0a    70 61 73 74 20 4c 4c 4d 20 72 65 73 70 6f 6e 73  | text,.including.past.LLM.respons | 
| 36640 |  65 73 2c 20 69 73 20 74 68 65 6e 20 74 72 65 61    74 65 64 20 61 73 20 75 73 65 72 20 69 6e 70 75  | es,.is.then.treated.as.user.inpu | 
| 36660 |  74 20 77 68 65 6e 20 73 65 6e 64 69 6e 67 0a 71    75 65 72 69 65 73 2e 0a 0a 54 68 69 73 20 76 61  | t.when.sending.queries...This.va | 
| 36680 |  72 69 61 62 6c 65 20 68 61 73 20 6e 6f 20 65 66    66 65 63 74 20 69 6e 20 64 65 64 69 63 61 74 65  | riable.has.no.effect.in.dedicate | 
| 366a0 |  64 20 63 68 61 74 20 62 75 66 66 65 72 73 20 28    62 75 66 66 65 72 73 0a 77 69 74 68 20 60 67 70  | d.chat.buffers.(buffers.with.`gp | 
| 366c0 |  74 65 6c 2d 6d 6f 64 65 27 20 65 6e 61 62 6c 65    64 29 2c 20 77 68 65 72 65 20 75 73 65 72 20 70  | tel-mode'.enabled),.where.user.p | 
| 366e0 |  72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f    6e 73 65 73 20 61 72 65 0a 61 6c 77 61 79 73 20  | rompts.and.responses.are.always. | 
| 36700 |  68 61 6e 64 6c 65 64 20 73 65 70 61 72 61 74 65    6c 79 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f  | handled.separately."...:type.'bo | 
| 36720 |  6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74    6f 6d 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d  | olean)..(defcustom.gptel-track-m | 
| 36740 |  65 64 69 61 20 6e 69 6c 0a 20 20 22 57 68 65 74    68 65 72 20 73 75 70 70 6f 72 74 65 64 20 6d 65  | edia.nil..."Whether.supported.me | 
| 36760 |  64 69 61 20 69 6e 20 63 68 61 74 20 62 75 66 66    65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 73 65  | dia.in.chat.buffers.should.be.se | 
| 36780 |  6e 74 2e 0a 0a 57 68 65 6e 20 74 68 65 20 61 63    74 69 76 65 20 60 67 70 74 65 6c 2d 6d 6f 64 65  | nt...When.the.active.`gptel-mode | 
| 367a0 |  6c 27 20 73 75 70 70 6f 72 74 73 20 69 74 2c 20    67 70 74 65 6c 20 63 61 6e 20 73 65 6e 64 20 69  | l'.supports.it,.gptel.can.send.i | 
| 367c0 |  6d 61 67 65 73 0a 6f 72 20 6f 74 68 65 72 20 6d    65 64 69 61 20 66 72 6f 6d 20 6c 69 6e 6b 73 20  | mages.or.other.media.from.links. | 
| 367e0 |  69 6e 20 63 68 61 74 20 62 75 66 66 65 72 73 20    74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 54 6f 20  | in.chat.buffers.to.the.LLM...To. | 
| 36800 |  75 73 65 0a 74 68 69 73 2c 20 74 68 65 20 66 6f    6c 6c 6f 77 69 6e 67 20 73 74 65 70 73 20 61 72  | use.this,.the.following.steps.ar | 
| 36820 |  65 20 72 65 71 75 69 72 65 64 2e 0a 0a 31 2e 20    60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64  | e.required...1..`gptel-track-med | 
| 36840 |  69 61 27 20 28 74 68 69 73 20 76 61 72 69 61 62    6c 65 29 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f  | ia'.(this.variable).should.be.no | 
| 36860 |  6e 2d 6e 69 6c 0a 0a 32 2e 20 54 68 65 20 4c 4c    4d 20 73 68 6f 75 6c 64 20 70 72 6f 76 69 64 65  | n-nil..2..The.LLM.should.provide | 
| 36880 |  20 76 69 73 69 6f 6e 20 6f 72 20 64 6f 63 75 6d    65 6e 74 20 73 75 70 70 6f 72 74 2e 20 20 43 75  | .vision.or.document.support...Cu | 
| 368a0 |  72 72 65 6e 74 6c 79 2c 0a 6f 6e 6c 79 20 74 68    65 20 4f 70 65 6e 41 49 2c 20 41 6e 74 68 72 6f  | rrently,.only.the.OpenAI,.Anthro | 
| 368c0 |  70 69 63 20 61 6e 64 20 4f 6c 6c 61 6d 61 20 41    50 49 73 20 61 72 65 20 73 75 70 70 6f 72 74 65  | pic.and.Ollama.APIs.are.supporte | 
| 368e0 |  64 2e 20 20 53 65 65 0a 74 68 65 20 64 6f 63 75    6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 60 67 70  | d...See.the.documentation.of.`gp | 
| 36900 |  74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27    2c 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e  | tel-make-openai',.`gptel-make-an | 
| 36920 |  74 68 72 6f 70 69 63 27 0a 61 6e 64 20 60 67 70    74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 27  | thropic'.and.`gptel-make-ollama' | 
| 36940 |  20 72 65 73 70 2e 20 66 6f 72 20 64 65 74 61 69    6c 73 20 6f 6e 20 68 6f 77 20 74 6f 20 73 70 65  | .resp..for.details.on.how.to.spe | 
| 36960 |  63 69 66 79 20 6d 65 64 69 61 0a 73 75 70 70 6f    72 74 20 66 6f 72 20 6d 6f 64 65 6c 73 2e 0a 0a  | cify.media.support.for.models... | 
| 36980 |  33 2e 20 4f 6e 6c 79 20 5c 22 73 74 61 6e 64 61    6c 6f 6e 65 5c 22 20 6c 69 6e 6b 73 20 69 6e 20  | 3..Only.\"standalone\".links.in. | 
| 369a0 |  63 68 61 74 20 62 75 66 66 65 72 73 20 61 72 65    20 63 6f 6e 73 69 64 65 72 65 64 2e 0a 54 68 65  | chat.buffers.are.considered..The | 
| 369c0 |  73 65 20 61 72 65 20 6c 69 6e 6b 73 20 6f 6e 20    74 68 65 69 72 20 6f 77 6e 20 6c 69 6e 65 20 77  | se.are.links.on.their.own.line.w | 
| 369e0 |  69 74 68 20 6e 6f 20 73 75 72 72 6f 75 6e 64 69    6e 67 20 74 65 78 74 2e 0a 46 75 72 74 68 65 72  | ith.no.surrounding.text..Further | 
| 36a00 |  3a 0a 0a 2d 20 49 6e 20 4f 72 67 20 6d 6f 64 65    2c 20 6f 6e 6c 79 20 66 69 6c 65 73 20 6f 72 20  | :..-.In.Org.mode,.only.files.or. | 
| 36a20 |  55 52 4c 73 20 6f 66 20 74 68 65 20 66 6f 72 6d    0a 20 20 5b 5b 2f 70 61 74 68 2f 74 6f 2f 6d 65  | URLs.of.the.form...[[/path/to/me | 
| 36a40 |  64 69 61 5d 5b 62 72 61 63 6b 65 74 20 6c 69 6e    6b 73 5d 5d 20 61 6e 64 20 3c 61 6e 67 6c 65 2f  | dia][bracket.links]].and.<angle/ | 
| 36a60 |  6c 69 6e 6b 2f 70 61 74 68 3e 0a 20 20 61 72 65    20 73 65 6e 74 2e 0a 0a 2d 20 49 6e 20 4d 61 72  | link/path>...are.sent...-.In.Mar | 
| 36a80 |  6b 64 6f 77 6e 20 6d 6f 64 65 2c 20 6f 6e 6c 79    20 66 69 6c 65 73 20 6f 72 20 55 52 4c 53 20 6f  | kdown.mode,.only.files.or.URLS.o | 
| 36aa0 |  66 20 74 68 65 20 66 6f 72 6d 0a 20 20 5b 62 72    61 63 6b 65 74 20 6c 69 6e 6b 5d 28 2f 70 61 74  | f.the.form...[bracket.link](/pat | 
| 36ac0 |  68 2f 74 6f 2f 6d 65 64 69 61 29 20 61 6e 64 20    3c 61 6e 67 6c 65 2f 6c 69 6e 6b 2f 70 61 74 68  | h/to/media).and.<angle/link/path | 
| 36ae0 |  3e 0a 20 20 61 72 65 20 73 65 6e 74 2e 0a 0a 54    68 69 73 20 6f 70 74 69 6f 6e 20 68 61 73 20 6e  | >...are.sent...This.option.has.n | 
| 36b00 |  6f 20 65 66 66 65 63 74 20 69 6e 20 6e 6f 6e 2d    63 68 61 74 20 62 75 66 66 65 72 73 2e 20 20 54  | o.effect.in.non-chat.buffers...T | 
| 36b20 |  6f 20 69 6e 63 6c 75 64 65 0a 6d 65 64 69 61 20    28 69 6e 63 6c 75 64 69 6e 67 20 69 6d 61 67 65  | o.include.media.(including.image | 
| 36b40 |  73 29 20 6d 6f 72 65 20 67 65 6e 65 72 61 6c 6c    79 2c 20 75 73 65 20 60 67 70 74 65 6c 2d 61 64  | s).more.generally,.use.`gptel-ad | 
| 36b60 |  64 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f    6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74  | d'."...:type.'boolean)..(defcust | 
| 36b80 |  6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e    74 65 78 74 20 27 73 79 73 74 65 6d 0a 20 20 22  | om.gptel-use-context.'system..." | 
| 36ba0 |  57 68 65 72 65 20 69 6e 20 74 68 65 20 72 65 71    75 65 73 74 20 74 6f 20 69 6e 6a 65 63 74 20 67  | Where.in.the.request.to.inject.g | 
| 36bc0 |  70 74 65 6c 27 73 20 61 64 64 69 74 69 6f 6e 61    6c 20 63 6f 6e 74 65 78 74 2e 0a 0a 67 70 74 65  | ptel's.additional.context...gpte | 
| 36be0 |  6c 20 61 6c 77 61 79 73 20 69 6e 63 6c 75 64 65    73 20 74 68 65 20 61 63 74 69 76 65 20 72 65 67  | l.always.includes.the.active.reg | 
| 36c00 |  69 6f 6e 20 6f 72 20 74 68 65 20 62 75 66 66 65    72 20 75 70 20 74 6f 20 74 68 65 0a 63 75 72 73  | ion.or.the.buffer.up.to.the.curs | 
| 36c20 |  6f 72 20 69 6e 20 74 68 65 20 72 65 71 75 65 73    74 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 41  | or.in.the.request.to.the.LLM...A | 
| 36c40 |  64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f 75    20 63 61 6e 20 61 64 64 0a 6f 74 68 65 72 20 62  | dditionally,.you.can.add.other.b | 
| 36c60 |  75 66 66 65 72 73 20 6f 72 20 74 68 65 69 72 20    72 65 67 69 6f 6e 73 20 74 6f 20 74 68 65 20 63  | uffers.or.their.regions.to.the.c | 
| 36c80 |  6f 6e 74 65 78 74 20 77 69 74 68 0a 60 67 70 74    65 6c 2d 61 64 64 2d 63 6f 6e 74 65 78 74 27 2c  | ontext.with.`gptel-add-context', | 
| 36ca0 |  20 6f 72 20 66 72 6f 6d 20 67 70 74 65 6c 27 73    20 6d 65 6e 75 2e 20 20 54 68 69 73 20 64 61 74  | .or.from.gptel's.menu...This.dat | 
| 36cc0 |  61 20 77 69 6c 6c 20 62 65 0a 73 65 6e 74 20 77    69 74 68 20 65 76 65 72 79 20 72 65 71 75 65 73  | a.will.be.sent.with.every.reques | 
| 36ce0 |  74 2e 0a 0a 54 68 69 73 20 6f 70 74 69 6f 6e 20    63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72  | t...This.option.controls.whether | 
| 36d00 |  20 61 6e 64 20 77 68 65 72 65 20 74 68 69 73 20    61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 65  | .and.where.this.additional.conte | 
| 36d20 |  78 74 20 69 73 0a 69 6e 63 6c 75 64 65 64 20 69    6e 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a  | xt.is.included.in.the.request... | 
| 36d40 |  43 75 72 72 65 6e 74 6c 79 20 73 75 70 70 6f 72    74 65 64 20 6f 70 74 69 6f 6e 73 20 61 72 65 3a  | Currently.supported.options.are: | 
| 36d60 |  0a 0a 20 20 20 20 6e 69 6c 20 20 20 20 20 2d 20    44 6f 20 6e 6f 74 20 75 73 65 20 74 68 65 20 63  | ......nil.....-.Do.not.use.the.c | 
| 36d80 |  6f 6e 74 65 78 74 2e 0a 20 20 20 20 73 79 73 74    65 6d 20 20 2d 20 49 6e 63 6c 75 64 65 20 74 68  | ontext......system..-.Include.th | 
| 36da0 |  65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 74    68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67  | e.context.with.the.system.messag | 
| 36dc0 |  65 2e 0a 20 20 20 20 75 73 65 72 20 20 20 20 2d    20 49 6e 63 6c 75 64 65 20 74 68 65 20 63 6f 6e  | e......user....-.Include.the.con | 
| 36de0 |  74 65 78 74 20 77 69 74 68 20 74 68 65 20 75 73    65 72 20 70 72 6f 6d 70 74 2e 22 0a 20 20 3a 67  | text.with.the.user.prompt."...:g | 
| 36e00 |  72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74    79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20  | roup.'gptel...:type.'(choice.... | 
| 36e20 |  20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74    61 67 20 22 44 6f 6e 27 74 20 69 6e 63 6c 75 64  | .......(const.:tag."Don't.includ | 
| 36e40 |  65 20 63 6f 6e 74 65 78 74 22 20 6e 69 6c 29 0a    20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74  | e.context".nil)...........(const | 
| 36e60 |  20 3a 74 61 67 20 22 57 69 74 68 20 73 79 73 74    65 6d 20 6d 65 73 73 61 67 65 22 20 73 79 73 74  | .:tag."With.system.message".syst | 
| 36e80 |  65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 28 63    6f 6e 73 74 20 3a 74 61 67 20 22 57 69 74 68 20  | em)...........(const.:tag."With. | 
| 36ea0 |  75 73 65 72 20 70 72 6f 6d 70 74 22 20 75 73 65    72 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d  | user.prompt".user)))..(defcustom | 
| 36ec0 |  20 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72    65 61 73 6f 6e 69 6e 67 20 74 0a 20 20 22 48 6f  | .gptel-include-reasoning.t..."Ho | 
| 36ee0 |  77 20 74 6f 20 68 61 6e 64 6c 65 20 4c 4c 4d 20    72 65 61 73 6f 6e 69 6e 67 20 6f 72 20 5c 22 74  | w.to.handle.LLM.reasoning.or.\"t | 
| 36f00 |  68 69 6e 6b 69 6e 67 5c 22 20 74 65 78 74 20 62    6c 6f 63 6b 73 2e 0a 0a 53 6f 6d 65 20 4c 4c 4d  | hinking\".text.blocks...Some.LLM | 
| 36f20 |  73 20 69 6e 63 6c 75 64 65 20 69 6e 20 74 68 65    69 72 20 72 65 73 70 6f 6e 73 65 20 61 20 5c 22  | s.include.in.their.response.a.\" | 
| 36f40 |  74 68 69 6e 6b 69 6e 67 5c 22 20 73 65 63 74 69    6f 6e 2e 20 20 54 68 69 73 0a 74 65 78 74 20 69  | thinking\".section...This.text.i | 
| 36f60 |  6d 70 72 6f 76 65 73 20 74 68 65 20 71 75 61 6c    69 74 79 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73  | mproves.the.quality.of.the.LLM's | 
| 36f80 |  20 66 69 6e 61 6c 20 6f 75 74 70 75 74 2c 20 62    75 74 20 6d 61 79 20 6e 6f 74 0a 62 65 20 69 6e  | .final.output,.but.may.not.be.in | 
| 36fa0 |  74 65 72 65 73 74 69 6e 67 20 74 6f 20 79 6f 75    20 62 79 20 69 74 73 65 6c 66 2e 0a 0a 53 75 70  | teresting.to.you.by.itself...Sup | 
| 36fc0 |  70 6f 72 74 65 64 20 6f 70 74 69 6f 6e 73 20 61    72 65 20 74 68 65 20 73 79 6d 62 6f 6c 73 0a 0a  | ported.options.are.the.symbols.. | 
| 36fe0 |  20 20 20 20 74 20 20 20 20 20 20 20 2d 20 49 6e    63 6c 75 64 65 20 77 69 74 68 20 74 68 65 20 72  | ....t.......-.Include.with.the.r | 
| 37000 |  65 73 70 6f 6e 73 65 2c 20 74 68 65 20 64 65 66    61 75 6c 74 0a 20 20 20 20 6e 69 6c 20 20 20 20  | esponse,.the.default.....nil.... | 
| 37020 |  20 2d 20 44 6f 20 6e 6f 74 20 69 6e 63 6c 75 64    65 0a 20 20 20 20 69 67 6e 6f 72 65 20 20 2d 20  | .-.Do.not.include.....ignore..-. | 
| 37040 |  49 6e 63 6c 75 64 65 20 77 69 74 68 20 74 68 65    20 72 65 73 70 6f 6e 73 65 20 62 75 74 20 69 67  | Include.with.the.response.but.ig | 
| 37060 |  6e 6f 72 65 20 6f 6e 20 73 75 62 73 65 71 75 65    6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | nore.on.subsequent.............. | 
| 37080 |  20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 74 75    72 6e 73 0a 0a 49 74 20 63 61 6e 20 61 6c 73 6f  | .conversation.turns..It.can.also | 
| 370a0 |  20 62 65 20 61 20 73 74 72 69 6e 67 20 6e 61 6d    69 6e 67 20 61 20 62 75 66 66 65 72 2c 20 69 6e  | .be.a.string.naming.a.buffer,.in | 
| 370c0 |  20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 0a    72 65 61 73 6f 6e 69 6e 67 20 74 65 78 74 20 77  | .which.case.the.reasoning.text.w | 
| 370e0 |  69 6c 6c 20 62 65 20 69 6e 73 65 72 74 65 64 20    61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  | ill.be.inserted.at.the.end.of.th | 
| 37100 |  61 74 20 62 75 66 66 65 72 2e 22 0a 20 20 3a 67    72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74  | at.buffer."...:group.'gptel...:t | 
| 37120 |  79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20    20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74  | ype.'(choice...........(const.:t | 
| 37140 |  61 67 20 22 49 6e 63 6c 75 64 65 20 77 69 74 68    20 72 65 73 70 6f 6e 73 65 22 20 74 29 0a 20 20  | ag."Include.with.response".t)... | 
| 37160 |  20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a    74 61 67 20 22 44 6f 6e 27 74 20 69 6e 63 6c 75  | ........(const.:tag."Don't.inclu | 
| 37180 |  64 65 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20    20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22  | de".nil)...........(const.:tag." | 
| 371a0 |  49 6e 63 6c 75 64 65 20 62 75 74 20 69 67 6e 6f    72 65 22 20 69 67 6e 6f 72 65 29 0a 20 20 20 20  | Include.but.ignore".ignore)..... | 
| 371c0 |  20 20 20 20 20 20 28 73 74 72 69 6e 67 20 3a 74    61 67 20 22 49 6e 63 6c 75 64 65 20 69 6e 20 62  | ......(string.:tag."Include.in.b | 
| 371e0 |  75 66 66 65 72 22 29 29 29 0a 0a 28 64 65 66 76    61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d  | uffer")))..(defvar-local.gptel-- | 
| 37200 |  6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 20    6e 69 6c 29 0a 0a 28 64 65 66 76 61 72 20 67 70  | old-header-line.nil)..(defvar.gp | 
| 37220 |  74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69    73 74 20 6e 69 6c 0a 20 20 22 4c 69 73 74 20 6f  | tel-context--alist.nil..."List.o | 
| 37240 |  66 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78    74 20 73 6f 75 72 63 65 73 2e 0a 0a 45 61 63 68  | f.gptel's.context.sources...Each | 
| 37260 |  20 65 6e 74 72 79 20 69 73 20 6f 66 20 74 68 65    20 66 6f 72 6d 0a 20 28 62 75 66 66 65 72 20 2e  | .entry.is.of.the.form..(buffer.. | 
| 37280 |  20 28 6f 76 65 72 6c 61 79 31 20 6f 76 65 72 6c    61 79 32 20 2e 2e 2e 29 29 0a 6f 72 0a 20 28 5c  | .(overlay1.overlay2....)).or..(\ | 
| 372a0 |  22 70 61 74 68 2f 74 6f 2f 66 69 6c 65 5c 22 29    2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74  | "path/to/file\").")..(defvar.gpt | 
| 372c0 |  65 6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73    74 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 6f  | el--request-alist.nil..."Alist.o | 
| 372e0 |  66 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 72    65 71 75 65 73 74 73 2e 0a 45 61 63 68 20 65 6e  | f.active.gptel.requests..Each.en | 
| 37300 |  74 72 79 20 68 61 73 20 74 68 65 20 66 6f 72 6d    20 28 50 52 4f 43 45 53 53 20 2e 20 28 46 53 4d  | try.has.the.form.(PROCESS...(FSM | 
| 37320 |  20 41 42 4f 52 54 2d 43 4c 4f 53 55 52 45 29 29    0a 49 66 20 74 68 65 20 41 42 4f 52 54 2d 43 4c  | .ABORT-CLOSURE)).If.the.ABORT-CL | 
| 37340 |  4f 53 55 52 45 20 69 73 20 63 61 6c 6c 65 64 2c    20 69 74 20 6d 75 73 74 20 61 62 6f 72 74 20 74  | OSURE.is.called,.it.must.abort.t | 
| 37360 |  68 65 20 50 52 4f 43 45 53 53 2e 22 29 0a 0a 0c    0a 3b 3b 3b 20 55 74 69 6c 69 74 79 20 66 75 6e  | he.PROCESS.")....;;;.Utility.fun | 
| 37380 |  63 74 69 6f 6e 73 0a 0a 28 64 65 66 75 6e 20 67    70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 6f  | ctions..(defun.gptel-api-key-fro | 
| 373a0 |  6d 2d 61 75 74 68 2d 73 6f 75 72 63 65 20 28 26    6f 70 74 69 6f 6e 61 6c 20 68 6f 73 74 20 75 73  | m-auth-source.(&optional.host.us | 
| 373c0 |  65 72 29 0a 20 20 22 4c 6f 6f 6b 75 70 20 61 70    69 20 6b 65 79 20 69 6e 20 74 68 65 20 61 75 74  | er)..."Lookup.api.key.in.the.aut | 
| 373e0 |  68 20 73 6f 75 72 63 65 2e 0a 42 79 20 64 65 66    61 75 6c 74 2c 20 74 68 65 20 4c 4c 4d 20 68 6f  | h.source..By.default,.the.LLM.ho | 
| 37400 |  73 74 20 66 6f 72 20 74 68 65 20 61 63 74 69 76    65 20 62 61 63 6b 65 6e 64 20 69 73 20 75 73 65  | st.for.the.active.backend.is.use | 
| 37420 |  64 20 61 73 20 48 4f 53 54 2c 0a 61 6e 64 20 5c    22 61 70 69 6b 65 79 5c 22 20 61 73 20 55 53 45  | d.as.HOST,.and.\"apikey\".as.USE | 
| 37440 |  52 2e 22 0a 20 20 28 69 66 2d 6c 65 74 2a 20 28    28 73 65 63 72 65 74 0a 20 20 20 20 20 20 20 20  | R."...(if-let*.((secret......... | 
| 37460 |  20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | .....(plist-get...............(c | 
| 37480 |  61 72 20 28 61 75 74 68 2d 73 6f 75 72 63 65 2d    73 65 61 72 63 68 0a 20 20 20 20 20 20 20 20 20  | ar.(auth-source-search.......... | 
| 374a0 |  20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74    20 28 6f 72 20 68 6f 73 74 20 28 67 70 74 65 6c  | ...........:host.(or.host.(gptel | 
| 374c0 |  2d 62 61 63 6b 65 6e 64 2d 68 6f 73 74 20 67 70    74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20  | -backend-host.gptel-backend))... | 
| 374e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3a 75 73 65 72 20 28 6f 72 20 75 73 65 72  | ..................:user.(or.user | 
| 37500 |  20 22 61 70 69 6b 65 79 22 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | ."apikey").....................: | 
| 37520 |  72 65 71 75 69 72 65 20 27 28 3a 73 65 63 72 65    74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | require.'(:secret)))............ | 
| 37540 |  20 20 20 3a 73 65 63 72 65 74 29 29 29 0a 20 20    20 20 20 20 28 69 66 20 28 66 75 6e 63 74 69 6f  | ...:secret))).......(if.(functio | 
| 37560 |  6e 70 20 73 65 63 72 65 74 29 0a 20 20 20 20 20    20 20 20 20 20 28 65 6e 63 6f 64 65 2d 63 6f 64  | np.secret)...........(encode-cod | 
| 37580 |  69 6e 67 2d 73 74 72 69 6e 67 20 28 66 75 6e 63    61 6c 6c 20 73 65 63 72 65 74 29 20 27 75 74 66  | ing-string.(funcall.secret).'utf | 
| 375a0 |  2d 38 29 0a 20 20 20 20 20 20 20 20 73 65 63 72    65 74 29 0a 20 20 20 20 28 75 73 65 72 2d 65 72  | -8).........secret).....(user-er | 
| 375c0 |  72 6f 72 20 22 4e 6f 20 60 67 70 74 65 6c 2d 61    70 69 2d 6b 65 79 27 20 66 6f 75 6e 64 20 69 6e  | ror."No.`gptel-api-key'.found.in | 
| 375e0 |  20 74 68 65 20 61 75 74 68 20 73 6f 75 72 63 65    22 29 29 29 0a 0a 3b 3b 20 46 49 58 4d 45 20 53  | .the.auth.source")))..;;.FIXME.S | 
| 37600 |  68 6f 75 6c 64 20 77 65 20 75 74 66 2d 38 20 65    6e 63 6f 64 65 20 74 68 65 20 61 70 69 2d 6b 65  | hould.we.utf-8.encode.the.api-ke | 
| 37620 |  79 20 68 65 72 65 3f 0a 28 64 65 66 75 6e 20 67    70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65  | y.here?.(defun.gptel--get-api-ke | 
| 37640 |  79 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6b 65 79    29 0a 20 20 22 47 65 74 20 61 70 69 20 6b 65 79  | y.(&optional.key)..."Get.api.key | 
| 37660 |  20 66 72 6f 6d 20 4b 45 59 2c 20 6f 72 20 66 72    6f 6d 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65  | .from.KEY,.or.from.`gptel-api-ke | 
| 37680 |  79 27 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74    2a 20 28 28 6b 65 79 2d 73 79 6d 20 28 6f 72 20  | y'."...(when-let*.((key-sym.(or. | 
| 376a0 |  6b 65 79 20 28 67 70 74 65 6c 2d 62 61 63 6b 65    6e 64 2d 6b 65 79 20 67 70 74 65 6c 2d 62 61 63  | key.(gptel-backend-key.gptel-bac | 
| 376c0 |  6b 65 6e 64 29 29 29 29 0a 20 20 20 20 28 63 6c    2d 74 79 70 65 63 61 73 65 20 6b 65 79 2d 73 79  | kend)))).....(cl-typecase.key-sy | 
| 376e0 |  6d 0a 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f    6e 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 72  | m.......(function.(string-trim-r | 
| 37700 |  69 67 68 74 20 28 66 75 6e 63 61 6c 6c 20 6b 65    79 2d 73 79 6d 29 20 22 5b 5c 6e 5c 72 5d 2b 22  | ight.(funcall.key-sym)."[\n\r]+" | 
| 37720 |  29 29 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67    20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 72 69  | )).......(string.(string-trim-ri | 
| 37740 |  67 68 74 20 6b 65 79 2d 73 79 6d 20 22 5b 5c 6e    5c 72 5d 2b 22 29 29 0a 20 20 20 20 20 20 28 73  | ght.key-sym."[\n\r]+")).......(s | 
| 37760 |  79 6d 62 6f 6c 20 28 69 66 2d 6c 65 74 2a 20 28    28 76 61 6c 20 28 73 79 6d 62 6f 6c 2d 76 61 6c  | ymbol.(if-let*.((val.(symbol-val | 
| 37780 |  75 65 20 6b 65 79 2d 73 79 6d 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ue.key-sym)))................... | 
| 377a0 |  28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d    6b 65 79 20 76 61 6c 29 0a 20 20 20 20 20 20 20  | (gptel--get-api-key.val)........ | 
| 377c0 |  20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20    22 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27  | .........(error."`gptel-api-key' | 
| 377e0 |  20 69 73 20 6e 6f 74 20 76 61 6c 69 64 22 29 29    29 0a 20 20 20 20 20 20 28 74 20 28 65 72 72 6f  | .is.not.valid"))).......(t.(erro | 
| 37800 |  72 20 22 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65    79 27 20 69 73 20 6e 6f 74 20 76 61 6c 69 64 22  | r."`gptel-api-key'.is.not.valid" | 
| 37820 |  29 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74    20 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 6d 62 65  | )))))..(defsubst.gptel--to-numbe | 
| 37840 |  72 20 28 76 61 6c 29 0a 20 20 22 45 6e 73 75 72    65 20 56 41 4c 20 69 73 20 61 20 6e 75 6d 62 65  | r.(val)..."Ensure.VAL.is.a.numbe | 
| 37860 |  72 2e 22 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28    28 6e 75 6d 62 65 72 70 20 76 61 6c 29 20 76 61  | r."...(cond....((numberp.val).va | 
| 37880 |  6c 29 0a 20 20 20 28 28 73 74 72 69 6e 67 70 20    76 61 6c 29 20 28 73 74 72 69 6e 67 2d 74 6f 2d  | l)....((stringp.val).(string-to- | 
| 378a0 |  6e 75 6d 62 65 72 20 76 61 6c 29 29 0a 20 20 20    28 28 65 72 72 6f 72 20 22 25 53 20 63 61 6e 6e  | number.val))....((error."%S.cann | 
| 378c0 |  6f 74 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20    74 6f 20 61 20 6e 75 6d 62 65 72 22 20 76 61 6c  | ot.be.converted.to.a.number".val | 
| 378e0 |  29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20    67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67  | ))))..(defsubst.gptel--to-string | 
| 37900 |  20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20    53 20 74 6f 20 61 20 73 74 72 69 6e 67 2c 20 69  | .(s)..."Convert.S.to.a.string,.i | 
| 37920 |  66 20 70 6f 73 73 69 62 6c 65 2e 22 0a 20 20 28    63 6c 2d 74 79 70 65 63 61 73 65 20 73 0a 20 20  | f.possible."...(cl-typecase.s... | 
| 37940 |  20 20 28 73 79 6d 62 6f 6c 20 28 73 79 6d 62 6f    6c 2d 6e 61 6d 65 20 73 29 29 0a 20 20 20 20 28  | ..(symbol.(symbol-name.s)).....( | 
| 37960 |  73 74 72 69 6e 67 20 73 29 0a 20 20 20 20 28 6f    74 68 65 72 77 69 73 65 20 28 70 72 69 6e 31 2d  | string.s).....(otherwise.(prin1- | 
| 37980 |  74 6f 2d 73 74 72 69 6e 67 20 73 29 29 29 29 0a    0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c  | to-string.s))))..(defsubst.gptel | 
| 379a0 |  2d 2d 69 6e 74 65 72 6e 20 28 73 29 0a 20 20 22    49 6e 74 65 72 6e 20 53 2c 20 69 66 20 70 6f 73  | --intern.(s)..."Intern.S,.if.pos | 
| 379c0 |  73 69 62 6c 65 2e 22 0a 20 20 28 63 6c 2d 65 74    79 70 65 63 61 73 65 20 73 0a 20 20 20 20 28 73  | sible."...(cl-etypecase.s.....(s | 
| 379e0 |  79 6d 62 6f 6c 20 73 29 0a 20 20 20 20 28 73 74    72 69 6e 67 20 28 69 6e 74 65 72 6e 20 73 29 29  | ymbol.s).....(string.(intern.s)) | 
| 37a00 |  29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c    2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 20 28  | ))..(defun.gptel--merge-plists.( | 
| 37a20 |  26 72 65 73 74 20 70 6c 69 73 74 73 29 0a 20 20    22 4d 65 72 67 65 20 50 4c 49 53 54 53 2c 20 61  | &rest.plists)..."Merge.PLISTS,.a | 
| 37a40 |  6c 74 65 72 69 6e 67 20 74 68 65 20 66 69 72 73    74 20 6f 6e 65 2e 0a 0a 4c 61 74 65 72 20 70 6c  | ltering.the.first.one...Later.pl | 
| 37a60 |  69 73 74 73 20 69 6e 20 74 68 65 20 73 65 71 75    65 6e 63 65 20 74 61 6b 65 20 70 72 65 63 65 64  | ists.in.the.sequence.take.preced | 
| 37a80 |  65 6e 63 65 20 6f 76 65 72 20 65 61 72 6c 69 65    72 20 6f 6e 65 73 2e 22 0a 20 20 28 6c 65 74 20  | ence.over.earlier.ones."...(let. | 
| 37aa0 |  28 3b 3b 20 28 72 74 6e 20 28 63 6f 70 79 2d 73    65 71 75 65 6e 63 65 20 28 70 6f 70 20 70 6c 69  | (;;.(rtn.(copy-sequence.(pop.pli | 
| 37ac0 |  73 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 28    72 74 6e 20 28 70 6f 70 20 70 6c 69 73 74 73 29  | sts))).........(rtn.(pop.plists) | 
| 37ae0 |  29 0a 20 20 20 20 20 20 20 20 70 20 76 20 6c 73    29 0a 20 20 20 20 28 77 68 69 6c 65 20 70 6c 69  | ).........p.v.ls).....(while.pli | 
| 37b00 |  73 74 73 0a 20 20 20 20 20 20 28 73 65 74 71 20    6c 73 20 28 70 6f 70 20 70 6c 69 73 74 73 29 29  | sts.......(setq.ls.(pop.plists)) | 
| 37b20 |  0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 6c 73    0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70  | .......(while.ls.........(setq.p | 
| 37b40 |  20 28 70 6f 70 20 6c 73 29 20 76 20 28 70 6f 70    20 6c 73 29 29 0a 20 20 20 20 20 20 20 20 28 73  | .(pop.ls).v.(pop.ls)).........(s | 
| 37b60 |  65 74 71 20 72 74 6e 20 28 70 6c 69 73 74 2d 70    75 74 20 72 74 6e 20 70 20 76 29 29 29 29 0a 20  | etq.rtn.(plist-put.rtn.p.v)))).. | 
| 37b80 |  20 20 20 72 74 6e 29 29 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 66 69 6c 65 2d 62 69 6e  | ...rtn))..(defun.gptel--file-bin | 
| 37ba0 |  61 72 79 2d 70 20 28 70 61 74 68 29 0a 20 20 22    43 68 65 63 6b 20 69 66 20 66 69 6c 65 20 61 74  | ary-p.(path)..."Check.if.file.at | 
| 37bc0 |  20 50 41 54 48 20 69 73 20 72 65 61 64 61 62 6c    65 20 61 6e 64 20 62 69 6e 61 72 79 2e 22 0a 20  | .PATH.is.readable.and.binary.".. | 
| 37be0 |  20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65    20 6e 69 6c 0a 20 20 20 20 20 20 28 77 69 74 68  | .(condition-case.nil.......(with | 
| 37c00 |  2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20    20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c  | -temp-buffer.........(insert-fil | 
| 37c20 |  65 2d 63 6f 6e 74 65 6e 74 73 20 70 61 74 68 20    6e 69 6c 20 31 20 35 31 32 20 27 72 65 70 6c 61  | e-contents.path.nil.1.512.'repla | 
| 37c40 |  63 65 29 0a 20 20 20 20 20 20 20 20 28 65 71 20    62 75 66 66 65 72 2d 66 69 6c 65 2d 63 6f 64 69  | ce).........(eq.buffer-file-codi | 
| 37c60 |  6e 67 2d 73 79 73 74 65 6d 20 27 6e 6f 2d 63 6f    6e 76 65 72 73 69 6f 6e 29 29 0a 20 20 20 20 28  | ng-system.'no-conversion)).....( | 
| 37c80 |  66 69 6c 65 2d 6d 69 73 73 69 6e 67 20 28 6d 65    73 73 61 67 65 20 22 46 69 6c 65 20 5c 22 25 73  | file-missing.(message."File.\"%s | 
| 37ca0 |  5c 22 20 69 73 20 6e 6f 74 20 72 65 61 64 61 62    6c 65 2e 22 20 70 61 74 68 29 0a 20 20 20 20 20  | \".is.not.readable.".path)...... | 
| 37cc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c    29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65  | .............nil)))..(defun.gpte | 
| 37ce0 |  6c 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d 73    74 72 69 6e 67 20 28 70 61 74 68 29 0a 20 20 22  | l--insert-file-string.(path)..." | 
| 37d00 |  49 6e 73 65 72 74 20 61 74 20 70 6f 69 6e 74 20    74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20  | Insert.at.point.the.contents.of. | 
| 37d20 |  74 68 65 20 66 69 6c 65 20 61 74 20 50 41 54 48    20 61 73 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20  | the.file.at.PATH.as.context."... | 
| 37d40 |  28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20    22 49 6e 20 66 69 6c 65 20 60 25 73 60 3a 22 20  | (insert.(format."In.file.`%s`:". | 
| 37d60 |  28 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69    72 65 63 74 6f 72 79 20 70 61 74 68 29 29 0a 20  | (file-name-nondirectory.path)).. | 
| 37d80 |  20 20 20 20 20 20 20 20 20 22 5c 6e 5c 6e 60 60    60 5c 6e 22 29 0a 20 20 28 6c 65 74 20 28 28 70  | ........."\n\n```\n")...(let.((p | 
| 37da0 |  6d 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65 72 29    29 29 0a 20 20 20 20 28 73 65 74 2d 6d 61 72 6b  | m.(point-marker))).....(set-mark | 
| 37dc0 |  65 72 2d 69 6e 73 65 72 74 69 6f 6e 2d 74 79 70    65 20 70 6d 20 74 29 0a 20 20 20 20 28 69 6e 73  | er-insertion-type.pm.t).....(ins | 
| 37de0 |  65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74    73 20 70 61 74 68 29 0a 20 20 20 20 28 67 6f 74  | ert-file-contents.path).....(got | 
| 37e00 |  6f 2d 63 68 61 72 20 70 6d 29 29 0a 20 20 28 69    6e 73 65 72 74 20 22 5c 6e 60 60 60 5c 6e 22 29  | o-char.pm))...(insert."\n```\n") | 
| 37e20 |  29 0a 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68    74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65 61 64 65  | )..(defvar.url-http-end-of-heade | 
| 37e40 |  72 73 29 0a 28 64 65 66 76 61 72 20 75 72 6c 2d    68 74 74 70 2d 72 65 73 70 6f 6e 73 65 2d 73 74  | rs).(defvar.url-http-response-st | 
| 37e60 |  61 74 75 73 29 0a 28 63 6c 2d 64 65 66 75 6e 20    67 70 74 65 6c 2d 2d 75 72 6c 2d 72 65 74 72 69  | atus).(cl-defun.gptel--url-retri | 
| 37e80 |  65 76 65 20 28 75 72 6c 20 26 6b 65 79 20 6d 65    74 68 6f 64 20 64 61 74 61 20 68 65 61 64 65 72  | eve.(url.&key.method.data.header | 
| 37ea0 |  73 29 0a 20 20 22 52 65 74 72 69 65 76 65 20 55    52 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79  | s)..."Retrieve.URL.synchronously | 
| 37ec0 |  20 77 69 74 68 20 4d 45 54 48 4f 44 2c 20 44 41    54 41 20 61 6e 64 20 48 45 41 44 45 52 53 2e 22  | .with.METHOD,.DATA.and.HEADERS." | 
| 37ee0 |  0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64    65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28  | ...(declare.(indent.1))...(let.( | 
| 37f00 |  28 75 72 6c 2d 72 65 71 75 65 73 74 2d 6d 65 74    68 6f 64 20 28 69 66 20 28 65 71 20 6d 65 74 68  | (url-request-method.(if.(eq.meth | 
| 37f20 |  6f 64 27 70 6f 73 74 29 20 22 50 4f 53 54 22 20    22 47 45 54 22 29 29 0a 20 20 20 20 20 20 20 20  | od'post)."POST"."GET"))......... | 
| 37f40 |  28 75 72 6c 2d 72 65 71 75 65 73 74 2d 64 61 74    61 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67  | (url-request-data.(encode-coding | 
| 37f60 |  2d 73 74 72 69 6e 67 20 28 67 70 74 65 6c 2d 2d    6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 64 61 74 61  | -string.(gptel--json-encode.data | 
| 37f80 |  29 20 27 75 74 66 2d 38 29 29 0a 20 20 20 20 20    20 20 20 28 75 72 6c 2d 6d 69 6d 65 2d 61 63 63  | ).'utf-8)).........(url-mime-acc | 
| 37fa0 |  65 70 74 2d 73 74 72 69 6e 67 20 22 61 70 70 6c    69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 22 29 0a 20  | ept-string."application/json").. | 
| 37fc0 |  20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75    65 73 74 2d 65 78 74 72 61 2d 68 65 61 64 65 72  | .......(url-request-extra-header | 
| 37fe0 |  73 0a 20 20 20 20 20 20 20 20 20 60 28 28 22 63    6f 6e 74 65 6e 74 2d 74 79 70 65 22 20 2e 20 22  | s..........`(("content-type"..." | 
| 38000 |  61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e    22 29 0a 20 20 20 20 20 20 20 20 20 20 20 2c 40  | application/json")............,@ | 
| 38020 |  68 65 61 64 65 72 73 29 29 29 0a 20 20 20 20 28    77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66  | headers))).....(with-current-buf | 
| 38040 |  66 65 72 20 28 75 72 6c 2d 72 65 74 72 69 65 76    65 2d 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20  | fer.(url-retrieve-synchronously. | 
| 38060 |  75 72 6c 20 27 73 69 6c 65 6e 74 29 0a 20 20 20    20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 75 72  | url.'silent).......(goto-char.ur | 
| 38080 |  6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65    61 64 65 72 73 29 0a 20 20 20 20 20 20 28 67 70  | l-http-end-of-headers).......(gp | 
| 380a0 |  74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29    29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c  | tel--json-read))))..(defun.gptel | 
| 380c0 |  2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 20 28 29 0a    20 20 22 53 63 72 6f 6c 6c 20 77 69 6e 64 6f 77  | -auto-scroll.()..."Scroll.window | 
| 380e0 |  20 69 66 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65    20 63 6f 6e 74 69 6e 75 65 73 20 62 65 6c 6f 77  | .if.LLM.response.continues.below | 
| 38100 |  20 76 69 65 77 70 6f 72 74 2e 0a 0a 4e 6f 74 65    3a 20 54 68 69 73 20 77 69 6c 6c 20 6d 6f 76 65  | .viewport...Note:.This.will.move | 
| 38120 |  20 74 68 65 20 63 75 72 73 6f 72 2e 22 0a 20 20    28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 77 69 6e  | .the.cursor."...(when-let*.((win | 
| 38140 |  20 28 67 65 74 2d 62 75 66 66 65 72 2d 77 69 6e    64 6f 77 20 28 63 75 72 72 65 6e 74 2d 62 75 66  | .(get-buffer-window.(current-buf | 
| 38160 |  66 65 72 29 20 27 76 69 73 69 62 6c 65 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28  | fer).'visible))...............(( | 
| 38180 |  6e 6f 74 20 28 70 6f 73 2d 76 69 73 69 62 6c 65    2d 69 6e 2d 77 69 6e 64 6f 77 2d 70 20 28 70 6f  | not.(pos-visible-in-window-p.(po | 
| 381a0 |  69 6e 74 29 20 77 69 6e 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 73 63 72 6f 6c  | int).win)))...............(scrol | 
| 381c0 |  6c 2d 65 72 72 6f 72 2d 74 6f 70 2d 62 6f 74 74    6f 6d 20 74 29 29 0a 20 20 20 20 28 63 6f 6e 64  | l-error-top-bottom.t)).....(cond | 
| 381e0 |  69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20    20 20 20 20 20 20 20 28 77 69 74 68 2d 73 65 6c  | ition-case.nil.........(with-sel | 
| 38200 |  65 63 74 65 64 2d 77 69 6e 64 6f 77 20 77 69 6e    0a 20 20 20 20 20 20 20 20 20 20 28 73 63 72 6f  | ected-window.win...........(scro | 
| 38220 |  6c 6c 2d 75 70 2d 63 6f 6d 6d 61 6e 64 29 29 0a    20 20 20 20 20 20 28 65 72 72 6f 72 20 6e 69 6c  | ll-up-command)).......(error.nil | 
| 38240 |  29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20    67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65  | ))))..(defsubst.gptel-prompt-pre | 
| 38260 |  66 69 78 2d 73 74 72 69 6e 67 20 28 29 0a 20 20    22 50 72 65 66 69 78 20 62 65 66 6f 72 65 20 75  | fix-string.()..."Prefix.before.u | 
| 38280 |  73 65 72 20 70 72 6f 6d 70 74 73 20 69 6e 20 60    67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a 20 20  | ser.prompts.in.`gptel-mode'."... | 
| 382a0 |  28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65    66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20  | (declare.(side-effect-free.t)).. | 
| 382c0 |  20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20    6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c  | .(or.(alist-get.major-mode.gptel | 
| 382e0 |  2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 61    6c 69 73 74 29 20 22 22 29 29 0a 0a 28 64 65 66  | -prompt-prefix-alist).""))..(def | 
| 38300 |  73 75 62 73 74 20 67 70 74 65 6c 2d 72 65 73 70    6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69  | subst.gptel-response-prefix-stri | 
| 38320 |  6e 67 20 28 29 0a 20 20 22 50 72 65 66 69 78 20    62 65 66 6f 72 65 20 4c 4c 4d 20 72 65 73 70 6f  | ng.()..."Prefix.before.LLM.respo | 
| 38340 |  6e 73 65 73 20 69 6e 20 60 67 70 74 65 6c 2d 6d    6f 64 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72  | nses.in.`gptel-mode'."...(declar | 
| 38360 |  65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66    72 65 65 20 74 29 29 0a 20 20 28 6f 72 20 28 61  | e.(side-effect-free.t))...(or.(a | 
| 38380 |  6c 69 73 74 2d 67 65 74 20 6d 61 6a 6f 72 2d 6d    6f 64 65 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e  | list-get.major-mode.gptel-respon | 
| 383a0 |  73 65 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 29    20 22 22 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | se-prefix-alist).""))..(defun.gp | 
| 383c0 |  74 65 6c 2d 62 65 67 69 6e 6e 69 6e 67 2d 6f 66    2d 72 65 73 70 6f 6e 73 65 20 28 26 6f 70 74 69  | tel-beginning-of-response.(&opti | 
| 383e0 |  6f 6e 61 6c 20 5f 20 5f 20 61 72 67 29 0a 20 20    22 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20 74  | onal._._.arg)..."Move.point.to.t | 
| 38400 |  68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20    74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65  | he.beginning.of.the.LLM.response | 
| 38420 |  20 41 52 47 20 74 69 6d 65 73 2e 22 0a 20 20 28    69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73  | .ARG.times."...(interactive.(lis | 
| 38440 |  74 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | t.nil.nil......................( | 
| 38460 |  70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63 2d 76    61 6c 75 65 20 63 75 72 72 65 6e 74 2d 70 72 65  | prefix-numeric-value.current-pre | 
| 38480 |  66 69 78 2d 61 72 67 29 29 29 0a 20 20 28 67 70    74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f  | fix-arg)))...(gptel-end-of-respo | 
| 384a0 |  6e 73 65 20 6e 69 6c 20 6e 69 6c 20 28 2d 20 28    6f 72 20 61 72 67 20 31 29 29 29 29 0a 0a 28 64  | nse.nil.nil.(-.(or.arg.1))))..(d | 
| 384c0 |  65 66 75 6e 20 67 70 74 65 6c 2d 65 6e 64 2d 6f    66 2d 72 65 73 70 6f 6e 73 65 20 28 26 6f 70 74  | efun.gptel-end-of-response.(&opt | 
| 384e0 |  69 6f 6e 61 6c 20 5f 20 5f 20 61 72 67 29 0a 20    20 22 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20  | ional._._.arg)..."Move.point.to. | 
| 38500 |  74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 4c    4c 4d 20 72 65 73 70 6f 6e 73 65 20 41 52 47 20  | the.end.of.the.LLM.response.ARG. | 
| 38520 |  74 69 6d 65 73 2e 22 0a 20 20 28 69 6e 74 65 72    61 63 74 69 76 65 20 28 6c 69 73 74 20 6e 69 6c  | times."...(interactive.(list.nil | 
| 38540 |  20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 72 65 66 69  | .nil......................(prefi | 
| 38560 |  78 2d 6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20    63 75 72 72 65 6e 74 2d 70 72 65 66 69 78 2d 61  | x-numeric-value.current-prefix-a | 
| 38580 |  72 67 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20    61 72 67 20 28 73 65 74 71 20 61 72 67 20 31 29  | rg)))...(unless.arg.(setq.arg.1) | 
| 385a0 |  29 0a 20 20 28 6c 65 74 20 28 28 73 65 61 72 63    68 20 28 69 66 20 28 3e 20 61 72 67 20 30 29 0a  | )...(let.((search.(if.(>.arg.0). | 
| 385c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 23 27 74 65 78 74 2d 70 72 6f 70 65  | ....................#'text-prope | 
| 385e0 |  72 74 79 2d 73 65 61 72 63 68 2d 66 6f 72 77 61    72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | rty-search-forward.............. | 
| 38600 |  20 20 20 20 20 23 27 74 65 78 74 2d 70 72 6f 70    65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b  | .....#'text-property-search-back | 
| 38620 |  77 61 72 64 29 29 29 0a 20 20 20 20 28 64 6f 74    69 6d 65 73 20 28 5f 20 28 61 62 73 20 61 72 67  | ward))).....(dotimes.(_.(abs.arg | 
| 38640 |  29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c    6c 20 73 65 61 72 63 68 20 27 67 70 74 65 6c 20  | )).......(funcall.search.'gptel. | 
| 38660 |  27 72 65 73 70 6f 6e 73 65 20 74 29 0a 20 20 20    20 20 20 28 69 66 20 28 3e 20 61 72 67 20 30 29  | 'response.t).......(if.(>.arg.0) | 
| 38680 |  0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e    2d 6c 65 74 2a 20 28 28 70 72 65 66 69 78 20 28  | ...........(when-let*.((prefix.( | 
| 386a0 |  67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65    66 69 78 2d 73 74 72 69 6e 67 29 29 0a 20 20 20  | gptel-prompt-prefix-string)).... | 
| 386c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 28 6e 6f 74 20 28 73 74 72 69 6e 67  | ...................((not.(string | 
| 386e0 |  2d 65 6d 70 74 79 2d 70 20 70 72 65 66 69 78 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | -empty-p.prefix))).............. | 
| 38700 |  20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69    6e 67 2d 61 74 20 28 63 6f 6e 63 61 74 20 22 5c  | .........((looking-at.(concat."\ | 
| 38720 |  6e 5c 5c 7b 31 2c 32 5c 5c 7d 22 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n\\{1,2\\}"..................... | 
| 38740 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71  | .......................(regexp-q | 
| 38760 |  75 6f 74 65 20 70 72 65 66 69 78 29 20 22 3f 22    29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | uote.prefix)."?"))))............ | 
| 38780 |  20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74    63 68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20  | .(goto-char.(match-end.0)))..... | 
| 387a0 |  20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28    28 70 72 65 66 69 78 20 28 67 70 74 65 6c 2d 72  | ....(when-let*.((prefix.(gptel-r | 
| 387c0 |  65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73    74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20  | esponse-prefix-string))......... | 
| 387e0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f    74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d  | ............((not.(string-empty- | 
| 38800 |  70 20 70 72 65 66 69 78 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | p.prefix)))..................... | 
| 38820 |  28 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 28    63 6f 6e 63 61 74 20 28 72 65 67 65 78 70 2d 71  | ((looking-back.(concat.(regexp-q | 
| 38840 |  75 6f 74 65 20 70 72 65 66 69 78 29 20 22 3f 22    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | uote.prefix)."?")............... | 
| 38860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29  | .....................(point-min) | 
| 38880 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67    6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d  | )))...........(goto-char.(match- | 
| 388a0 |  62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 29 29    29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70  | beginning.0)))))))..(defmacro.gp | 
| 388c0 |  74 65 6c 2d 2d 61 74 2d 77 6f 72 64 2d 65 6e 64    20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20  | tel--at-word-end.(&rest.body)... | 
| 388e0 |  22 45 78 65 63 75 74 65 20 42 4f 44 59 20 61 74    20 65 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72  | "Execute.BODY.at.end.of.the.curr | 
| 38900 |  65 6e 74 20 77 6f 72 64 20 6f 72 20 70 75 6e 63    74 75 61 74 69 6f 6e 2e 22 0a 20 20 60 28 73 61  | ent.word.or.punctuation."...`(sa | 
| 38920 |  76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20    20 20 28 73 6b 69 70 2d 73 79 6e 74 61 78 2d 66  | ve-excursion......(skip-syntax-f | 
| 38940 |  6f 72 77 61 72 64 20 22 77 2e 22 29 0a 20 20 20    20 20 2c 28 6d 61 63 72 6f 65 78 70 2d 70 72 6f  | orward."w.")......,(macroexp-pro | 
| 38960 |  67 6e 20 62 6f 64 79 29 29 29 0a 0a 28 64 65 66    6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 74 65 6d  | gn.body)))..(defmacro.gptel--tem | 
| 38980 |  70 2d 62 75 66 66 65 72 20 28 62 75 66 29 0a 20    20 22 47 65 6e 65 72 61 74 65 20 61 20 74 65 6d  | p-buffer.(buf)..."Generate.a.tem | 
| 389a0 |  70 20 62 75 66 66 65 72 20 42 55 46 2e 0a 0a 43    6f 6d 70 61 74 69 62 69 6c 69 74 79 20 6d 61 63  | p.buffer.BUF...Compatibility.mac | 
| 389c0 |  72 6f 20 66 6f 72 20 45 6d 61 63 73 20 32 37 2e    31 2e 22 0a 20 20 28 69 66 20 28 3c 20 65 6d 61  | ro.for.Emacs.27.1."...(if.(<.ema | 
| 389e0 |  63 73 2d 6d 61 6a 6f 72 2d 76 65 72 73 69 6f 6e    20 32 38 29 0a 20 20 20 20 20 20 60 28 67 65 6e  | cs-major-version.28).......`(gen | 
| 38a00 |  65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72    20 2c 62 75 66 29 0a 20 20 20 20 60 28 67 65 6e  | erate-new-buffer.,buf).....`(gen | 
| 38a20 |  65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72    20 2c 62 75 66 20 74 29 29 29 0a 0a 28 64 65 66  | erate-new-buffer.,buf.t)))..(def | 
| 38a40 |  6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 77 69 74    68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 28 62  | macro.gptel--with-buffer-copy.(b | 
| 38a60 |  75 66 20 73 74 61 72 74 20 65 6e 64 20 26 72 65    73 74 20 62 6f 64 79 29 0a 20 20 22 43 6f 70 79  | uf.start.end.&rest.body)..."Copy | 
| 38a80 |  20 67 70 74 65 6c 27 73 20 6c 6f 63 61 6c 20 76    61 72 69 61 62 6c 65 73 20 66 72 6f 6d 20 42 55  | .gptel's.local.variables.from.BU | 
| 38aa0 |  46 20 74 6f 20 61 20 74 65 6d 70 20 62 75 66 66    65 72 20 61 6e 64 20 72 75 6e 20 42 4f 44 59 2e  | F.to.a.temp.buffer.and.run.BODY. | 
| 38ac0 |  0a 0a 49 66 20 70 6f 73 69 74 69 6f 6e 73 20 53    54 41 52 54 20 61 6e 64 20 45 4e 44 20 61 72 65  | ..If.positions.START.and.END.are | 
| 38ae0 |  20 70 72 6f 76 69 64 65 64 2c 20 69 6e 73 65 72    74 20 74 68 61 74 20 70 61 72 74 20 6f 66 20 42  | .provided,.insert.that.part.of.B | 
| 38b00 |  55 46 20 66 69 72 73 74 2e 22 0a 20 20 60 28 67    70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65  | UF.first."...`(gptel--with-buffe | 
| 38b20 |  72 2d 63 6f 70 79 2d 69 6e 74 65 72 6e 61 6c 20    2c 62 75 66 20 2c 73 74 61 72 74 20 2c 65 6e 64  | r-copy-internal.,buf.,start.,end | 
| 38b40 |  20 28 6c 61 6d 62 64 61 20 28 29 20 2c 40 62 6f    64 79 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | .(lambda.().,@body)))..(defun.gp | 
| 38b60 |  74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72    2d 63 6f 70 79 2d 69 6e 74 65 72 6e 61 6c 20 28  | tel--with-buffer-copy-internal.( | 
| 38b80 |  62 75 66 20 73 74 61 72 74 20 65 6e 64 20 62 6f    64 79 2d 74 68 75 6e 6b 29 0a 20 20 22 50 72 65  | buf.start.end.body-thunk)..."Pre | 
| 38ba0 |  70 61 72 65 20 61 20 74 65 6d 70 20 62 75 66 66    65 72 20 66 6f 72 20 61 20 67 70 74 65 6c 20 72  | pare.a.temp.buffer.for.a.gptel.r | 
| 38bc0 |  65 71 75 65 73 74 2e 0a 0a 46 6f 72 20 42 55 46    2c 20 53 54 41 52 54 2c 20 45 4e 44 20 61 6e 64  | equest...For.BUF,.START,.END.and | 
| 38be0 |  20 42 4f 44 59 2d 54 48 55 4e 4b 20 73 65 65 20    60 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66  | .BODY-THUNK.see.`gptel--with-buf | 
| 38c00 |  66 65 72 2d 63 6f 70 79 27 2e 22 0a 20 20 28 6c    65 74 20 28 28 74 65 6d 70 2d 62 75 66 66 65 72  | fer-copy'."...(let.((temp-buffer | 
| 38c20 |  20 28 67 70 74 65 6c 2d 2d 74 65 6d 70 2d 62 75    66 66 65 72 20 22 20 2a 67 70 74 65 6c 2d 70 72  | .(gptel--temp-buffer.".*gptel-pr | 
| 38c40 |  6f 6d 70 74 2a 22 29 29 29 0a 20 20 20 20 28 77    69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66  | ompt*"))).....(with-current-buff | 
| 38c60 |  65 72 20 74 65 6d 70 2d 62 75 66 66 65 72 0a 20    20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 73 79  | er.temp-buffer.......(dolist.(sy | 
| 38c80 |  6d 20 27 28 20 67 70 74 65 6c 2d 62 61 63 6b 65    6e 64 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d  | m.'(.gptel-backend.gptel--system | 
| 38ca0 |  2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 6d    6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20  | -message.gptel-model............ | 
| 38cc0 |  20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c    2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63  | ...........gptel-mode.gptel-trac | 
| 38ce0 |  6b 2d 72 65 73 70 6f 6e 73 65 20 67 70 74 65 6c    2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20  | k-response.gptel-track-media.... | 
| 38d00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f  | ...................gptel-use-too | 
| 38d20 |  6c 73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 67    70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 0a 20 20  | ls.gptel-tools.gptel-use-curl... | 
| 38d40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f  | ....................gptel-use-co | 
| 38d60 |  6e 74 65 78 74 20 67 70 74 65 6c 2d 2d 6e 75 6d    2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e  | ntext.gptel--num-messages-to-sen | 
| 38d80 |  64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 73 74  | d.......................gptel-st | 
| 38da0 |  72 65 61 6d 20 67 70 74 65 6c 2d 69 6e 63 6c 75    64 65 2d 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20  | ream.gptel-include-reasoning.... | 
| 38dc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61  | ...................gptel-tempera | 
| 38de0 |  74 75 72 65 20 67 70 74 65 6c 2d 6d 61 78 2d 74    6f 6b 65 6e 73 20 67 70 74 65 6c 2d 63 61 63 68  | ture.gptel-max-tokens.gptel-cach | 
| 38e00 |  65 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74    20 28 6d 61 6b 65 2d 6c 6f 63 61 6c 2d 76 61 72  | e)).........(set.(make-local-var | 
| 38e20 |  69 61 62 6c 65 20 73 79 6d 29 20 28 62 75 66 66    65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 73  | iable.sym).(buffer-local-value.s | 
| 38e40 |  79 6d 20 62 75 66 29 29 29 0a 20 20 20 20 20 20    28 77 68 65 6e 20 28 61 6e 64 20 73 74 61 72 74  | ym.buf))).......(when.(and.start | 
| 38e60 |  20 65 6e 64 29 20 28 69 6e 73 65 72 74 2d 62 75    66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 62  | .end).(insert-buffer-substring.b | 
| 38e80 |  75 66 20 73 74 61 72 74 20 65 6e 64 29 29 0a 20    20 20 20 20 20 28 73 65 74 71 20 6d 61 6a 6f 72  | uf.start.end)).......(setq.major | 
| 38ea0 |  2d 6d 6f 64 65 20 28 62 75 66 66 65 72 2d 6c 6f    63 61 6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72  | -mode.(buffer-local-value.'major | 
| 38ec0 |  2d 6d 6f 64 65 20 62 75 66 29 29 0a 20 20 20 20    20 20 28 66 75 6e 63 61 6c 6c 20 62 6f 64 79 2d  | -mode.buf)).......(funcall.body- | 
| 38ee0 |  74 68 75 6e 6b 29 29 29 29 0a 0a 28 64 65 66 73    75 62 73 74 20 67 70 74 65 6c 2d 2d 74 72 69 6d  | thunk))))..(defsubst.gptel--trim | 
| 38f00 |  2d 70 72 65 66 69 78 65 73 20 28 73 29 0a 20 20    22 52 65 6d 6f 76 65 20 70 72 6f 6d 70 74 2f 72  | -prefixes.(s)..."Remove.prompt/r | 
| 38f20 |  65 73 70 6f 6e 73 65 20 70 72 65 66 69 78 65 73    20 66 72 6f 6d 20 73 74 72 69 6e 67 20 53 2e 0a  | esponse.prefixes.from.string.S.. | 
| 38f40 |  0a 52 65 74 75 72 6e 20 6e 69 6c 20 69 66 20 73    74 72 69 6e 67 20 63 6f 6c 6c 61 70 73 65 73 20  | .Return.nil.if.string.collapses. | 
| 38f60 |  74 6f 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e    22 0a 20 20 28 6c 65 74 2a 20 28 28 74 72 69 6d  | to.empty.string."...(let*.((trim | 
| 38f80 |  6d 65 64 20 28 73 74 72 69 6e 67 2d 74 72 69 6d    2d 6c 65 66 74 0a 20 20 20 20 20 20 20 20 20 20  | med.(string-trim-left........... | 
| 38fa0 |  20 20 20 20 20 20 20 20 20 73 20 28 66 6f 72 6d    61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c  | .........s.(format."[\t\r\n.]*\\ | 
| 38fc0 |  28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e    20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20  | (?:%s\\)?[\t\r\n.]*"............ | 
| 38fe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 0a  | ..................(regexp-quote. | 
| 39000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67  | ..............................(g | 
| 39020 |  70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66    69 78 2d 73 74 72 69 6e 67 29 29 29 29 29 0a 20  | ptel-prompt-prefix-string))))).. | 
| 39040 |  20 20 20 20 20 20 20 20 28 74 72 69 6d 6d 65 64    20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 72 69  | ........(trimmed.(string-trim-ri | 
| 39060 |  67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 74 72 69 6d 6d 65 64 20 28  | ght....................trimmed.( | 
| 39080 |  66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20    5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74  | format."[\t\r\n.]*\\(?:%s\\)?[\t | 
| 390a0 |  5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | \r\n.]*"........................ | 
| 390c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67    65 78 70 2d 71 75 6f 74 65 0a 20 20 20 20 20 20  | ............(regexp-quote....... | 
| 390e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67  | ..............................(g | 
| 39100 |  70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72    65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 29  | ptel-response-prefix-string))))) | 
| 39120 |  29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73    74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 74 72  | ).....(unless.(string-empty-p.tr | 
| 39140 |  69 6d 6d 65 64 29 0a 20 20 20 20 20 20 74 72 69    6d 6d 65 64 29 29 29 0a 0a 28 64 65 66 73 75 62  | immed).......trimmed)))..(defsub | 
| 39160 |  73 74 20 67 70 74 65 6c 2d 2d 6c 69 6e 6b 2d 73    74 61 6e 64 61 6c 6f 6e 65 2d 70 20 28 62 65 67  | st.gptel--link-standalone-p.(beg | 
| 39180 |  20 65 6e 64 29 0a 20 20 22 52 65 74 75 72 6e 20    6e 6f 6e 2d 6e 69 6c 20 69 66 20 70 6f 73 69 74  | .end)..."Return.non-nil.if.posit | 
| 391a0 |  69 6f 6e 73 20 42 45 47 20 61 6e 64 20 45 4e 44    20 61 72 65 20 69 73 6f 6c 61 74 65 64 2e 0a 0a  | ions.BEG.and.END.are.isolated... | 
| 391c0 |  54 68 69 73 20 6d 65 61 6e 73 20 74 68 65 20 65    78 74 65 6e 74 20 66 72 6f 6d 20 42 45 47 20 74  | This.means.the.extent.from.BEG.t | 
| 391e0 |  6f 20 45 4e 44 20 69 73 20 74 68 65 20 6f 6e 6c    79 20 6e 6f 6e 2d 77 68 69 74 65 73 70 61 63 65  | o.END.is.the.only.non-whitespace | 
| 39200 |  0a 63 6f 6e 74 65 6e 74 20 6f 6e 20 74 68 69 73    20 6c 69 6e 65 2e 22 0a 20 20 28 73 61 76 65 2d  | .content.on.this.line."...(save- | 
| 39220 |  65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 61    6e 64 20 28 3d 20 62 65 67 20 28 70 72 6f 67 6e  | excursion.....(and.(=.beg.(progn | 
| 39240 |  20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67 29    20 28 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 6c  | .(goto-char.beg).(beginning-of-l | 
| 39260 |  69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 73 6b 69  | ine)........................(ski | 
| 39280 |  70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20    22 5c 74 20 22 29 0a 20 20 20 20 20 20 20 20 20  | p-chars-forward."\t.").......... | 
| 392a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70    6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20  | ..............(point)))......... | 
| 392c0 |  20 28 3d 20 65 6e 64 20 28 70 72 6f 67 6e 20 28    67 6f 74 6f 2d 63 68 61 72 20 65 6e 64 29 20 28  | .(=.end.(progn.(goto-char.end).( | 
| 392e0 |  65 6e 64 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | end-of-line).................... | 
| 39300 |  20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d    62 61 63 6b 77 61 72 64 20 22 5c 74 20 22 29 0a  | ....(skip-chars-backward."\t."). | 
| 39320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 29 29  | .......................(point))) | 
| 39340 |  29 29 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63    61 6c 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e  | )))..(defvar-local.gptel--backen | 
| 39360 |  64 2d 6e 61 6d 65 20 6e 69 6c 0a 20 20 22 53 74    6f 72 65 20 74 6f 20 70 65 72 73 69 73 74 20 62  | d-name.nil..."Store.to.persist.b | 
| 39380 |  61 63 6b 65 6e 64 20 6e 61 6d 65 20 61 63 72 6f    73 73 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e  | ackend.name.across.Emacs.session | 
| 393a0 |  73 2e 0a 0a 4e 6f 74 65 3a 20 43 68 61 6e 67 69    6e 67 20 74 68 69 73 20 76 61 72 69 61 62 6c 65  | s...Note:.Changing.this.variable | 
| 393c0 |  20 64 6f 65 73 20 6e 6f 74 20 61 66 66 65 63 74    20 67 70 74 65 6c 5c 5c 3d 27 73 20 62 65 68 61  | .does.not.affect.gptel\\='s.beha | 
| 393e0 |  76 69 6f 72 0a 69 6e 20 61 6e 79 20 77 61 79 2e    22 29 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d  | vior.in.any.way.").(put.'gptel-- | 
| 39400 |  62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 27 73 61    66 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c  | backend-name.'safe-local-variabl | 
| 39420 |  65 20 23 27 61 6c 77 61 79 73 29 0a 0a 28 64 65    66 73 75 62 73 74 20 67 70 74 65 6c 2d 2d 63 75  | e.#'always)..(defsubst.gptel--cu | 
| 39440 |  72 6c 2d 70 61 74 68 20 28 29 0a 20 20 22 43 75    72 6c 20 65 78 65 63 75 74 61 62 6c 65 20 74 6f  | rl-path.()..."Curl.executable.to | 
| 39460 |  20 75 73 65 2e 22 0a 20 20 28 69 66 20 28 73 74    72 69 6e 67 70 20 67 70 74 65 6c 2d 75 73 65 2d  | .use."...(if.(stringp.gptel-use- | 
| 39480 |  63 75 72 6c 29 20 67 70 74 65 6c 2d 75 73 65 2d    63 75 72 6c 20 22 63 75 72 6c 22 29 29 0a 0a 28  | curl).gptel-use-curl."curl"))..( | 
| 394a0 |  64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 72 61    6e 73 66 6f 72 6d 2d 61 64 64 2d 63 6f 6e 74 65  | defun.gptel--transform-add-conte | 
| 394c0 |  78 74 20 28 63 61 6c 6c 62 61 63 6b 20 66 73 6d    29 0a 20 20 28 69 66 20 28 61 6e 64 20 67 70 74  | xt.(callback.fsm)...(if.(and.gpt | 
| 394e0 |  65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 20 67    70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c  | el-use-context.gptel-context--al | 
| 39500 |  69 73 74 29 0a 20 20 20 20 20 20 28 67 70 74 65    6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20  | ist).......(gptel-context--wrap. | 
| 39520 |  63 61 6c 6c 62 61 63 6b 20 28 70 6c 69 73 74 2d    67 65 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69  | callback.(plist-get.(gptel-fsm-i | 
| 39540 |  6e 66 6f 20 66 73 6d 29 20 3a 64 61 74 61 29 29    0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61  | nfo.fsm).:data)).....(funcall.ca | 
| 39560 |  6c 6c 62 61 63 6b 29 29 29 0a 0a 3b 3b 3b 3b 20    4d 6f 64 65 6c 20 69 6e 74 65 72 66 61 63 65 0a  | llback)))..;;;;.Model.interface. | 
| 39580 |  3b 3b 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 6e    74 65 72 66 61 63 65 20 77 6f 75 6c 64 20 62 65  | ;;.NOTE:.This.interface.would.be | 
| 395a0 |  20 73 69 6d 70 6c 65 72 20 74 6f 20 69 6d 70 6c    65 6d 65 6e 74 20 61 73 20 61 20 64 65 66 73 74  | .simpler.to.implement.as.a.defst | 
| 395c0 |  72 75 63 74 2e 20 20 42 75 74 20 74 68 65 6e 0a    3b 3b 20 75 73 65 72 73 20 63 61 6e 6e 6f 74 20  | ruct...But.then.;;.users.cannot. | 
| 395e0 |  73 65 74 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c    27 20 74 6f 20 61 20 73 79 6d 62 6f 6c 2f 73 74  | set.`gptel-model'.to.a.symbol/st | 
| 39600 |  72 69 6e 67 20 64 69 72 65 63 74 6c 79 2c 20 6f    72 20 77 65 27 64 20 6e 65 65 64 0a 3b 3b 20 61  | ring.directly,.or.we'd.need.;;.a | 
| 39620 |  6e 6f 74 68 65 72 20 6d 61 70 20 66 72 6f 6d 20    74 68 65 73 65 20 73 79 6d 62 6f 6c 73 20 74 6f  | nother.map.from.these.symbols.to | 
| 39640 |  20 74 68 65 20 61 63 74 75 61 6c 20 6d 6f 64 65    6c 20 73 74 72 75 63 74 73 2e 0a 0a 28 64 65 66  | .the.actual.model.structs...(def | 
| 39660 |  73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64    65 6c 2d 6e 61 6d 65 20 28 6d 6f 64 65 6c 29 0a  | subst.gptel--model-name.(model). | 
| 39680 |  20 20 22 47 65 74 20 6e 61 6d 65 20 6f 66 20 67    70 74 65 6c 20 4d 4f 44 45 4c 2e 22 0a 20 20 28  | .."Get.name.of.gptel.MODEL."...( | 
| 396a0 |  67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67    20 6d 6f 64 65 6c 29 29 0a 0a 28 64 65 66 73 75  | gptel--to-string.model))..(defsu | 
| 396c0 |  62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c    2d 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6d  | bst.gptel--model-capabilities.(m | 
| 396e0 |  6f 64 65 6c 29 0a 20 20 22 47 65 74 20 4d 4f 44    45 4c 20 63 61 70 61 62 69 6c 69 74 69 65 73 2e  | odel)..."Get.MODEL.capabilities. | 
| 39700 |  22 0a 20 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a    63 61 70 61 62 69 6c 69 74 69 65 73 29 29 0a 0a  | "...(get.model.:capabilities)).. | 
| 39720 |  28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d    2d 6d 6f 64 65 6c 2d 6d 69 6d 65 73 20 28 6d 6f  | (defsubst.gptel--model-mimes.(mo | 
| 39740 |  64 65 6c 29 0a 20 20 22 47 65 74 20 73 75 70 70    6f 72 74 65 64 20 6d 69 6d 65 2d 74 79 70 65 73  | del)..."Get.supported.mime-types | 
| 39760 |  20 66 6f 72 20 4d 4f 44 45 4c 2e 22 0a 20 20 28    67 65 74 20 6d 6f 64 65 6c 20 3a 6d 69 6d 65 2d  | .for.MODEL."...(get.model.:mime- | 
| 39780 |  74 79 70 65 73 29 29 0a 0a 28 64 65 66 73 75 62    73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d  | types))..(defsubst.gptel--model- | 
| 397a0 |  63 61 70 61 62 6c 65 2d 70 20 28 63 61 70 20 26    6f 70 74 69 6f 6e 61 6c 20 6d 6f 64 65 6c 29 0a  | capable-p.(cap.&optional.model). | 
| 397c0 |  20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69    6c 20 69 66 20 4d 4f 44 45 4c 20 73 75 70 70 6f  | .."Return.non-nil.if.MODEL.suppo | 
| 397e0 |  72 74 73 20 63 61 70 61 62 69 6c 69 74 79 20 43    41 50 2e 22 0a 20 20 28 6d 65 6d 71 20 63 61 70  | rts.capability.CAP."...(memq.cap | 
| 39800 |  20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63    61 70 61 62 69 6c 69 74 69 65 73 0a 20 20 20 20  | .(gptel--model-capabilities..... | 
| 39820 |  20 20 20 20 20 20 20 20 20 28 6f 72 20 6d 6f 64    65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29  | .........(or.model.gptel-model)) | 
| 39840 |  29 29 0a 0a 3b 3b 20 54 4f 44 4f 20 48 61 6e 64    6c 65 20 6d 6f 64 65 6c 20 6d 69 6d 65 20 73 70  | ))..;;.TODO.Handle.model.mime.sp | 
| 39860 |  65 63 69 66 69 63 61 74 69 6f 6e 73 20 6c 69 6b    65 20 22 69 6d 61 67 65 2f 2a 22 0a 28 64 65 66  | ecifications.like."image/*".(def | 
| 39880 |  73 75 62 73 74 20 67 70 74 65 6c 2d 2d 6d 6f 64    65 6c 2d 6d 69 6d 65 2d 63 61 70 61 62 6c 65 2d  | subst.gptel--model-mime-capable- | 
| 398a0 |  70 20 28 6d 69 6d 65 20 26 6f 70 74 69 6f 6e 61    6c 20 6d 6f 64 65 6c 29 0a 20 20 22 52 65 74 75  | p.(mime.&optional.model)..."Retu | 
| 398c0 |  72 6e 20 6e 6f 6e 20 6e 69 6c 20 69 66 20 4d 4f    44 45 4c 20 63 61 6e 20 75 6e 64 65 72 73 74 61  | rn.non.nil.if.MODEL.can.understa | 
| 398e0 |  6e 64 20 4d 49 4d 45 20 74 79 70 65 2e 22 0a 20    20 28 63 61 72 2d 73 61 66 65 20 28 6d 65 6d 62  | nd.MIME.type."...(car-safe.(memb | 
| 39900 |  65 72 20 6d 69 6d 65 20 28 67 70 74 65 6c 2d 2d    6d 6f 64 65 6c 2d 6d 69 6d 65 73 0a 20 20 20 20  | er.mime.(gptel--model-mimes..... | 
| 39920 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6f 72 20 6d 6f 64 65 6c 20 67 70  | ....................(or.model.gp | 
| 39940 |  74 65 6c 2d 6d 6f 64 65 6c 29 29 29 29 29 0a 0a    28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c 2d  | tel-model)))))..(defsubst.gptel- | 
| 39960 |  2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 2d 70    61 72 61 6d 73 20 28 6d 6f 64 65 6c 29 0a 20 20  | -model-request-params.(model)... | 
| 39980 |  22 47 65 74 20 6d 6f 64 65 6c 2d 73 70 65 63 69    66 69 63 20 72 65 71 75 65 73 74 20 70 61 72 61  | "Get.model-specific.request.para | 
| 399a0 |  6d 65 74 65 72 73 20 66 6f 72 20 4d 4f 44 45 4c    2e 22 0a 20 20 28 67 65 74 20 6d 6f 64 65 6c 20  | meters.for.MODEL."...(get.model. | 
| 399c0 |  3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 29    29 0a 0a 3b 3b 3b 3b 20 46 69 6c 65 20 68 61 6e  | :request-params))..;;;;.File.han | 
| 399e0 |  64 6c 69 6e 67 0a 28 64 65 66 75 6e 20 67 70 74    65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64  | dling.(defun.gptel--base64-encod | 
| 39a00 |  65 20 28 66 69 6c 65 29 0a 20 20 22 45 6e 63 6f    64 65 20 46 49 4c 45 20 61 73 20 61 20 62 61 73  | e.(file)..."Encode.FILE.as.a.bas | 
| 39a20 |  65 36 34 20 73 74 72 69 6e 67 2e 0a 0a 46 49 4c    45 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f 20  | e64.string...FILE.is.assumed.to. | 
| 39a40 |  65 78 69 73 74 20 61 6e 64 20 62 65 20 61 20 72    65 67 75 6c 61 72 20 66 69 6c 65 2e 22 0a 20 20  | exist.and.be.a.regular.file."... | 
| 39a60 |  28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65    72 0a 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69  | (with-temp-buffer.....(insert-fi | 
| 39a80 |  6c 65 2d 63 6f 6e 74 65 6e 74 73 2d 6c 69 74 65    72 61 6c 6c 79 20 66 69 6c 65 29 0a 20 20 20 20  | le-contents-literally.file)..... | 
| 39aa0 |  28 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 2d 72    65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e  | (base64-encode-region.(point-min | 
| 39ac0 |  29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).(point-max)................... | 
| 39ae0 |  20 20 20 20 20 20 20 20 3a 6e 6f 2d 6c 69 6e 65    2d 62 72 65 61 6b 29 0a 20 20 20 20 28 62 75 66  | ........:no-line-break).....(buf | 
| 39b00 |  66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 0a 3b    3b 3b 3b 20 52 65 73 70 6f 6e 73 65 20 74 65 78  | fer-string)))..;;;;.Response.tex | 
| 39b20 |  74 20 72 65 63 6f 67 6e 69 74 69 6f 6e 0a 0a 28    64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 74  | t.recognition..(defun.gptel--get | 
| 39b40 |  2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 20 28    29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20  | -buffer-bounds.()..."Return.the. | 
| 39b60 |  67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 62    6f 75 6e 64 61 72 69 65 73 20 69 6e 20 74 68 65  | gptel.response.boundaries.in.the | 
| 39b80 |  20 62 75 66 66 65 72 20 61 73 20 61 6e 20 61 6c    69 73 74 2e 22 0a 20 20 28 73 61 76 65 2d 65 78  | .buffer.as.an.alist."...(save-ex | 
| 39ba0 |  63 75 72 73 69 6f 6e 0a 20 20 20 20 28 73 61 76    65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20  | cursion.....(save-restriction... | 
| 39bc0 |  20 20 20 20 28 77 69 64 65 6e 29 0a 20 20 20 20    20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f  | ....(widen).......(goto-char.(po | 
| 39be0 |  69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20    28 6c 65 74 20 28 28 62 6f 75 6e 64 73 29 20 28  | int-max)).......(let.((bounds).( | 
| 39c00 |  70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29    29 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65  | prev-pt.(point))).........(while | 
| 39c20 |  20 28 61 6e 64 20 28 2f 3d 20 70 72 65 76 2d 70    74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20  | .(and.(/=.prev-pt.(point-min)).. | 
| 39c40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70  | ...................(goto-char.(p | 
| 39c60 |  72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d 70    72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 0a 20  | revious-single-property-change.. | 
| 39c80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| 39ca0 |  70 6f 69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69    6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29  | point).'gptel.nil.(point-min)))) | 
| 39cc0 |  0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e    2d 6c 65 74 2a 20 28 28 70 72 6f 70 20 28 67 65  | ...........(when-let*.((prop.(ge | 
| 39ce0 |  74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20    28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 29 29  | t-char-property.(point).'gptel)) | 
| 39d00 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c    65 74 2a 20 28 28 70 72 6f 70 2d 6e 61 6d 65 20  | ).............(let*.((prop-name. | 
| 39d20 |  28 69 66 20 28 73 79 6d 62 6f 6c 70 20 70 72 6f    70 29 20 70 72 6f 70 20 28 63 61 72 20 70 72 6f  | (if.(symbolp.prop).prop.(car.pro | 
| 39d40 |  70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 76 61 6c 20 28 77 68  | p)))....................(val.(wh | 
| 39d60 |  65 6e 20 28 63 6f 6e 73 70 20 70 72 6f 70 29 20    28 63 64 72 20 70 72 6f 70 29 29 29 0a 20 20 20  | en.(consp.prop).(cdr.prop))).... | 
| 39d80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 62 6f 75 6e 64 20 28 69 66 20 76 61 6c 0a 20  | ................(bound.(if.val.. | 
| 39da0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69  | .............................(li | 
| 39dc0 |  73 74 20 28 70 6f 69 6e 74 29 20 70 72 65 76 2d    70 74 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20  | st.(point).prev-pt.val)......... | 
| 39de0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6c 69 73 74 20 28 70 6f 69 6e 74  | ....................(list.(point | 
| 39e00 |  29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73  | ).prev-pt))))...............(pus | 
| 39e20 |  68 20 62 6f 75 6e 64 20 28 61 6c 69 73 74 2d 67    65 74 20 70 72 6f 70 2d 6e 61 6d 65 20 62 6f 75  | h.bound.(alist-get.prop-name.bou | 
| 39e40 |  6e 64 73 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20  | nds))))...........(setq.prev-pt. | 
| 39e60 |  28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20    20 20 62 6f 75 6e 64 73 29 29 29 29 0a 0a 28 64  | (point))).........bounds))))..(d | 
| 39e80 |  65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 66    75 6e 63 74 69 6f 6e 2d 61 6c 69 61 73 0a 20 20  | efine-obsolete-function-alias... | 
| 39ea0 |  27 67 70 74 65 6c 2d 2d 67 65 74 2d 62 6f 75 6e    64 73 20 27 67 70 74 65 6c 2d 2d 67 65 74 2d 72  | 'gptel--get-bounds.'gptel--get-r | 
| 39ec0 |  65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64 73 20 22    30 2e 39 2e 38 22 29 0a 0a 28 64 65 66 75 6e 20  | esponse-bounds."0.9.8")..(defun. | 
| 39ee0 |  67 70 74 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f    6e 73 65 2d 62 6f 75 6e 64 73 20 28 29 0a 20 20  | gptel--get-response-bounds.()... | 
| 39f00 |  22 52 65 74 75 72 6e 20 74 68 65 20 67 70 74 65    6c 20 72 65 73 70 6f 6e 73 65 20 62 6f 75 6e 64  | "Return.the.gptel.response.bound | 
| 39f20 |  61 72 69 65 73 20 61 72 6f 75 6e 64 20 70 6f 69    6e 74 2e 22 0a 20 20 28 6c 65 74 20 28 70 72 6f  | aries.around.point."...(let.(pro | 
| 39f40 |  70 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63    75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 77 68  | p).....(save-excursion.......(wh | 
| 39f60 |  65 6e 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74    79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72  | en.(text-property-search-backwar | 
| 39f80 |  64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27    67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 20  | d..............'gptel.'response. | 
| 39fa0 |  74 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e    20 28 73 65 74 71 20 70 72 6f 70 20 28 74 65 78  | t).........(when.(setq.prop.(tex | 
| 39fc0 |  74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63    68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20  | t-property-search-forward....... | 
| 39fe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70  | ....................'gptel.'resp | 
| 3a000 |  6f 6e 73 65 20 74 29 29 0a 20 20 20 20 20 20 20    20 20 20 28 63 6f 6e 73 20 28 70 72 6f 70 2d 6d  | onse.t))...........(cons.(prop-m | 
| 3a020 |  61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 70    72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20  | atch-beginning.prop)............ | 
| 3a040 |  20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68    2d 65 6e 64 20 70 72 6f 70 29 29 29 29 29 29 29  | .....(prop-match-end.prop))))))) | 
| 3a060 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d    69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 20 28 26  | ..(defun.gptel--in-response-p.(& | 
| 3a080 |  6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 22    43 68 65 63 6b 20 69 66 20 70 6f 73 69 74 69 6f  | optional.pt)..."Check.if.positio | 
| 3a0a0 |  6e 20 50 54 20 69 73 20 69 6e 73 69 64 65 20 61    20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 2e  | n.PT.is.inside.a.gptel.response. | 
| 3a0c0 |  22 0a 20 20 28 65 71 20 28 67 65 74 2d 63 68 61    72 2d 70 72 6f 70 65 72 74 79 20 28 6f 72 20 70  | "...(eq.(get-char-property.(or.p | 
| 3a0e0 |  74 20 28 70 6f 69 6e 74 29 29 20 27 67 70 74 65    6c 29 20 27 72 65 73 70 6f 6e 73 65 29 29 0a 0a  | t.(point)).'gptel).'response)).. | 
| 3a100 |  28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 74    2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72  | (defun.gptel--at-response-histor | 
| 3a120 |  79 2d 70 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70    74 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 67  | y-p.(&optional.pt)..."Check.if.g | 
| 3a140 |  70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74    20 70 6f 73 69 74 69 6f 6e 20 50 54 20 68 61 73  | ptel.response.at.position.PT.has | 
| 3a160 |  20 76 61 72 69 61 6e 74 73 2e 22 0a 20 20 28 67    65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79  | .variants."...(get-char-property | 
| 3a180 |  20 28 6f 72 20 70 74 20 28 70 6f 69 6e 74 29 29    20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29  | .(or.pt.(point)).'gptel-history) | 
| 3a1a0 |  29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c    2d 2d 6d 6f 64 65 2d 64 65 73 63 72 69 70 74 69  | )..(defvar.gptel--mode-descripti | 
| 3a1c0 |  6f 6e 2d 61 6c 69 73 74 0a 20 20 27 28 28 6a 73    32 2d 6d 6f 64 65 20 20 20 20 20 20 2e 20 22 4a  | on-alist...'((js2-mode........"J | 
| 3a1e0 |  61 76 61 73 63 72 69 70 74 22 29 0a 20 20 20 20    28 73 68 2d 6d 6f 64 65 20 20 20 20 20 20 20 2e  | avascript").....(sh-mode........ | 
| 3a200 |  20 22 53 68 65 6c 6c 22 29 0a 20 20 20 20 28 65    6e 68 2d 72 75 62 79 2d 6d 6f 64 65 20 2e 20 22  | ."Shell").....(enh-ruby-mode..." | 
| 3a220 |  52 75 62 79 22 29 0a 20 20 20 20 28 79 61 6d 6c    2d 6d 6f 64 65 20 20 20 20 20 2e 20 22 59 61 6d  | Ruby").....(yaml-mode......."Yam | 
| 3a240 |  6c 22 29 0a 20 20 20 20 28 79 61 6d 6c 2d 74 73    2d 6d 6f 64 65 20 20 2e 20 22 59 61 6d 6c 22 29  | l").....(yaml-ts-mode...."Yaml") | 
| 3a260 |  0a 20 20 20 20 28 72 75 73 74 69 63 2d 6d 6f 64    65 20 20 20 2e 20 22 52 75 73 74 22 29 0a 20 20  | .....(rustic-mode....."Rust")... | 
| 3a280 |  20 20 28 74 75 61 72 65 67 2d 6d 6f 64 65 20 20    20 2e 20 22 4f 43 61 6d 6c 22 29 29 0a 20 20 22  | ..(tuareg-mode....."OCaml"))..." | 
| 3a2a0 |  4d 61 70 70 69 6e 67 20 66 72 6f 6d 20 75 6e 63    6f 6e 76 65 6e 74 69 6f 6e 61 6c 6c 79 20 6e 61  | Mapping.from.unconventionally.na | 
| 3a2c0 |  6d 65 64 20 6d 61 6a 6f 72 20 6d 6f 64 65 73 20    74 6f 20 6c 61 6e 67 75 61 67 65 73 2e 0a 0a 54  | med.major.modes.to.languages...T | 
| 3a2e0 |  68 69 73 20 69 73 20 75 73 65 64 20 77 68 65 6e    20 67 65 6e 65 72 61 74 69 6e 67 20 73 79 73 74  | his.is.used.when.generating.syst | 
| 3a300 |  65 6d 20 70 72 6f 6d 70 74 73 20 66 6f 72 20 72    65 77 72 69 74 69 6e 67 20 61 6e 64 0a 77 68 65  | em.prompts.for.rewriting.and.whe | 
| 3a320 |  6e 20 69 6e 63 6c 75 64 69 6e 67 20 63 6f 6e 74    65 78 74 20 66 72 6f 6d 20 74 68 65 73 65 20 6d  | n.including.context.from.these.m | 
| 3a340 |  61 6a 6f 72 20 6d 6f 64 65 73 2e 22 29 0a 0a 28    64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 74 72  | ajor.modes.")..(defun.gptel--str | 
| 3a360 |  69 70 2d 6d 6f 64 65 2d 73 75 66 66 69 78 20 28    6d 6f 64 65 2d 73 79 6d 29 0a 20 20 22 52 65 6d  | ip-mode-suffix.(mode-sym)..."Rem | 
| 3a380 |  6f 76 65 20 74 68 65 20 2d 6d 6f 64 65 20 73 75    66 66 69 78 20 66 72 6f 6d 20 4d 4f 44 45 2d 53  | ove.the.-mode.suffix.from.MODE-S | 
| 3a3a0 |  59 4d 2e 0a 0a 4d 4f 44 45 2d 53 59 4d 20 69 73    20 74 79 70 69 63 61 6c 6c 79 20 61 20 6d 61 6a  | YM...MODE-SYM.is.typically.a.maj | 
| 3a3c0 |  6f 72 2d 6d 6f 64 65 20 73 79 6d 62 6f 6c 2e 22    0a 20 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65  | or-mode.symbol."...(or.(alist-ge | 
| 3a3e0 |  74 20 6d 6f 64 65 2d 73 79 6d 20 67 70 74 65 6c    2d 2d 6d 6f 64 65 2d 64 65 73 63 72 69 70 74 69  | t.mode-sym.gptel--mode-descripti | 
| 3a400 |  6f 6e 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20    28 6c 65 74 20 28 28 6d 6f 64 65 2d 6e 61 6d 65  | on-alist).......(let.((mode-name | 
| 3a420 |  20 28 74 68 72 65 61 64 2d 6c 61 73 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(thread-last................... | 
| 3a440 |  20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 6e    61 6d 65 20 6d 6f 64 65 2d 73 79 6d 29 0a 20 20  | .......(symbol-name.mode-sym)... | 
| 3a460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72  | .......................(string-r | 
| 3a480 |  65 6d 6f 76 65 2d 73 75 66 66 69 78 20 22 2d 6d    6f 64 65 22 29 0a 20 20 20 20 20 20 20 20 20 20  | emove-suffix."-mode")........... | 
| 3a4a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    73 74 72 69 6e 67 2d 72 65 6d 6f 76 65 2d 73 75  | ...............(string-remove-su | 
| 3a4c0 |  66 66 69 78 20 22 2d 74 73 22 29 29 29 29 0a 20    20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20  | ffix."-ts")))).........;;.NOTE:. | 
| 3a4e0 |  54 68 65 20 61 64 76 65 72 74 69 73 65 64 20 63    61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f  | The.advertised.calling.conventio | 
| 3a500 |  6e 20 6f 66 20 70 72 6f 76 69 64 65 64 2d 6d 6f    64 65 2d 64 65 72 69 76 65 64 2d 70 0a 20 20 20  | n.of.provided-mode-derived-p.... | 
| 3a520 |  20 20 20 20 20 3b 3b 20 68 61 73 20 63 68 61 6e    67 65 64 20 69 6e 20 45 6d 61 63 73 20 33 30 2c  | .....;;.has.changed.in.Emacs.30, | 
| 3a540 |  20 74 68 69 73 20 6e 65 65 64 73 20 74 6f 20 62    65 20 75 70 64 61 74 65 64 20 65 76 65 6e 74 75  | .this.needs.to.be.updated.eventu | 
| 3a560 |  61 6c 6c 79 0a 20 20 20 20 20 20 20 20 28 69 66    20 28 70 72 6f 76 69 64 65 64 2d 6d 6f 64 65 2d  | ally.........(if.(provided-mode- | 
| 3a580 |  64 65 72 69 76 65 64 2d 70 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 6d 6f 64 65 2d 73 79 6d 20  | derived-p..............mode-sym. | 
| 3a5a0 |  27 70 72 6f 67 2d 6d 6f 64 65 20 27 74 65 78 74    2d 6d 6f 64 65 20 27 74 65 78 2d 6d 6f 64 65 29  | 'prog-mode.'text-mode.'tex-mode) | 
| 3a5c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64    65 2d 6e 61 6d 65 20 22 22 29 29 29 29 0a 0a 3b  | .............mode-name.""))))..; | 
| 3a5e0 |  3b 3b 3b 20 44 69 72 65 63 74 69 76 65 20 68 61    6e 64 6c 69 6e 67 0a 0a 0a 28 64 65 66 76 61 72  | ;;;.Directive.handling...(defvar | 
| 3a600 |  20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d    65 73 73 61 67 65 0a 20 20 28 6f 72 20 28 61 6c  | .gptel--system-message...(or.(al | 
| 3a620 |  69 73 74 2d 67 65 74 20 27 64 65 66 61 75 6c 74    20 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65  | ist-get.'default.gptel-directive | 
| 3a640 |  73 29 0a 20 20 20 20 20 20 22 59 6f 75 20 61 72    65 20 61 20 6c 61 72 67 65 20 6c 61 6e 67 75 61  | s)......."You.are.a.large.langua | 
| 3a660 |  67 65 20 6d 6f 64 65 6c 20 6c 69 76 69 6e 67 20    69 6e 20 45 6d 61 63 73 20 61 6e 64 20 61 20 68  | ge.model.living.in.Emacs.and.a.h | 
| 3a680 |  65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74    2e 20 52 65 73 70 6f 6e 64 20 63 6f 6e 63 69 73  | elpful.assistant..Respond.concis | 
| 3a6a0 |  65 6c 79 2e 22 29 0a 20 20 22 54 68 65 20 73 79    73 74 65 6d 20 6d 65 73 73 61 67 65 20 75 73 65  | ely.")..."The.system.message.use | 
| 3a6c0 |  64 20 62 79 20 67 70 74 65 6c 2e 22 29 0a 28 70    75 74 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65  | d.by.gptel.").(put.'gptel--syste | 
| 3a6e0 |  6d 2d 6d 65 73 73 61 67 65 20 27 73 61 66 65 2d    6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 23  | m-message.'safe-local-variable.# | 
| 3a700 |  27 61 6c 77 61 79 73 29 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65  | 'always)..(defun.gptel--describe | 
| 3a720 |  2d 64 69 72 65 63 74 69 76 65 20 28 64 69 72 65    63 74 69 76 65 20 77 69 64 74 68 20 26 6f 70 74  | -directive.(directive.width.&opt | 
| 3a740 |  69 6f 6e 61 6c 20 72 65 70 6c 61 63 65 6d 65 6e    74 29 0a 20 20 22 46 69 6e 64 20 64 65 73 63 72  | ional.replacement)..."Find.descr | 
| 3a760 |  69 70 74 69 6f 6e 20 66 6f 72 20 44 49 52 45 43    54 49 56 45 2c 20 74 72 75 6e 63 61 74 65 64 20  | iption.for.DIRECTIVE,.truncated. | 
| 3a780 |  20 74 6f 20 57 49 44 54 48 2e 0a 0a 44 49 52 45    43 54 49 56 45 20 69 73 20 61 20 67 70 74 65 6c  | .to.WIDTH...DIRECTIVE.is.a.gptel | 
| 3a7a0 |  20 64 69 72 65 63 74 69 76 65 2c 20 61 6e 64 20    63 61 6e 20 62 65 20 61 20 73 74 72 69 6e 67 2c  | .directive,.and.can.be.a.string, | 
| 3a7c0 |  20 61 20 66 75 6e 63 74 69 6f 6e 0a 6f 72 20 61    20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73  | .a.function.or.a.list.of.strings | 
| 3a7e0 |  2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 64 69    72 65 63 74 69 76 65 73 27 2e 0a 0a 54 68 65 20  | ...See.`gptel-directives'...The. | 
| 3a800 |  72 65 73 75 6c 74 20 69 73 20 61 20 73 74 72 69    6e 67 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  | result.is.a.string.intended.for. | 
| 3a820 |  64 69 73 70 6c 61 79 2e 20 20 4e 65 77 6c 69 6e    65 73 20 61 72 65 0a 72 65 70 6c 61 63 65 64 20  | display...Newlines.are.replaced. | 
| 3a840 |  77 69 74 68 20 52 45 50 4c 41 43 45 4d 45 4e 54    2e 22 0a 20 20 28 63 6c 2d 74 79 70 65 63 61 73  | with.REPLACEMENT."...(cl-typecas | 
| 3a860 |  65 20 64 69 72 65 63 74 69 76 65 0a 20 20 20 20    28 73 74 72 69 6e 67 0a 20 20 20 20 20 28 63 6f  | e.directive.....(string......(co | 
| 3a880 |  6e 63 61 74 0a 20 20 20 20 20 20 28 73 74 72 69    6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22 20  | ncat.......(string-replace."\n". | 
| 3a8a0 |  28 6f 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 20    22 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20  | (or.replacement.".")............ | 
| 3a8c0 |  20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e    63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77  | ...........(truncate-string-to-w | 
| 3a8e0 |  69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65  | idth........................dire | 
| 3a900 |  63 74 69 76 65 20 77 69 64 74 68 20 6e 69 6c 20    6e 69 6c 20 74 29 29 29 29 0a 20 20 20 20 28 66  | ctive.width.nil.nil.t)))).....(f | 
| 3a920 |  75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 28 63 6f    6e 63 61 74 0a 20 20 20 20 20 20 22 ce bb 3a 20  | unction......(concat......."..:. | 
| 3a940 |  22 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d    72 65 70 6c 61 63 65 0a 20 20 20 20 20 20 20 22  | ".......(string-replace........" | 
| 3a960 |  5c 6e 22 20 28 6f 72 20 72 65 70 6c 61 63 65 6d    65 6e 74 20 22 20 22 29 0a 20 20 20 20 20 20 20  | \n".(or.replacement.".")........ | 
| 3a980 |  28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67    2d 74 6f 2d 77 69 64 74 68 0a 20 20 20 20 20 20  | (truncate-string-to-width....... | 
| 3a9a0 |  20 20 28 6f 72 20 28 61 6e 64 2d 6c 65 74 2a 20    28 28 64 6f 63 20 28 64 6f 63 75 6d 65 6e 74 61  | ..(or.(and-let*.((doc.(documenta | 
| 3a9c0 |  74 69 6f 6e 20 64 69 72 65 63 74 69 76 65 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tion.directive)))............... | 
| 3a9e0 |  28 73 75 62 73 74 72 69 6e 67 20 64 6f 63 20 6e    69 6c 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68  | (substring.doc.nil.(string-match | 
| 3aa00 |  2d 70 20 22 5c 6e 22 20 64 6f 63 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 22 5b 44 79 6e  | -p."\n".doc)))............."[Dyn | 
| 3aa20 |  61 6d 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74    65 64 3b 20 6e 6f 20 70 72 65 76 69 65 77 20 61  | amically.generated;.no.preview.a | 
| 3aa40 |  76 61 69 6c 61 62 6c 65 5d 22 29 0a 20 20 20 20    20 20 20 20 77 69 64 74 68 20 6e 69 6c 20 6e 69  | vailable]").........width.nil.ni | 
| 3aa60 |  6c 20 74 29 29 29 29 0a 20 20 20 20 28 6c 69 73    74 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 66 72  | l.t)))).....(list.(and-let*.((fr | 
| 3aa80 |  6f 6d 2d 74 65 6d 70 6c 61 74 65 20 28 63 61 72    20 64 69 72 65 63 74 69 76 65 29 29 29 0a 20 20  | om-template.(car.directive)))... | 
| 3aaa0 |  20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c    2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63  | ..........(gptel--describe-direc | 
| 3aac0 |  74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 66 72 6f 6d 2d 74 65 6d 70 6c 61 74 65 20  | tive..............from-template. | 
| 3aae0 |  77 69 64 74 68 29 29 29 0a 20 20 20 20 28 74 20    22 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | width))).....(t."")))..(defun.gp | 
| 3ab00 |  74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63    74 69 76 65 20 28 64 69 72 65 63 74 69 76 65 20  | tel--parse-directive.(directive. | 
| 3ab20 |  26 6f 70 74 69 6f 6e 61 6c 20 72 61 77 29 0a 20    20 22 50 61 72 73 65 20 44 49 52 45 43 54 49 56  | &optional.raw)..."Parse.DIRECTIV | 
| 3ab40 |  45 20 69 6e 74 6f 20 61 20 62 61 63 6b 65 6e 64    2d 61 70 70 72 6f 70 72 69 61 74 65 20 66 6f 72  | E.into.a.backend-appropriate.for | 
| 3ab60 |  6d 2e 0a 0a 44 49 52 45 43 54 49 56 45 20 69 73    20 61 20 67 70 74 65 6c 20 64 69 72 65 63 74 69  | m...DIRECTIVE.is.a.gptel.directi | 
| 3ab80 |  76 65 3a 20 69 74 20 63 61 6e 20 62 65 20 61 20    73 74 72 69 6e 67 2c 20 61 20 6c 69 73 74 20 6f  | ve:.it.can.be.a.string,.a.list.o | 
| 3aba0 |  72 20 61 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61    74 20 72 65 74 75 72 6e 73 20 65 69 74 68 65 72  | r.a.function.that.returns.either | 
| 3abc0 |  2c 20 73 65 65 20 60 67 70 74 65 6c 2d 64 69 72    65 63 74 69 76 65 73 27 2e 0a 0a 52 65 74 75 72  | ,.see.`gptel-directives'...Retur | 
| 3abe0 |  6e 20 61 20 63 6f 6e 73 20 63 65 6c 6c 20 63 6f    6e 73 69 73 74 69 6e 67 20 6f 66 20 74 68 65 20  | n.a.cons.cell.consisting.of.the. | 
| 3ac00 |  73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 28    61 20 73 74 72 69 6e 67 29 0a 61 6e 64 20 61 20  | system.message.(a.string).and.a. | 
| 3ac20 |  74 65 6d 70 6c 61 74 65 20 63 6f 6e 73 69 73 74    69 6e 67 20 6f 66 20 61 6c 74 65 72 6e 61 74 69  | template.consisting.of.alternati | 
| 3ac40 |  6e 67 20 75 73 65 72 2f 4c 4c 4d 0a 72 65 63 6f    72 64 73 20 28 61 20 6c 69 73 74 20 6f 66 20 73  | ng.user/LLM.records.(a.list.of.s | 
| 3ac60 |  74 72 69 6e 67 73 20 6f 72 20 6e 69 6c 29 2e 0a    0a 49 66 20 52 41 57 20 69 73 20 6e 6f 6e 2d 6e  | trings.or.nil)...If.RAW.is.non-n | 
| 3ac80 |  69 6c 2c 20 74 68 65 20 75 73 65 72 2f 4c 4c 4d    20 72 65 63 6f 72 64 73 20 61 72 65 20 6e 6f 74  | il,.the.user/LLM.records.are.not | 
| 3aca0 |  20 70 72 6f 63 65 73 73 65 64 20 61 6e 64 20 61    72 65 0a 72 65 74 75 72 6e 65 64 20 61 73 20 61  | .processed.and.are.returned.as.a | 
| 3acc0 |  20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73    2e 22 0a 20 20 28 61 6e 64 20 64 69 72 65 63 74  | .list.of.strings."...(and.direct | 
| 3ace0 |  69 76 65 0a 20 20 20 20 20 20 20 28 63 6c 2d 65    74 79 70 65 63 61 73 65 20 64 69 72 65 63 74 69  | ive........(cl-etypecase.directi | 
| 3ad00 |  76 65 0a 20 20 20 20 20 20 20 20 20 28 73 74 72    69 6e 67 20 20 20 28 6c 69 73 74 20 64 69 72 65  | ve..........(string...(list.dire | 
| 3ad20 |  63 74 69 76 65 29 29 0a 20 20 20 20 20 20 20 20    20 28 66 75 6e 63 74 69 6f 6e 20 28 67 70 74 65  | ctive))..........(function.(gpte | 
| 3ad40 |  6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69    76 65 20 28 66 75 6e 63 61 6c 6c 20 64 69 72 65  | l--parse-directive.(funcall.dire | 
| 3ad60 |  63 74 69 76 65 29 20 72 61 77 29 29 0a 20 20 20    20 20 20 20 20 20 28 63 6f 6e 73 20 20 20 20 20  | ctive).raw))..........(cons..... | 
| 3ad80 |  28 69 66 20 72 61 77 20 64 69 72 65 63 74 69 76    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (if.raw.directive............... | 
| 3ada0 |  20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 63 61    72 20 64 69 72 65 63 74 69 76 65 29 0a 20 20 20  | .......(cons.(car.directive).... | 
| 3adc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45  | ........................;;.FIXME | 
| 3ade0 |  28 61 75 67 6d 65 6e 74 29 20 64 6f 20 74 68 69    73 20 65 6c 73 65 77 68 65 72 65 0a 20 20 20 20  | (augment).do.this.elsewhere..... | 
| 3ae00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70  | .......................(gptel--p | 
| 3ae20 |  61 72 73 65 2d 6c 69 73 74 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | arse-list....................... | 
| 3ae40 |  20 20 20 20 20 20 67 70 74 65 6c 2d 62 61 63 6b    65 6e 64 20 28 63 64 72 20 64 69 72 65 63 74 69  | ......gptel-backend.(cdr.directi | 
| 3ae60 |  76 65 29 29 29 29 29 29 29 29 0a 0a 0a 0c 0a 3b    3b 3b 20 4c 6f 67 67 69 6e 67 0a 0a 28 64 65 66  | ve)))))))).....;;;.Logging..(def | 
| 3ae80 |  63 6f 6e 73 74 20 67 70 74 65 6c 2d 2d 6c 6f 67    2d 62 75 66 66 65 72 2d 6e 61 6d 65 20 22 2a 67  | const.gptel--log-buffer-name."*g | 
| 3aea0 |  70 74 65 6c 2d 6c 6f 67 2a 22 0a 20 20 22 4c 6f    67 20 62 75 66 66 65 72 20 66 6f 72 20 67 70 74  | ptel-log*"..."Log.buffer.for.gpt | 
| 3aec0 |  65 6c 2e 22 29 0a 0a 28 64 65 63 6c 61 72 65 2d    66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 70 72  | el.")..(declare-function.json-pr | 
| 3aee0 |  65 74 74 79 2d 70 72 69 6e 74 20 22 6a 73 6f 6e    22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c  | etty-print."json")..(defun.gptel | 
| 3af00 |  2d 2d 6c 6f 67 20 28 64 61 74 61 20 26 6f 70 74    69 6f 6e 61 6c 20 74 79 70 65 20 6e 6f 2d 6a 73  | --log.(data.&optional.type.no-js | 
| 3af20 |  6f 6e 29 0a 20 20 22 4c 6f 67 20 44 41 54 41 20    74 6f 20 60 67 70 74 65 6c 2d 2d 6c 6f 67 2d 62  | on)..."Log.DATA.to.`gptel--log-b | 
| 3af40 |  75 66 66 65 72 2d 6e 61 6d 65 27 2e 0a 0a 54 59    50 45 20 69 73 20 61 20 6c 61 62 65 6c 20 66 6f  | uffer-name'...TYPE.is.a.label.fo | 
| 3af60 |  72 20 64 61 74 61 20 62 65 69 6e 67 20 6c 6f 67    67 65 64 2e 20 20 44 41 54 41 20 69 73 20 61 73  | r.data.being.logged...DATA.is.as | 
| 3af80 |  73 75 6d 65 64 20 74 6f 20 62 65 0a 56 61 6c 69    64 20 4a 53 4f 4e 20 75 6e 6c 65 73 73 20 4e 4f  | sumed.to.be.Valid.JSON.unless.NO | 
| 3afa0 |  2d 4a 53 4f 4e 20 69 73 20 74 2e 22 0a 20 20 28    77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66  | -JSON.is.t."...(with-current-buf | 
| 3afc0 |  66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d    63 72 65 61 74 65 20 67 70 74 65 6c 2d 2d 6c 6f  | fer.(get-buffer-create.gptel--lo | 
| 3afe0 |  67 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20    20 20 20 28 6c 65 74 20 28 28 70 20 28 67 6f 74  | g-buffer-name).....(let.((p.(got | 
| 3b000 |  6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61    78 29 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c  | o-char.(point-max)))).......(unl | 
| 3b020 |  65 73 73 20 28 62 6f 62 70 29 20 28 69 6e 73 65    72 74 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20  | ess.(bobp).(insert."\n"))....... | 
| 3b040 |  28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20    22 7b 5c 22 67 70 74 65 6c 5c 22 3a 20 5c 22 25  | (insert.(format."{\"gptel\":.\"% | 
| 3b060 |  73 5c 22 2c 20 22 20 28 6f 72 20 74 79 70 65 20    22 6e 6f 6e 65 22 29 29 0a 20 20 20 20 20 20 20  | s\",.".(or.type."none"))........ | 
| 3b080 |  20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 2d 74    69 6d 65 2d 73 74 72 69 6e 67 20 22 5c 22 74 69  | .......(format-time-string."\"ti | 
| 3b0a0 |  6d 65 73 74 61 6d 70 5c 22 3a 20 5c 22 25 59 2d    25 6d 2d 25 64 20 25 48 3a 25 4d 3a 25 53 5c 22  | mestamp\":.\"%Y-%m-%d.%H:%M:%S\" | 
| 3b0c0 |  7d 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 64 61 74 61 29 0a 20 20 20 20 20 20  | }\n")...............data)....... | 
| 3b0e0 |  28 75 6e 6c 65 73 73 20 6e 6f 2d 6a 73 6f 6e 20    28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28  | (unless.no-json.(ignore-errors.( | 
| 3b100 |  6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e    74 20 70 20 28 70 6f 69 6e 74 29 29 29 29 29 29  | json-pretty-print.p.(point)))))) | 
| 3b120 |  29 0a 0a 0c 0a 3b 3b 3b 20 53 61 76 69 6e 67 20    61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 73 74  | )....;;;.Saving.and.restoring.st | 
| 3b140 |  61 74 65 0a 0a 28 64 65 66 75 6e 20 67 70 74 65    6c 2d 2d 72 65 73 74 6f 72 65 2d 70 72 6f 70 73  | ate..(defun.gptel--restore-props | 
| 3b160 |  20 28 62 6f 75 6e 64 73 2d 61 6c 69 73 74 29 0a    20 20 22 52 65 73 74 6f 72 65 20 74 65 78 74 20  | .(bounds-alist)..."Restore.text. | 
| 3b180 |  70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 20    42 4f 55 4e 44 53 2d 41 4c 49 53 54 2e 0a 42 4f  | properties.from.BOUNDS-ALIST..BO | 
| 3b1a0 |  55 4e 44 53 2d 41 4c 49 53 54 20 69 73 20 28 50    52 4f 50 20 2e 20 42 4f 55 4e 44 53 29 2e 20 20  | UNDS-ALIST.is.(PROP...BOUNDS)... | 
| 3b1c0 |  42 4f 55 4e 44 53 20 69 73 20 61 20 6c 69 73 74    20 6f 66 20 42 4f 55 4e 44 2e 20 20 45 61 63 68  | BOUNDS.is.a.list.of.BOUND...Each | 
| 3b1e0 |  20 42 4f 55 4e 44 0a 69 73 20 65 69 74 68 65 72    20 28 42 45 47 20 45 4e 44 20 56 41 4c 29 20 6f  | .BOUND.is.either.(BEG.END.VAL).o | 
| 3b200 |  72 20 28 42 45 47 20 45 4e 44 29 2e 0a 0a 46 6f    72 20 28 42 45 47 20 45 4e 44 20 56 41 4c 29 20  | r.(BEG.END)...For.(BEG.END.VAL). | 
| 3b220 |  66 6f 72 6d 73 2c 20 65 76 65 6e 20 69 66 20 56    41 4c 20 69 73 20 6e 69 6c 2c 20 74 68 65 20 67  | forms,.even.if.VAL.is.nil,.the.g | 
| 3b240 |  70 74 65 6c 20 70 72 6f 70 65 72 74 79 20 77 69    6c 6c 20 62 65 0a 73 65 74 20 74 6f 20 28 50 52  | ptel.property.will.be.set.to.(PR | 
| 3b260 |  4f 50 20 2e 20 56 41 4c 29 2e 20 20 46 6f 72 20    28 42 45 47 20 45 4e 44 29 20 66 6f 72 6d 73 2c  | OP...VAL)...For.(BEG.END).forms, | 
| 3b280 |  20 65 78 63 65 70 74 20 77 68 65 6e 20 50 52 4f    50 20 69 73 20 72 65 73 70 6f 6e 73 65 2c 0a 74  | .except.when.PROP.is.response,.t | 
| 3b2a0 |  68 65 20 67 70 74 65 6c 20 70 72 6f 70 65 72 74    79 20 69 73 20 73 65 74 20 74 6f 20 6a 75 73 74  | he.gptel.property.is.set.to.just | 
| 3b2c0 |  20 50 52 4f 50 2e 0a 0a 54 68 65 20 6c 65 67 61    63 79 20 73 74 72 75 63 74 75 72 65 2c 20 61 20  | .PROP...The.legacy.structure,.a. | 
| 3b2e0 |  6c 69 73 74 20 6f 66 20 28 42 45 47 20 2e 20 45    4e 44 29 20 69 73 20 61 6c 73 6f 20 73 75 70 70  | list.of.(BEG...END).is.also.supp | 
| 3b300 |  6f 72 74 65 64 20 61 6e 64 20 77 69 6c 6c 20 62    65 0a 61 70 70 6c 69 65 64 20 62 65 66 6f 72 65  | orted.and.will.be.applied.before | 
| 3b320 |  20 62 65 69 6e 67 20 72 65 2d 70 65 72 73 69 73    74 65 64 20 69 6e 20 74 68 65 20 6e 65 77 20 73  | .being.re-persisted.in.the.new.s | 
| 3b340 |  74 72 75 63 74 75 72 65 2e 22 0a 20 20 28 6c 65    74 20 28 28 6d 6f 64 69 66 69 65 64 20 28 62 75  | tructure."...(let.((modified.(bu | 
| 3b360 |  66 66 65 72 2d 6d 6f 64 69 66 69 65 64 2d 70 29    29 29 0a 20 20 20 20 28 69 66 20 28 73 79 6d 62  | ffer-modified-p))).....(if.(symb | 
| 3b380 |  6f 6c 70 20 28 63 61 61 72 20 62 6f 75 6e 64 73    2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20  | olp.(caar.bounds-alist))........ | 
| 3b3a0 |  20 28 6d 61 70 63 0a 20 20 20 20 20 20 20 20 20    28 6c 61 6d 62 64 61 20 28 62 6f 75 6e 64 73 29  | .(mapc..........(lambda.(bounds) | 
| 3b3c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74    2a 20 28 28 70 72 6f 70 20 28 70 6f 70 20 62 6f  | ............(let*.((prop.(pop.bo | 
| 3b3e0 |  75 6e 64 73 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6d 61 70 63 0a 20 20 20 20 20  | unds)))..............(mapc...... | 
| 3b400 |  20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61    20 28 62 6f 75 6e 64 29 0a 20 20 20 20 20 20 20  | .........(lambda.(bound)........ | 
| 3b420 |  20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28    70 72 6f 70 2d 68 61 73 2d 76 61 6c 20 28 3e 20  | .........(let.((prop-has-val.(>. | 
| 3b440 |  28 6c 65 6e 67 74 68 20 62 6f 75 6e 64 29 20 32    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | (length.bound).2)))............. | 
| 3b460 |  20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d    70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20  | ......(add-text-properties...... | 
| 3b480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70    6f 70 20 62 6f 75 6e 64 29 20 28 70 6f 70 20 62  | ..............(pop.bound).(pop.b | 
| 3b4a0 |  6f 75 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71  | ound)....................(if.(eq | 
| 3b4c0 |  20 70 72 6f 70 20 27 72 65 73 70 6f 6e 73 65 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .prop.'response)................ | 
| 3b4e0 |  20 20 20 20 20 20 20 20 27 28 67 70 74 65 6c 20    72 65 73 70 6f 6e 73 65 20 66 72 6f 6e 74 2d 73  | ........'(gptel.response.front-s | 
| 3b500 |  74 69 63 6b 79 20 28 67 70 74 65 6c 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ticky.(gptel)).................. | 
| 3b520 |  20 20 20 20 28 6c 69 73 74 20 27 67 70 74 65 6c    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....(list.'gptel................ | 
| 3b540 |  20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20    70 72 6f 70 2d 68 61 73 2d 76 61 6c 0a 20 20 20  | ............(if.prop-has-val.... | 
| 3b560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e  | ............................(con | 
| 3b580 |  73 20 70 72 6f 70 20 28 70 6f 70 20 62 6f 75 6e    64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | s.prop.(pop.bound))............. | 
| 3b5a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 70 72 6f 70 29 29 29 29 29 29 0a 20 20 20 20  | .................prop))))))..... | 
| 3b5c0 |  20 20 20 20 20 20 20 20 20 20 62 6f 75 6e 64 73    29 29 29 0a 20 20 20 20 20 20 20 20 20 62 6f 75  | ..........bounds)))..........bou | 
| 3b5e0 |  6e 64 73 2d 61 6c 69 73 74 29 0a 20 20 20 20 20    20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28  | nds-alist).......(mapc.(lambda.( | 
| 3b600 |  62 6f 75 6e 64 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70  | bound)...............(add-text-p | 
| 3b620 |  72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 63 61 72 20 62 6f  | roperties................(car.bo | 
| 3b640 |  75 6e 64 29 20 28 63 64 72 20 62 6f 75 6e 64 29    20 27 28 67 70 74 65 6c 20 72 65 73 70 6f 6e 73  | und).(cdr.bound).'(gptel.respons | 
| 3b660 |  65 20 66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28    67 70 74 65 6c 29 29 29 29 0a 20 20 20 20 20 20  | e.front-sticky.(gptel))))....... | 
| 3b680 |  20 20 20 20 20 20 62 6f 75 6e 64 73 2d 61 6c 69    73 74 29 29 0a 20 20 20 20 28 73 65 74 2d 62 75  | ......bounds-alist)).....(set-bu | 
| 3b6a0 |  66 66 65 72 2d 6d 6f 64 69 66 69 65 64 2d 70 20    6d 6f 64 69 66 69 65 64 29 29 29 0a 0a 28 64 65  | ffer-modified-p.modified)))..(de | 
| 3b6c0 |  66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 73 74 6f    72 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 52  | fun.gptel--restore-state.()..."R | 
| 3b6e0 |  65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 74 61    74 65 20 77 68 65 6e 20 74 75 72 6e 69 6e 67 20  | estore.gptel.state.when.turning. | 
| 3b700 |  6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e    22 0a 20 20 28 77 68 65 6e 20 28 62 75 66 66 65  | on.`gptel-mode'."...(when.(buffe | 
| 3b720 |  72 2d 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20    20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f  | r-file-name).....(if.(derived-mo | 
| 3b740 |  64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a    20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20  | de-p.'org-mode).........(progn.. | 
| 3b760 |  20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72    65 20 27 67 70 74 65 6c 2d 6f 72 67 29 0a 20 20  | .........(require.'gptel-org)... | 
| 3b780 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f    72 67 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74  | ........(gptel-org--restore-stat | 
| 3b7a0 |  65 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20    67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 0a 20 20  | e)).......(when.gptel--bounds... | 
| 3b7c0 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65    73 74 6f 72 65 2d 70 72 6f 70 73 20 67 70 74 65  | ......(gptel--restore-props.gpte | 
| 3b7e0 |  6c 2d 2d 62 6f 75 6e 64 73 29 0a 20 20 20 20 20    20 20 20 28 6d 65 73 73 61 67 65 20 22 67 70 74  | l--bounds).........(message."gpt | 
| 3b800 |  65 6c 20 63 68 61 74 20 72 65 73 74 6f 72 65 64    2e 22 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e  | el.chat.restored.")).......(when | 
| 3b820 |  20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d    6e 61 6d 65 0a 20 20 20 20 20 20 20 20 28 69 66  | .gptel--backend-name.........(if | 
| 3b840 |  2d 6c 65 74 2a 20 28 28 62 61 63 6b 65 6e 64 20    28 61 6c 69 73 74 2d 67 65 74 0a 20 20 20 20 20  | -let*.((backend.(alist-get...... | 
| 3b860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 62 61  | .......................gptel--ba | 
| 3b880 |  63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c    2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73  | ckend-name.gptel--known-backends | 
| 3b8a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c  | .............................nil | 
| 3b8c0 |  20 6e 69 6c 20 23 27 65 71 75 61 6c 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74  | .nil.#'equal))).............(set | 
| 3b8e0 |  71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 62 61    63 6b 65 6e 64 20 62 61 63 6b 65 6e 64 29 0a 20  | q-local.gptel-backend.backend).. | 
| 3b900 |  20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67    65 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 75  | .........(message............(su | 
| 3b920 |  62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64    2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20  | bstitute-command-keys........... | 
| 3b940 |  20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f  | ..(concat.............."Could.no | 
| 3b960 |  74 20 61 63 74 69 76 61 74 65 20 67 70 74 65 6c    20 62 61 63 6b 65 6e 64 20 5c 22 25 73 5c 22 21  | t.activate.gptel.backend.\"%s\"! | 
| 3b980 |  20 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 22 53 77 69 74 63 68 20 62 61 63 6b 65 6e 64  | ..".............."Switch.backend | 
| 3b9a0 |  73 20 77 69 74 68 20 5c 5c 5b 75 6e 69 76 65 72    73 61 6c 2d 61 72 67 75 6d 65 6e 74 5d 20 5c 5c  | s.with.\\[universal-argument].\\ | 
| 3b9c0 |  5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 22 20 62 65 66  | [gptel-send]"..............".bef | 
| 3b9e0 |  6f 72 65 20 75 73 69 6e 67 20 67 70 74 65 6c 2e    22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 67  | ore.using.gptel."))............g | 
| 3ba00 |  70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61    6d 65 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e  | ptel--backend-name))))))..(defun | 
| 3ba20 |  20 67 70 74 65 6c 2d 2d 73 61 76 65 2d 73 74 61    74 65 20 28 29 0a 20 20 22 57 72 69 74 65 20 74  | .gptel--save-state.()..."Write.t | 
| 3ba40 |  68 65 20 67 70 74 65 6c 20 73 74 61 74 65 20 74    6f 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 54  | he.gptel.state.to.the.buffer...T | 
| 3ba60 |  68 69 73 20 73 61 76 65 73 20 63 68 61 74 20 6d    65 74 61 64 61 74 61 20 77 68 65 6e 20 77 72 69  | his.saves.chat.metadata.when.wri | 
| 3ba80 |  74 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 20    74 6f 20 64 69 73 6b 2e 20 20 54 6f 0a 72 65 73  | ting.the.buffer.to.disk...To.res | 
| 3baa0 |  74 6f 72 65 20 61 20 63 68 61 74 20 73 65 73 73    69 6f 6e 2c 20 74 75 72 6e 20 6f 6e 20 60 67 70  | tore.a.chat.session,.turn.on.`gp | 
| 3bac0 |  74 65 6c 2d 6d 6f 64 65 27 20 61 66 74 65 72 20    6f 70 65 6e 69 6e 67 20 74 68 65 0a 66 69 6c 65  | tel-mode'.after.opening.the.file | 
| 3bae0 |  2e 22 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20    27 67 70 74 65 6c 2d 73 61 76 65 2d 73 74 61 74  | ."...(run-hooks.'gptel-save-stat | 
| 3bb00 |  65 2d 68 6f 6f 6b 29 0a 20 20 28 69 66 20 28 64    65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f  | e-hook)...(if.(derived-mode-p.'o | 
| 3bb20 |  72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28    70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 72  | rg-mode).......(progn.........(r | 
| 3bb40 |  65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 72    67 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65  | equire.'gptel-org).........(gpte | 
| 3bb60 |  6c 2d 6f 72 67 2d 2d 73 61 76 65 2d 73 74 61 74    65 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 70  | l-org--save-state)).....(let.((p | 
| 3bb80 |  72 69 6e 74 2d 65 73 63 61 70 65 2d 6e 65 77 6c    69 6e 65 73 20 74 29 29 0a 20 20 20 20 20 20 28  | rint-escape-newlines.t)).......( | 
| 3bba0 |  73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20    20 20 20 20 20 20 20 28 73 61 76 65 2d 72 65 73  | save-excursion.........(save-res | 
| 3bbc0 |  74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 20    20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63  | triction...........(add-file-loc | 
| 3bbe0 |  61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74    65 6c 2d 6d 6f 64 65 6c 20 67 70 74 65 6c 2d 6d  | al-variable.'gptel-model.gptel-m | 
| 3bc00 |  6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20    28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d  | odel)...........(add-file-local- | 
| 3bc20 |  76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d    2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20  | variable.'gptel--backend-name... | 
| 3bc40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3bc60 |  20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d    6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65  | .(gptel-backend-name.gptel-backe | 
| 3bc80 |  6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    75 6e 6c 65 73 73 20 28 65 71 75 61 6c 20 28 64  | nd))...........(unless.(equal.(d | 
| 3bca0 |  65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70    74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29  | efault-value.'gptel-temperature) | 
| 3bcc0 |  20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75    72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .gptel-temperature)............. | 
| 3bce0 |  28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d    76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d  | (add-file-local-variable.'gptel- | 
| 3bd00 |  74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65    6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 29 0a  | temperature.gptel-temperature)). | 
| 3bd20 |  20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73    73 20 28 65 71 75 61 6c 20 28 64 65 66 61 75 6c  | ..........(unless.(equal.(defaul | 
| 3bd40 |  74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 2d    73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a  | t-value.'gptel--system-message). | 
| 3bd60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c  | ...........................gptel | 
| 3bd80 |  2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61  | --system-message).............(a | 
| 3bda0 |  64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61    72 69 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20  | dd-file-local-variable.......... | 
| 3bdc0 |  20 20 20 20 27 67 70 74 65 6c 2d 2d 73 79 73 74    65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20  | ....'gptel--system-message...... | 
| 3bde0 |  20 20 20 20 20 20 20 20 28 63 61 72 2d 73 61 66    65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d  | ........(car-safe.(gptel--parse- | 
| 3be00 |  64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c 2d    2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29  | directive.gptel--system-message) | 
| 3be20 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77    68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f  | )))...........(when.gptel-max-to | 
| 3be40 |  6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c  | kens.............(add-file-local | 
| 3be60 |  2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c    2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 67 70 74 65  | -variable.'gptel-max-tokens.gpte | 
| 3be80 |  6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 0a 20    20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28  | l-max-tokens))...........(when.( | 
| 3bea0 |  6e 61 74 6e 75 6d 70 20 67 70 74 65 6c 2d 2d 6e    75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73  | natnump.gptel--num-messages-to-s | 
| 3bec0 |  65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c  | end).............(add-file-local | 
| 3bee0 |  2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c    2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74  | -variable.'gptel--num-messages-t | 
| 3bf00 |  6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | o-send.......................... | 
| 3bf20 |  20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65    6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d  | ............gptel--num-messages- | 
| 3bf40 |  74 6f 2d 73 65 6e 64 29 29 0a 20 20 20 20 20 20    20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f  | to-send))...........(add-file-lo | 
| 3bf60 |  63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70    74 65 6c 2d 2d 62 6f 75 6e 64 73 20 28 67 70 74  | cal-variable.'gptel--bounds.(gpt | 
| 3bf80 |  65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62    6f 75 6e 64 73 29 29 29 29 29 29 29 0a 0a 0c 0a  | el--get-buffer-bounds))))))).... | 
| 3bfa0 |  3b 3b 3b 20 4d 69 6e 6f 72 20 6d 6f 64 65 20 61    6e 64 20 55 49 0a 0a 3b 3b 20 4e 4f 54 45 3a 20  | ;;;.Minor.mode.and.UI..;;.NOTE:. | 
| 3bfc0 |  49 74 27 73 20 6e 6f 74 20 63 6c 65 61 72 20 74    68 61 74 20 74 68 69 73 20 69 73 20 74 68 65 20  | It's.not.clear.that.this.is.the. | 
| 3bfe0 |  62 65 73 74 20 73 74 72 61 74 65 67 79 3a 0a 28    61 64 64 2d 74 6f 2d 6c 69 73 74 20 27 74 65 78  | best.strategy:.(add-to-list.'tex | 
| 3c000 |  74 2d 70 72 6f 70 65 72 74 79 2d 64 65 66 61 75    6c 74 2d 6e 6f 6e 73 74 69 63 6b 79 20 27 28 67  | t-property-default-nonsticky.'(g | 
| 3c020 |  70 74 65 6c 20 2e 20 74 29 29 0a 0a 3b 3b 3b 23    23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 69  | ptel...t))..;;;###autoload.(defi | 
| 3c040 |  6e 65 2d 6d 69 6e 6f 72 2d 6d 6f 64 65 20 67 70    74 65 6c 2d 6d 6f 64 65 0a 20 20 22 4d 69 6e 6f  | ne-minor-mode.gptel-mode..."Mino | 
| 3c060 |  72 20 6d 6f 64 65 20 66 6f 72 20 69 6e 74 65 72    61 63 74 69 6e 67 20 77 69 74 68 20 4c 4c 4d 73  | r.mode.for.interacting.with.LLMs | 
| 3c080 |  2e 22 0a 20 20 3a 6c 69 67 68 74 65 72 20 22 20    47 50 54 22 0a 20 20 3a 6b 65 79 6d 61 70 0a 20  | ."...:lighter.".GPT"...:keymap.. | 
| 3c0a0 |  20 28 6c 65 74 20 28 28 6d 61 70 20 28 6d 61 6b    65 2d 73 70 61 72 73 65 2d 6b 65 79 6d 61 70 29  | .(let.((map.(make-sparse-keymap) | 
| 3c0c0 |  29 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b    65 79 20 6d 61 70 20 28 6b 62 64 20 22 43 2d 63  | )).....(define-key.map.(kbd."C-c | 
| 3c0e0 |  20 52 45 54 22 29 20 23 27 67 70 74 65 6c 2d 73    65 6e 64 29 0a 20 20 20 20 6d 61 70 29 0a 20 20  | .RET").#'gptel-send).....map)... | 
| 3c100 |  28 69 66 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20    20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20  | (if.gptel-mode.......(progn..... | 
| 3c120 |  20 20 20 20 28 75 6e 6c 65 73 73 20 28 64 65 72    69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67  | ....(unless.(derived-mode-p.'org | 
| 3c140 |  2d 6d 6f 64 65 20 27 6d 61 72 6b 64 6f 77 6e 2d    6d 6f 64 65 20 27 74 65 78 74 2d 6d 6f 64 65 29  | -mode.'markdown-mode.'text-mode) | 
| 3c160 |  0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65    6c 2d 6d 6f 64 65 20 2d 31 29 0a 20 20 20 20 20  | ...........(gptel-mode.-1)...... | 
| 3c180 |  20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72    20 28 66 6f 72 6d 61 74 20 22 60 67 70 74 65 6c  | .....(user-error.(format."`gptel | 
| 3c1a0 |  2d 6d 6f 64 65 27 20 69 73 20 6e 6f 74 20 73 75    70 70 6f 72 74 65 64 20 69 6e 20 60 25 73 27 2e  | -mode'.is.not.supported.in.`%s'. | 
| 3c1c0 |  22 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 29 29 0a    20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f  | ".major-mode))).........(add-hoo | 
| 3c1e0 |  6b 20 27 62 65 66 6f 72 65 2d 73 61 76 65 2d 68    6f 6f 6b 20 23 27 67 70 74 65 6c 2d 2d 73 61 76  | k.'before-save-hook.#'gptel--sav | 
| 3c200 |  65 2d 73 74 61 74 65 20 6e 69 6c 20 74 29 0a 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70  | e-state.nil.t).........(gptel--p | 
| 3c220 |  72 65 74 74 69 66 79 2d 70 72 65 73 65 74 29 0a    20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 64  | rettify-preset).........(when.(d | 
| 3c240 |  65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f    72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20  | erived-mode-p.'org-mode)........ | 
| 3c260 |  20 20 20 3b 3b 20 57 6f 72 6b 20 61 72 6f 75 6e    64 20 62 75 67 20 69 6e 20 60 6f 72 67 2d 66 6f  | ...;;.Work.around.bug.in.`org-fo | 
| 3c280 |  6e 74 69 66 79 2d 65 78 74 65 6e 64 2d 72 65 67    69 6f 6e 27 2e 0a 20 20 20 20 20 20 20 20 20 20  | ntify-extend-region'............ | 
| 3c2a0 |  28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c    2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66  | (add-hook.'gptel-post-response-f | 
| 3c2c0 |  75 6e 63 74 69 6f 6e 73 20 23 27 66 6f 6e 74 2d    6c 6f 63 6b 2d 66 6c 75 73 68 20 6e 69 6c 20 74  | unctions.#'font-lock-flush.nil.t | 
| 3c2e0 |  29 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65    6c 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65  | )).........(gptel--restore-state | 
| 3c300 |  29 0a 20 20 20 20 20 20 20 20 28 69 66 20 67 70    74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c  | ).........(if.gptel-use-header-l | 
| 3c320 |  69 6e 65 0a 20 20 20 20 20 20 20 20 20 20 28 73    65 74 71 20 67 70 74 65 6c 2d 2d 6f 6c 64 2d 68  | ine...........(setq.gptel--old-h | 
| 3c340 |  65 61 64 65 72 2d 6c 69 6e 65 20 68 65 61 64 65    72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a 20 20  | eader-line.header-line-format... | 
| 3c360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65    61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74  | ..............header-line-format | 
| 3c380 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6c 69 73 74 20 27 28 3a 65 76 61 6c 20 28  | .................(list.'(:eval.( | 
| 3c3a0 |  63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69    7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 79 20  | concat.(propertize.".".'display. | 
| 3c3c0 |  27 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74    6f 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20  | '(space.:align-to.0))........... | 
| 3c3e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73  | .....................(format."%s | 
| 3c400 |  22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64    2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b  | ".(gptel-backend-name.gptel-back | 
| 3c420 |  65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | end)))).......................(p | 
| 3c440 |  72 6f 70 65 72 74 69 7a 65 20 22 20 52 65 61 64    79 22 20 27 66 61 63 65 20 27 73 75 63 63 65 73  | ropertize.".Ready".'face.'succes | 
| 3c460 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 27 28 3a 65 76 61 6c  | s).......................'(:eval | 
| 3c480 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28  | .........................(let*.( | 
| 3c4a0 |  28 6d 6f 64 65 6c 20 28 67 70 74 65 6c 2d 2d 6d    6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d  | (model.(gptel--model-name.gptel- | 
| 3c4c0 |  6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | model))......................... | 
| 3c4e0 |  20 20 20 20 20 20 28 73 79 73 74 65 6d 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......(system................... | 
| 3c500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72    6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20  | .............(propertize........ | 
| 3c520 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e  | .........................(button | 
| 3c540 |  69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ize............................. | 
| 3c560 |  20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 5b 50    72 6f 6d 70 74 3a 20 25 73 5d 22 0a 20 20 20 20  | .....(format."[Prompt:.%s]"..... | 
| 3c580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f  | ..............................(o | 
| 3c5a0 |  72 20 28 63 61 72 2d 73 61 66 65 20 28 72 61 73    73 6f 63 20 67 70 74 65 6c 2d 2d 73 79 73 74 65  | r.(car-safe.(rassoc.gptel--syste | 
| 3c5c0 |  6d 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d    64 69 72 65 63 74 69 76 65 73 29 29 0a 20 20 20  | m-message.gptel-directives)).... | 
| 3c5e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3c600 |  28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65    2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c  | (gptel--describe-directive.gptel | 
| 3c620 |  2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65    20 31 35 29 29 29 0a 20 20 20 20 20 20 20 20 20  | --system-message.15))).......... | 
| 3c640 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20  | ........................(lambda. | 
| 3c660 |  28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c    2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 29  | (&rest._).(gptel-system-prompt)) | 
| 3c680 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )............................... | 
| 3c6a0 |  20 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68    69 67 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20  | ..'mouse-face.'highlight........ | 
| 3c6c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 27 68 65 6c 70 2d 65  | .........................'help-e | 
| 3c6e0 |  63 68 6f 20 22 53 79 73 74 65 6d 20 6d 65 73 73    61 67 65 20 66 6f 72 20 73 65 73 73 69 6f 6e 22  | cho."System.message.for.session" | 
| 3c700 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )).............................. | 
| 3c720 |  20 28 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(context....................... | 
| 3c740 |  20 20 20 20 20 20 20 20 20 28 61 6e 64 20 67 70    74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69  | .........(and.gptel-context--ali | 
| 3c760 |  73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | st.............................. | 
| 3c780 |  20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20    65 6e 74 72 79 20 69 6e 20 67 70 74 65 6c 2d 63  | ...(cl-loop.for.entry.in.gptel-c | 
| 3c7a0 |  6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ontext--alist................... | 
| 3c7c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69    66 20 28 62 75 66 66 65 72 70 20 28 63 61 72 20  | ...............if.(bufferp.(car. | 
| 3c7e0 |  65 6e 74 72 79 29 29 20 63 6f 75 6e 74 20 69 74    20 69 6e 74 6f 20 62 75 66 73 0a 20 20 20 20 20  | entry)).count.it.into.bufs...... | 
| 3c800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65  | ............................else | 
| 3c820 |  20 63 6f 75 6e 74 20 28 73 74 72 69 6e 67 70 20    28 63 61 72 20 65 6e 74 72 79 29 29 20 69 6e 74  | .count.(stringp.(car.entry)).int | 
| 3c840 |  6f 20 66 69 6c 65 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | o.files......................... | 
| 3c860 |  20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79    20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20  | .........finally.return......... | 
| 3c880 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72  | .........................(proper | 
| 3c8a0 |  74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tize............................ | 
| 3c8c0 |  20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .......(buttonize............... | 
| 3c8e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5b 43  | .....................(concat."[C | 
| 3c900 |  6f 6e 74 65 78 74 3a 20 22 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ontext:."....................... | 
| 3c920 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61    6e 64 20 28 3e 20 62 75 66 73 20 30 29 20 28 66  | ..............(and.(>.bufs.0).(f | 
| 3c940 |  6f 72 6d 61 74 20 22 25 64 20 62 75 66 22 20 62    75 66 73 29 29 0a 20 20 20 20 20 20 20 20 20 20  | ormat."%d.buf".bufs))........... | 
| 3c960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28  | ..........................(and.( | 
| 3c980 |  3e 20 62 75 66 73 20 31 29 20 22 73 22 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | >.bufs.1)."s").................. | 
| 3c9a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 61 6e 64 20 28 3e 20 62 75 66 73 20  | ...................(and.(>.bufs. | 
| 3c9c0 |  30 29 20 28 3e 20 66 69 6c 65 73 20 30 29 20 22    2c 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20  | 0).(>.files.0).",.")............ | 
| 3c9e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e  | .........................(and.(> | 
| 3ca00 |  20 66 69 6c 65 73 20 30 29 20 28 66 6f 72 6d 61    74 20 22 25 64 20 66 69 6c 65 22 20 66 69 6c 65  | .files.0).(format."%d.file".file | 
| 3ca20 |  73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s))............................. | 
| 3ca40 |  20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 20    66 69 6c 65 73 20 31 29 20 22 73 22 29 0a 20 20  | ........(and.(>.files.1)."s")... | 
| 3ca60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3ca80 |  20 20 22 5d 22 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .."]").......................... | 
| 3caa0 |  20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64    61 20 28 26 72 65 73 74 20 5f 29 0a 20 20 20 20  | ..........(lambda.(&rest._)..... | 
| 3cac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3cae0 |  20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c    2d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 20 20  | .(require.'gptel-context)....... | 
| 3cb00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| 3cb20 |  67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 62    75 66 66 65 72 2d 73 65 74 75 70 29 29 29 0a 20  | gptel-context--buffer-setup))).. | 
| 3cb40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3cb60 |  20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 69    67 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20  | .'mouse-face.'highlight......... | 
| 3cb80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 27 68 65 6c 70 2d  | ..........................'help- | 
| 3cba0 |  65 63 68 6f 20 22 41 63 74 69 76 65 20 67 70 74    65 6c 20 63 6f 6e 74 65 78 74 22 29 29 29 29 0a  | echo."Active.gptel.context")))). | 
| 3cbc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74  | ..............................(t | 
| 3cbe0 |  6f 67 67 6c 65 2d 74 72 61 63 6b 2d 6d 65 64 69    61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | oggle-track-media............... | 
| 3cc00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20  | .................(lambda.(&rest. | 
| 3cc20 |  5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | _).............................. | 
| 3cc40 |  20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20    67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65 64 69  | ....(setq-local.gptel-track-medi | 
| 3cc60 |  61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | a............................... | 
| 3cc80 |  20 20 20 20 28 6e 6f 74 20 67 70 74 65 6c 2d 74    72 61 63 6b 2d 6d 65 64 69 61 29 29 0a 20 20 20  | ....(not.gptel-track-media)).... | 
| 3cca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69  | ..............................(i | 
| 3ccc0 |  66 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65    64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20 20  | f.gptel-track-media............. | 
| 3cce0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67  | .........................(messag | 
| 3cd00 |  65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e............................... | 
| 3cd20 |  20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........(concat................. | 
| 3cd40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 22 53 65 6e 64 69 6e 67 20  | ......................."Sending. | 
| 3cd60 |  6d 65 64 69 61 20 66 72 6f 6d 20 69 6e 63 6c 75    64 65 64 20 6c 69 6e 6b 73 2e 20 20 54 6f 20 69  | media.from.included.links...To.i | 
| 3cd80 |  6e 63 6c 75 64 65 20 6d 65 64 69 61 2c 20 63 72    65 61 74 65 20 22 0a 20 20 20 20 20 20 20 20 20  | nclude.media,.create.".......... | 
| 3cda0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61  | .............................."a | 
| 3cdc0 |  20 5c 22 73 74 61 6e 64 61 6c 6f 6e 65 5c 22 20    6c 69 6e 6b 20 69 6e 20 61 20 70 61 72 61 67 72  | .\"standalone\".link.in.a.paragr | 
| 3cde0 |  61 70 68 20 62 79 20 69 74 73 65 6c 66 2c 20 73    65 70 61 72 61 74 65 64 20 66 72 6f 6d 20 73 75  | aph.by.itself,.separated.from.su | 
| 3ce00 |  72 72 6f 75 6e 64 69 6e 67 20 74 65 78 74 2e 22    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | rrounding.text.")).............. | 
| 3ce20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22  | ......................(message." | 
| 3ce40 |  49 67 6e 6f 72 69 6e 67 20 69 6d 61 67 65 20 6c    69 6e 6b 73 2e 20 20 4f 6e 6c 79 20 6c 69 6e 6b  | Ignoring.image.links...Only.link | 
| 3ce60 |  20 74 65 78 74 20 77 69 6c 6c 20 62 65 20 73 65    6e 74 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20  | .text.will.be.sent.")).......... | 
| 3ce80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d  | ........................(run-at- | 
| 3cea0 |  74 69 6d 65 20 30 20 6e 69 6c 20 23 27 66 6f 72    63 65 2d 6d 6f 64 65 2d 6c 69 6e 65 2d 75 70 64  | time.0.nil.#'force-mode-line-upd | 
| 3cec0 |  61 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ate))).......................... | 
| 3cee0 |  20 20 20 20 20 28 74 72 61 63 6b 2d 6d 65 64 69    61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....(track-media............... | 
| 3cf00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 61 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 6f  | .................(and.(gptel--mo | 
| 3cf20 |  64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d    65 64 69 61 29 0a 20 20 20 20 20 20 20 20 20 20  | del-capable-p.'media)........... | 
| 3cf40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d  | ......................(if.gptel- | 
| 3cf60 |  74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | track-media..................... | 
| 3cf80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20  | ................(propertize..... | 
| 3cfa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3cfc0 |  20 28 62 75 74 74 6f 6e 69 7a 65 20 22 5b 53 65    6e 64 69 6e 67 20 6d 65 64 69 61 5d 22 20 74 6f  | .(buttonize."[Sending.media]".to | 
| 3cfe0 |  67 67 6c 65 2d 74 72 61 63 6b 2d 6d 65 64 69 61    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ggle-track-media)............... | 
| 3d000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 27 6d 6f 75 73 65 2d 66 61  | .......................'mouse-fa | 
| 3d020 |  63 65 20 27 68 69 67 68 6c 69 67 68 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ce.'highlight................... | 
| 3d040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20  | ...................'help-echo... | 
| 3d060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3d080 |  20 20 20 22 53 65 6e 64 69 6e 67 20 6d 65 64 69    61 20 66 72 6f 6d 20 73 74 61 6e 64 61 6c 6f 6e  | ..."Sending.media.from.standalon | 
| 3d0a0 |  65 20 6c 69 6e 6b 73 2f 75 72 6c 73 20 77 68 65    6e 20 73 75 70 70 6f 72 74 65 64 2e 5c 6e 43 6c  | e.links/urls.when.supported.\nCl | 
| 3d0c0 |  69 63 6b 20 74 6f 20 74 6f 67 67 6c 65 22 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ick.to.toggle")................. | 
| 3d0e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20  | ..................(propertize... | 
| 3d100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3d120 |  20 28 62 75 74 74 6f 6e 69 7a 65 20 22 5b 49 67    6e 6f 72 69 6e 67 20 6d 65 64 69 61 5d 22 20 74  | .(buttonize."[Ignoring.media]".t | 
| 3d140 |  6f 67 67 6c 65 2d 74 72 61 63 6b 2d 6d 65 64 69    61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | oggle-track-media).............. | 
| 3d160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 27 6d 6f 75 73 65 2d 66 61 63  | ......................'mouse-fac | 
| 3d180 |  65 20 27 68 69 67 68 6c 69 67 68 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.'highlight.................... | 
| 3d1a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20  | ................'help-echo...... | 
| 3d1c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49  | .............................."I | 
| 3d1e0 |  67 6e 6f 72 69 6e 67 20 69 6d 61 67 65 73 20 66    72 6f 6d 20 73 74 61 6e 64 61 6c 6f 6e 65 20 6c  | gnoring.images.from.standalone.l | 
| 3d200 |  69 6e 6b 73 2f 75 72 6c 73 2e 5c 6e 43 6c 69 63    6b 20 74 6f 20 74 6f 67 67 6c 65 22 29 29 29 29  | inks/urls.\nClick.to.toggle")))) | 
| 3d220 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| 3d240 |  74 6f 67 67 6c 65 2d 74 6f 6f 6c 73 20 28 6c 61    6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28  | toggle-tools.(lambda.(&rest._).( | 
| 3d260 |  69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | interactive).................... | 
| 3d280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d  | ...........................(run- | 
| 3d2a0 |  61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | at-time.0.nil................... | 
| 3d2c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61  | .............................(la | 
| 3d2e0 |  6d 62 64 61 20 28 29 20 28 63 61 6c 6c 2d 69 6e    74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70  | mbda.().(call-interactively.#'gp | 
| 3d300 |  74 65 6c 2d 74 6f 6f 6c 73 29 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tel-tools))))).................. | 
| 3d320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f    6f 6c 73 20 28 77 68 65 6e 20 28 61 6e 64 20 67  | .............(tools.(when.(and.g | 
| 3d340 |  70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 67    70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20  | ptel-use-tools.gptel-tools)..... | 
| 3d360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3d380 |  20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(propertize................... | 
| 3d3a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20  | .....................(buttonize. | 
| 3d3c0 |  28 70 63 61 73 65 20 28 6c 65 6e 67 74 68 20 67    70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20 20 20 20  | (pcase.(length.gptel-tools)..... | 
| 3d3e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3d400 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    30 20 22 5b 4e 6f 20 74 6f 6f 6c 73 5d 22 29 20  | ...............(0."[No.tools]"). | 
| 3d420 |  28 31 20 22 5b 31 20 74 6f 6f 6c 5d 22 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (1."[1.tool]").................. | 
| 3d440 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3d460 |  20 20 28 6c 65 6e 20 28 66 6f 72 6d 61 74 20 22    5b 25 64 20 74 6f 6f 6c 73 5d 22 20 6c 65 6e 29  | ..(len.(format."[%d.tools]".len) | 
| 3d480 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )).............................. | 
| 3d4a0 |  20 20 20 20 20 20 20 20 20 20 20 74 6f 67 67 6c    65 2d 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20  | ...........toggle-tools)........ | 
| 3d4c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3d4e0 |  27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 69 67    68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20  | 'mouse-face.'highlight.......... | 
| 3d500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 68  | ..............................'h | 
| 3d520 |  65 6c 70 2d 65 63 68 6f 20 22 53 65 6c 65 63 74    20 74 6f 6f 6c 73 22 29 29 29 29 0a 20 20 20 20  | elp-echo."Select.tools"))))..... | 
| 3d540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20  | .....................(concat.... | 
| 3d560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69  | .......................(properti | 
| 3d580 |  7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20  | ze............................". | 
| 3d5a0 |  22 20 27 64 69 73 70 6c 61 79 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ".'display...................... | 
| 3d5c0 |  20 20 20 20 20 20 60 28 73 70 61 63 65 20 3a 61    6c 69 67 6e 2d 74 6f 20 28 2d 20 72 69 67 68 74  | ......`(space.:align-to.(-.right | 
| 3d5e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3d600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c    28 2b 20 35 20 28 6c 65 6e 67 74 68 20 6d 6f 64  | ...............,(+.5.(length.mod | 
| 3d620 |  65 6c 29 20 28 6c 65 6e 67 74 68 20 73 79 73 74    65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | el).(length.system)............. | 
| 3d640 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3d660 |  20 20 20 20 28 6c 65 6e 67 74 68 20 74 72 61 63    6b 2d 6d 65 64 69 61 29 20 28 6c 65 6e 67 74 68  | ....(length.track-media).(length | 
| 3d680 |  20 63 6f 6e 74 65 78 74 29 20 28 6c 65 6e 67 74    68 20 74 6f 6f 6c 73 29 29 29 29 29 0a 20 20 20  | .context).(length.tools))))).... | 
| 3d6a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 74 6f 6f 6c 73 20 28 61 6e  | .......................tools.(an | 
| 3d6c0 |  64 20 74 72 61 63 6b 2d 6d 65 64 69 61 20 22 20    22 29 20 74 72 61 63 6b 2d 6d 65 64 69 61 20 28  | d.track-media.".").track-media.( | 
| 3d6e0 |  61 6e 64 20 63 6f 6e 74 65 78 74 20 22 20 22 29    20 63 6f 6e 74 65 78 74 20 22 20 22 20 73 79 73  | and.context.".").context.".".sys | 
| 3d700 |  74 65 6d 20 22 20 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tem."."......................... | 
| 3d720 |  20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(propertize................... | 
| 3d740 |  20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e    69 7a 65 20 28 63 6f 6e 63 61 74 20 22 5b 22 20  | .........(buttonize.(concat."[". | 
| 3d760 |  6d 6f 64 65 6c 20 22 5d 22 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | model."]")...................... | 
| 3d780 |  20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28    26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d  | .......(lambda.(&rest._).(gptel- | 
| 3d7a0 |  6d 65 6e 75 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | menu)))......................... | 
| 3d7c0 |  20 20 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27    68 69 67 68 6c 69 67 68 74 0a 20 20 20 20 20 20  | ...'mouse-face.'highlight....... | 
| 3d7e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 20  | .....................'help-echo. | 
| 3d800 |  22 4d 6f 64 65 6c 20 69 6e 20 75 73 65 22 29 29    29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28  | "Model.in.use"))))))...........( | 
| 3d820 |  73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70    72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20  | setq.mode-line-process.......... | 
| 3d840 |  20 20 20 20 20 20 20 27 28 3a 65 76 61 6c 20 28    63 6f 6e 63 61 74 20 22 20 22 0a 20 20 20 20 20  | .......'(:eval.(concat."."...... | 
| 3d860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 28  | ....................(buttonize.( | 
| 3d880 |  67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d    65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20  | gptel--model-name.gptel-model).. | 
| 3d8a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62  | ...........................(lamb | 
| 3d8c0 |  64 61 20 28 26 72 65 73 74 20 5f 29 20 28 67 70    74 65 6c 2d 6d 65 6e 75 29 29 29 29 29 29 29 29  | da.(&rest._).(gptel-menu)))))))) | 
| 3d8e0 |  0a 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f    6b 20 27 62 65 66 6f 72 65 2d 73 61 76 65 2d 68  | .....(remove-hook.'before-save-h | 
| 3d900 |  6f 6f 6b 20 23 27 67 70 74 65 6c 2d 2d 73 61 76    65 2d 73 74 61 74 65 20 74 29 0a 20 20 20 20 28  | ook.#'gptel--save-state.t).....( | 
| 3d920 |  67 70 74 65 6c 2d 2d 70 72 65 74 74 69 66 79 2d    70 72 65 73 65 74 29 0a 20 20 20 20 28 69 66 20  | gptel--prettify-preset).....(if. | 
| 3d940 |  67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72    2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 28 73  | gptel-use-header-line.........(s | 
| 3d960 |  65 74 71 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d    66 6f 72 6d 61 74 20 67 70 74 65 6c 2d 2d 6f 6c  | etq.header-line-format.gptel--ol | 
| 3d980 |  64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65  | d-header-line...............gpte | 
| 3d9a0 |  6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69    6e 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73  | l--old-header-line.nil).......(s | 
| 3d9c0 |  65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72    6f 63 65 73 73 20 6e 69 6c 29 29 29 29 0a 0a 28  | etq.mode-line-process.nil))))..( | 
| 3d9e0 |  64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 66 73    6d 2d 6c 61 73 74 29 20 20 20 20 20 20 20 20 20  | defvar.gptel--fsm-last)......... | 
| 3da00 |  20 20 20 20 20 20 20 3b 44 65 66 69 6e 65 64 20    66 75 72 74 68 65 72 20 62 65 6c 6f 77 0a 28 64  | .......;Defined.further.below.(d | 
| 3da20 |  65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 70 64 61    74 65 2d 73 74 61 74 75 73 20 28 26 6f 70 74 69  | efun.gptel--update-status.(&opti | 
| 3da40 |  6f 6e 61 6c 20 6d 73 67 20 66 61 63 65 29 0a 20    20 22 55 70 64 61 74 65 20 73 74 61 74 75 73 20  | onal.msg.face)..."Update.status. | 
| 3da60 |  4d 53 47 20 69 6e 20 46 41 43 45 2e 22 0a 20 20    28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65  | MSG.in.FACE."...(when.gptel-mode | 
| 3da80 |  0a 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 75    73 65 2d 68 65 61 64 65 72 2d 6c 69 6e 65 0a 20  | .....(if.gptel-use-header-line.. | 
| 3daa0 |  20 20 20 20 20 20 20 28 61 6e 64 20 28 63 6f 6e    73 70 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66  | .......(and.(consp.header-line-f | 
| 3dac0 |  6f 72 6d 61 74 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 28 73 65 74 66 20 28 6e 74 68 20 31  | ormat)..............(setf.(nth.1 | 
| 3dae0 |  20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72    6d 61 74 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .header-line-format)............ | 
| 3db00 |  20 20 20 20 20 20 20 20 28 74 68 72 65 61 64 2d    66 69 72 73 74 0a 20 20 20 20 20 20 20 20 20 20  | ........(thread-first........... | 
| 3db20 |  20 20 20 20 20 20 20 20 20 20 20 6d 73 67 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...........msg.................. | 
| 3db40 |  20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 28    6c 61 6d 62 64 61 20 28 5f 29 20 28 67 70 74 65  | ....(buttonize.(lambda.(_).(gpte | 
| 3db60 |  6c 2d 2d 69 6e 73 70 65 63 74 2d 66 73 6d 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l--inspect-fsm)))............... | 
| 3db80 |  20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69    7a 65 20 27 66 61 63 65 20 66 61 63 65 20 27 6d  | .......(propertize.'face.face.'m | 
| 3dba0 |  6f 75 73 65 2d 66 61 63 65 20 27 68 69 67 68 6c    69 67 68 74 29 29 29 29 0a 20 20 20 20 20 20 28  | ouse-face.'highlight)))).......( | 
| 3dbc0 |  69 66 20 28 6d 65 6d 62 65 72 20 6d 73 67 20 27    28 22 20 54 79 70 69 6e 67 2e 2e 2e 22 20 22 20  | if.(member.msg.'(".Typing...".". | 
| 3dbe0 |  57 61 69 74 69 6e 67 2e 2e 2e 22 29 29 0a 20 20    20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 6f  | Waiting..."))...........(setq.mo | 
| 3dc00 |  64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 20    28 70 72 6f 70 65 72 74 69 7a 65 20 6d 73 67 20  | de-line-process.(propertize.msg. | 
| 3dc20 |  27 66 61 63 65 20 66 61 63 65 29 29 0a 20 20 20    20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d  | 'face.face)).........(setq.mode- | 
| 3dc40 |  6c 69 6e 65 2d 70 72 6f 63 65 73 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 27 28 3a 65 76  | line-process...............'(:ev | 
| 3dc60 |  61 6c 20 28 63 6f 6e 63 61 74 20 22 20 22 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | al.(concat.".".................. | 
| 3dc80 |  20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65    20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e  | ......(buttonize.(gptel--model-n | 
| 3dca0 |  61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ame.gptel-model)................ | 
| 3dcc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61    6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28  | .............(lambda.(&rest._).( | 
| 3dce0 |  67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 29 29    0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67  | gptel-menu)))))).........(messag | 
| 3dd00 |  65 20 28 70 72 6f 70 65 72 74 69 7a 65 20 6d 73    67 20 27 66 61 63 65 20 66 61 63 65 29 29 29 29  | e.(propertize.msg.'face.face)))) | 
| 3dd20 |  0a 20 20 20 20 28 66 6f 72 63 65 2d 6d 6f 64 65    2d 6c 69 6e 65 2d 75 70 64 61 74 65 29 29 29 0a  | .....(force-mode-line-update))). | 
| 3dd40 |  0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69    6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74  | .(declare-function.gptel-context | 
| 3dd60 |  2d 2d 77 72 61 70 20 22 67 70 74 65 6c 2d 63 6f    6e 74 65 78 74 22 29 0a 0a 0c 0a 3b 3b 3b 20 54  | --wrap."gptel-context")....;;;.T | 
| 3dd80 |  6f 6f 6c 20 75 73 65 0a 0a 28 64 65 66 63 75 73    74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f  | ool.use..(defcustom.gptel-use-to | 
| 3dda0 |  6f 6c 73 20 74 0a 20 20 22 57 68 65 74 68 65 72    20 67 70 74 65 6c 20 73 68 6f 75 6c 64 20 75 73  | ols.t..."Whether.gptel.should.us | 
| 3ddc0 |  65 20 74 6f 6f 6c 73 2e 0a 0a 54 6f 6f 6c 73 20    61 72 65 20 63 61 70 61 62 69 6c 69 74 69 65 73  | e.tools...Tools.are.capabilities | 
| 3dde0 |  20 70 72 6f 76 69 64 65 64 20 62 79 20 79 6f 75    20 74 6f 20 74 68 65 20 4c 4c 4d 20 61 73 20 66  | .provided.by.you.to.the.LLM.as.f | 
| 3de00 |  75 6e 63 74 69 6f 6e 73 20 61 6e 0a 4c 4c 4d 20    63 61 6e 20 63 68 6f 6f 73 65 20 74 6f 20 63 61  | unctions.an.LLM.can.choose.to.ca | 
| 3de20 |  6c 6c 2e 20 20 67 70 74 65 6c 20 72 75 6e 73 20    74 68 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c  | ll...gptel.runs.the.function.cal | 
| 3de40 |  6c 20 6f 6e 20 79 6f 75 72 0a 6d 61 63 68 69 6e    65 2e 0a 0a 49 66 20 73 65 74 20 74 6f 20 74 2c  | l.on.your.machine...If.set.to.t, | 
| 3de60 |  20 61 6e 79 20 74 6f 6f 6c 73 20 73 65 6c 65 63    74 65 64 20 69 6e 20 60 67 70 74 65 6c 2d 74 6f  | .any.tools.selected.in.`gptel-to | 
| 3de80 |  6f 6c 73 27 20 77 69 6c 6c 20 62 65 20 6d 61 64    65 0a 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74  | ols'.will.be.made.available.to.t | 
| 3dea0 |  68 65 20 4c 4c 4d 2e 20 20 54 68 69 73 20 69 73    20 74 68 65 20 64 65 66 61 75 6c 74 2e 20 20 49  | he.LLM...This.is.the.default...I | 
| 3dec0 |  74 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20    69 66 0a 6e 6f 20 74 6f 6f 6c 73 20 61 72 65 20  | t.has.no.effect.if.no.tools.are. | 
| 3dee0 |  73 65 6c 65 63 74 65 64 2e 0a 0a 49 66 20 73 65    74 20 74 6f 20 66 6f 72 63 65 2c 20 67 70 74 65  | selected...If.set.to.force,.gpte | 
| 3df00 |  6c 20 77 69 6c 6c 20 74 72 79 20 74 6f 20 66 6f    72 63 65 20 74 68 65 20 4c 4c 4d 20 74 6f 20 63  | l.will.try.to.force.the.LLM.to.c | 
| 3df20 |  61 6c 6c 20 6f 6e 65 20 6f 72 0a 6d 6f 72 65 20    6f 66 20 74 68 65 20 70 72 6f 76 69 64 65 64 20  | all.one.or.more.of.the.provided. | 
| 3df40 |  74 6f 6f 6c 73 2e 20 20 53 75 70 70 6f 72 74 20    66 6f 72 20 74 68 69 73 20 66 65 61 74 75 72 65  | tools...Support.for.this.feature | 
| 3df60 |  20 64 65 70 65 6e 64 73 20 6f 6e 0a 74 68 65 20    62 61 63 6b 65 6e 64 2f 41 50 49 2c 20 61 6e 64  | .depends.on.the.backend/API,.and | 
| 3df80 |  20 67 70 74 65 6c 20 77 69 6c 6c 20 66 61 6c 6c    20 62 61 63 6b 20 74 6f 20 74 68 65 20 64 65 66  | .gptel.will.fall.back.to.the.def | 
| 3dfa0 |  61 75 6c 74 20 62 65 68 61 76 69 6f 72 0a 77 68    65 6e 20 66 6f 72 63 69 6e 67 20 74 6f 6f 6c 20  | ault.behavior.when.forcing.tool. | 
| 3dfc0 |  75 73 65 20 69 73 20 75 6e 73 75 70 70 6f 72 74    65 64 2e 0a 0a 49 66 20 6e 69 6c 2c 20 74 6f 6f  | use.is.unsupported...If.nil,.too | 
| 3dfe0 |  6c 20 75 73 65 20 69 73 20 74 75 72 6e 65 64 20    6f 66 66 2e 22 0a 20 20 3a 74 79 70 65 20 27 28  | l.use.is.turned.off."...:type.'( | 
| 3e000 |  63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 45 6e  | choice...........(const.:tag."En | 
| 3e020 |  61 62 6c 65 22 20 74 29 0a 20 20 20 20 20 20 20    20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22  | able".t)...........(const.:tag." | 
| 3e040 |  46 6f 72 63 65 20 74 6f 6f 6c 20 75 73 65 22 20    66 6f 72 63 65 29 0a 20 20 20 20 20 20 20 20 20  | Force.tool.use".force).......... | 
| 3e060 |  20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 54 75    72 6e 20 4f 66 66 22 20 6e 69 6c 29 29 29 0a 0a  | .(const.:tag."Turn.Off".nil))).. | 
| 3e080 |  28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c    2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61  | (defcustom.gptel-confirm-tool-ca | 
| 3e0a0 |  6c 6c 73 20 27 61 75 74 6f 0a 20 20 22 57 68 65    74 68 65 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20  | lls.'auto..."Whether.tool.calls. | 
| 3e0c0 |  73 68 6f 75 6c 64 20 77 61 69 74 20 66 6f 72 20    74 68 65 20 75 73 65 72 20 74 6f 20 72 75 6e 20  | should.wait.for.the.user.to.run. | 
| 3e0e0 |  74 68 65 6d 2e 0a 0a 49 66 20 73 65 74 20 74 6f    20 74 20 6f 72 20 6e 69 6c 2c 20 74 6f 6f 6c 20  | them...If.set.to.t.or.nil,.tool. | 
| 3e100 |  63 61 6c 6c 73 20 61 6c 77 61 79 73 20 6f 72 20    6e 65 76 65 72 20 73 65 65 6b 20 63 6f 6e 66 69  | calls.always.or.never.seek.confi | 
| 3e120 |  72 6d 61 74 69 6f 6e 0a 66 72 6f 6d 20 74 68 65    20 75 73 65 72 20 62 65 66 6f 72 65 20 72 75 6e  | rmation.from.the.user.before.run | 
| 3e140 |  6e 69 6e 67 2e 0a 0a 49 66 20 73 65 74 20 74 6f    20 74 68 65 20 73 79 6d 62 6f 6c 20 61 75 74 6f  | ning...If.set.to.the.symbol.auto | 
| 3e160 |  20 28 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20    61 20 74 6f 6f 6c 20 63 61 6c 6c 20 77 69 6c 6c  | .(the.default),.a.tool.call.will | 
| 3e180 |  20 73 65 65 6b 0a 63 6f 6e 66 69 72 6d 61 74 69    6f 6e 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65  | .seek.confirmation.only.when.the | 
| 3e1a0 |  20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74    6f 6f 6c 20 73 70 65 63 20 68 61 73 20 61 20 6e  | .corresponding.tool.spec.has.a.n | 
| 3e1c0 |  6f 6e 2d 6e 69 6c 0a 3a 63 6f 6e 66 69 72 6d 20    73 6c 6f 74 2e 20 20 53 65 65 20 60 67 70 74 65  | on-nil.:confirm.slot...See.`gpte | 
| 3e1e0 |  6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e 22 0a 20    20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a  | l-make-tool'."...:type.'(choice. | 
| 3e200 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74    20 3a 74 61 67 20 22 54 6f 6f 6c 20 64 65 63 69  | ..........(const.:tag."Tool.deci | 
| 3e220 |  64 65 73 22 20 61 75 74 6f 29 0a 20 20 20 20 20    20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67  | des".auto)...........(const.:tag | 
| 3e240 |  20 22 41 6c 77 61 79 73 22 20 74 29 0a 20 20 20    20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74  | ."Always".t)...........(const.:t | 
| 3e260 |  61 67 20 22 4e 65 76 65 72 22 20 6e 69 6c 29 29    29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70  | ag."Never".nil)))..(defcustom.gp | 
| 3e280 |  74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f 6c    2d 72 65 73 75 6c 74 73 20 27 61 75 74 6f 0a 20  | tel-include-tool-results.'auto.. | 
| 3e2a0 |  20 22 57 68 65 74 68 65 72 20 74 6f 6f 6c 20 63    61 6c 6c 20 72 65 73 75 6c 74 73 20 73 68 6f 75  | ."Whether.tool.call.results.shou | 
| 3e2c0 |  6c 64 20 62 65 20 69 6e 63 6c 75 64 65 64 20 69    6e 20 74 68 65 20 62 75 66 66 65 72 2e 0a 0a 49  | ld.be.included.in.the.buffer...I | 
| 3e2e0 |  66 20 73 65 74 20 74 6f 20 74 20 6f 72 20 6e 69    6c 2c 20 72 65 73 75 6c 74 73 20 6f 66 20 74 6f  | f.set.to.t.or.nil,.results.of.to | 
| 3e300 |  6f 6c 20 63 61 6c 6c 73 20 61 72 65 20 61 6c 77    61 79 73 20 6f 72 20 6e 65 76 65 72 0a 69 6e 63  | ol.calls.are.always.or.never.inc | 
| 3e320 |  6c 75 64 65 64 20 69 6e 20 74 68 65 20 4c 4c 4d    20 72 65 73 70 6f 6e 73 65 2c 20 72 65 73 70 65  | luded.in.the.LLM.response,.respe | 
| 3e340 |  63 74 69 76 65 6c 79 2e 0a 0a 49 66 20 73 65 74    20 74 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20 61  | ctively...If.set.to.the.symbol.a | 
| 3e360 |  75 74 6f 20 28 74 68 65 20 64 65 66 61 75 6c 74    29 2c 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 20 72  | uto.(the.default),.a.tool.call.r | 
| 3e380 |  65 73 75 6c 74 20 69 73 0a 69 6e 63 6c 75 64 65    64 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 20  | esult.is.included.only.when.the. | 
| 3e3a0 |  63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f    6f 6c 20 73 70 65 63 20 68 61 73 20 61 20 6e 6f  | corresponding.tool.spec.has.a.no | 
| 3e3c0 |  6e 2d 6e 69 6c 0a 3a 69 6e 63 6c 75 64 65 20 73    6c 6f 74 2e 20 20 53 65 65 20 60 67 70 74 65 6c  | n-nil.:include.slot...See.`gptel | 
| 3e3e0 |  2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e 22 0a 20 20    3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20  | -make-tool'."...:type.'(choice.. | 
| 3e400 |  20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20    3a 74 61 67 20 22 54 6f 6f 6c 20 64 65 63 69 64  | .........(const.:tag."Tool.decid | 
| 3e420 |  65 73 22 20 61 75 74 6f 29 0a 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20  | es".auto)...........(const.:tag. | 
| 3e440 |  22 41 6c 77 61 79 73 22 20 74 29 0a 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61  | "Always".t)...........(const.:ta | 
| 3e460 |  67 20 22 4e 65 76 65 72 22 20 6e 69 6c 29 29 29    0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74  | g."Never".nil)))..(defcustom.gpt | 
| 3e480 |  65 6c 2d 74 6f 6f 6c 73 20 6e 69 6c 0a 20 20 22    41 20 6c 69 73 74 20 6f 66 20 74 6f 6f 6c 73 20  | el-tools.nil..."A.list.of.tools. | 
| 3e4a0 |  74 6f 20 69 6e 63 6c 75 64 65 20 77 69 74 68 20    67 70 74 65 6c 20 72 65 71 75 65 73 74 73 2e 0a  | to.include.with.gptel.requests.. | 
| 3e4c0 |  0a 45 61 63 68 20 74 6f 6f 6c 20 73 68 6f 75 6c    64 20 62 65 20 61 20 60 67 70 74 65 6c 2d 74 6f  | .Each.tool.should.be.a.`gptel-to | 
| 3e4e0 |  6f 6c 27 20 73 74 72 75 63 74 2c 20 77 68 69 63    68 20 73 65 65 2e 20 20 54 6f 20 73 70 65 63 69  | ol'.struct,.which.see...To.speci | 
| 3e500 |  66 79 0a 61 20 74 6f 6f 6c 2c 20 75 73 65 20 60    67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27  | fy.a.tool,.use.`gptel-make-tool' | 
| 3e520 |  2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20    3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20  | ,.which.see."...:group.'gptel... | 
| 3e540 |  3a 74 79 70 65 20 27 28 72 65 70 65 61 74 20 67    70 74 65 6c 2d 74 6f 6f 6c 29 29 0a 0a 28 63 6c  | :type.'(repeat.gptel-tool))..(cl | 
| 3e560 |  2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65    6c 2d 74 6f 6f 6c 20 28 3a 63 6f 6e 73 74 72 75  | -defstruct.(gptel-tool.(:constru | 
| 3e580 |  63 74 6f 72 20 6e 69 6c 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ctor.nil)....................... | 
| 3e5a0 |  20 20 20 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f    72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 74 6f  | ....(:constructor.gptel--make-to | 
| 3e5c0 |  6f 6c 2d 69 6e 74 65 72 6e 61 6c 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ol-internal..................... | 
| 3e5e0 |  20 20 20 20 20 20 20 28 26 6b 65 79 20 66 75 6e    63 74 69 6f 6e 20 6e 61 6d 65 20 64 65 73 63 72  | .......(&key.function.name.descr | 
| 3e600 |  69 70 74 69 6f 6e 20 61 72 67 73 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | iption.args..................... | 
| 3e620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 79    6e 63 20 63 61 74 65 67 6f 72 79 20 63 6f 6e 66  | .............async.category.conf | 
| 3e640 |  69 72 6d 20 69 6e 63 6c 75 64 65 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | irm.include..................... | 
| 3e660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 26 61 6c    6c 6f 77 2d 6f 74 68 65 72 2d 6b 65 79 73 29 29  | .............&allow-other-keys)) | 
| 3e680 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70  | ...........................(:cop | 
| 3e6a0 |  69 65 72 20 67 70 74 65 6c 2d 2d 63 6f 70 79 2d    74 6f 6f 6c 29 29 0a 20 20 22 53 74 72 75 63 74  | ier.gptel--copy-tool))..."Struct | 
| 3e6c0 |  20 74 6f 20 73 70 65 63 69 66 79 20 74 6f 6f 6c    73 20 66 6f 72 20 4c 4c 4d 73 20 74 6f 20 72 75  | .to.specify.tools.for.LLMs.to.ru | 
| 3e6e0 |  6e 2e 0a 0a 41 20 74 6f 6f 6c 20 69 73 20 61 20    66 75 6e 63 74 69 6f 6e 20 73 70 65 63 69 66 69  | n...A.tool.is.a.function.specifi | 
| 3e700 |  63 61 74 69 6f 6e 20 73 65 6e 74 20 74 6f 20 74    68 65 20 4c 4c 4d 20 61 6c 6f 6e 67 20 77 69 74  | cation.sent.to.the.LLM.along.wit | 
| 3e720 |  68 0a 61 20 28 70 6c 61 69 6e 20 6c 61 6e 67 75    61 67 65 29 20 74 61 73 6b 2e 20 20 49 66 20 74  | h.a.(plain.language).task...If.t | 
| 3e740 |  68 65 20 4c 4c 4d 20 64 65 63 69 64 65 73 20 74    6f 20 75 73 65 20 74 68 65 20 74 6f 6f 6c 20 74  | he.LLM.decides.to.use.the.tool.t | 
| 3e760 |  6f 0a 61 63 63 6f 6d 70 6c 69 73 68 20 74 68 65    20 74 61 73 6b 2c 20 67 70 74 65 6c 20 77 69 6c  | o.accomplish.the.task,.gptel.wil | 
| 3e780 |  6c 20 72 75 6e 20 74 68 65 20 74 6f 6f 6c 20 61    6e 64 20 28 6f 70 74 69 6f 6e 61 6c 6c 79 29 0a  | l.run.the.tool.and.(optionally). | 
| 3e7a0 |  66 65 65 64 20 74 68 65 20 4c 4c 4d 20 74 68 65    20 72 65 73 75 6c 74 73 2e 20 20 59 6f 75 20 63  | feed.the.LLM.the.results...You.c | 
| 3e7c0 |  61 6e 20 61 64 64 20 74 6f 6f 6c 73 20 76 69 61    0a 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f  | an.add.tools.via.`gptel-make-too | 
| 3e7e0 |  6c 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a    20 20 28 66 75 6e 63 74 69 6f 6e 20 6e 69 6c 20  | l',.which.see."...(function.nil. | 
| 3e800 |  3a 74 79 70 65 20 66 75 6e 63 74 69 6f 6e 20 3a    64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 46  | :type.function.:documentation."F | 
| 3e820 |  75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 75 6e    73 20 74 68 65 20 74 6f 6f 6c 22 29 0a 20 20 28  | unction.that.runs.the.tool")...( | 
| 3e840 |  6e 61 6d 65 20 6e 69 6c 20 3a 74 79 70 65 20 73    74 72 69 6e 67 20 3a 64 6f 63 75 6d 65 6e 74 61  | name.nil.:type.string.:documenta | 
| 3e860 |  74 69 6f 6e 20 22 54 6f 6f 6c 20 6e 61 6d 65 2c    20 73 6e 61 6b 65 5f 63 61 73 65 20 72 65 63 6f  | tion."Tool.name,.snake_case.reco | 
| 3e880 |  6d 6d 65 6e 64 65 64 22 29 0a 20 20 28 64 65 73    63 72 69 70 74 69 6f 6e 20 6e 69 6c 20 3a 74 79  | mmended")...(description.nil.:ty | 
| 3e8a0 |  70 65 20 73 74 72 69 6e 67 20 3a 64 6f 63 75 6d    65 6e 74 61 74 69 6f 6e 20 22 57 68 61 74 20 74  | pe.string.:documentation."What.t | 
| 3e8c0 |  68 65 20 74 6f 6f 6c 20 64 6f 65 73 2c 20 69 6e    74 65 6e 64 65 64 20 66 6f 72 20 74 68 65 20 4c  | he.tool.does,.intended.for.the.L | 
| 3e8e0 |  4c 4d 22 29 0a 20 20 28 61 72 67 73 20 6e 69 6c    20 3a 74 79 70 65 20 6c 69 73 74 20 3a 64 6f 63  | LM")...(args.nil.:type.list.:doc | 
| 3e900 |  75 6d 65 6e 74 61 74 69 6f 6e 20 22 4c 69 73 74    20 6f 66 20 70 6c 69 73 74 73 20 73 70 65 63 69  | umentation."List.of.plists.speci | 
| 3e920 |  66 79 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 61    72 67 75 6d 65 6e 74 73 22 29 0a 20 20 28 61 73  | fying.function.arguments")...(as | 
| 3e940 |  79 6e 63 20 6e 69 6c 20 3a 74 79 70 65 20 62 6f    6f 6c 65 61 6e 20 3a 64 6f 63 75 6d 65 6e 74 61  | ync.nil.:type.boolean.:documenta | 
| 3e960 |  74 69 6f 6e 20 22 57 68 65 74 68 65 72 20 74 68    65 20 66 75 6e 63 74 69 6f 6e 20 72 75 6e 73 20  | tion."Whether.the.function.runs. | 
| 3e980 |  61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 22 29    0a 20 20 28 63 61 74 65 67 6f 72 79 20 6e 69 6c  | asynchronously")...(category.nil | 
| 3e9a0 |  20 3a 74 79 70 65 20 73 74 72 69 6e 67 20 3a 64    6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 22 55 73  | .:type.string.:documentation."Us | 
| 3e9c0 |  65 20 74 6f 20 67 72 6f 75 70 20 74 6f 6f 6c 73    20 62 79 20 70 75 72 70 6f 73 65 22 29 0a 20 20  | e.to.group.tools.by.purpose")... | 
| 3e9e0 |  28 63 6f 6e 66 69 72 6d 20 6e 69 6c 20 3a 74 79    70 65 20 62 6f 6f 6c 65 61 6e 20 3a 64 6f 63 75  | (confirm.nil.:type.boolean.:docu | 
| 3ea00 |  6d 65 6e 74 61 74 69 6f 6e 20 22 53 65 65 6b 20    63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 62 65 66  | mentation."Seek.confirmation.bef | 
| 3ea20 |  6f 72 65 20 72 75 6e 6e 69 6e 67 20 74 6f 6f 6c    3f 22 29 0a 20 20 28 69 6e 63 6c 75 64 65 20 6e  | ore.running.tool?")...(include.n | 
| 3ea40 |  69 6c 20 3a 74 79 70 65 20 62 6f 6f 6c 65 61 6e    20 3a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  | il.:type.boolean.:documentation. | 
| 3ea60 |  22 49 6e 63 6c 75 64 65 20 74 6f 6f 6c 20 72 65    73 75 6c 74 73 20 69 6e 20 62 75 66 66 65 72 3f  | "Include.tool.results.in.buffer? | 
| 3ea80 |  22 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65    6c 2d 2d 70 72 65 70 72 6f 63 65 73 73 2d 74 6f  | "))..(defun.gptel--preprocess-to | 
| 3eaa0 |  6f 6c 2d 61 72 67 73 20 28 73 70 65 63 29 0a 20    20 22 43 6f 6e 76 65 72 74 20 73 79 6d 62 6f 6c  | ol-args.(spec)..."Convert.symbol | 
| 3eac0 |  20 3a 74 79 70 65 20 76 61 6c 75 65 73 20 69 6e    20 74 6f 6f 6c 20 53 50 45 43 20 74 6f 20 73 74  | .:type.values.in.tool.SPEC.to.st | 
| 3eae0 |  72 69 6e 67 73 20 64 65 73 74 72 75 63 74 69 76    65 6c 79 2e 22 0a 20 20 3b 3b 20 4e 4f 54 45 3a  | rings.destructively."...;;.NOTE: | 
| 3eb00 |  20 44 6f 20 6e 6f 74 20 75 73 65 20 60 73 65 71    75 65 6e 63 65 70 27 20 68 65 72 65 2c 20 61 73  | .Do.not.use.`sequencep'.here,.as | 
| 3eb20 |  20 74 68 61 74 20 63 6f 76 65 72 73 20 73 74 72    69 6e 67 73 20 74 6f 6f 20 61 6e 64 20 62 72 65  | .that.covers.strings.too.and.bre | 
| 3eb40 |  61 6b 73 0a 20 20 3b 3b 20 74 68 69 6e 67 73 2e    0a 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6c 69  | aks...;;.things....(when.(or.(li | 
| 3eb60 |  73 74 70 20 73 70 65 63 29 20 28 76 65 63 74 6f    72 70 20 73 70 65 63 29 29 0a 20 20 20 20 28 63  | stp.spec).(vectorp.spec)).....(c | 
| 3eb80 |  6f 6e 64 0a 20 20 20 20 20 28 28 76 65 63 74 6f    72 70 20 73 70 65 63 29 0a 20 20 20 20 20 20 28  | ond......((vectorp.spec).......( | 
| 3eba0 |  63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 65 6c 65 6d    65 6e 74 20 61 63 72 6f 73 73 20 73 70 65 63 0a  | cl-loop.for.element.across.spec. | 
| 3ebc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66    6f 72 20 69 64 78 20 75 70 66 72 6f 6d 20 30 0a  | ...............for.idx.upfrom.0. | 
| 3ebe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64    6f 20 28 61 73 65 74 20 73 70 65 63 20 69 64 78  | ...............do.(aset.spec.idx | 
| 3ec00 |  20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f 63    65 73 73 2d 74 6f 6f 6c 2d 61 72 67 73 20 65 6c  | .(gptel--preprocess-tool-args.el | 
| 3ec20 |  65 6d 65 6e 74 29 29 29 29 0a 20 20 20 20 20 28    28 6b 65 79 77 6f 72 64 70 20 28 63 61 72 20 73  | ement))))......((keywordp.(car.s | 
| 3ec40 |  70 65 63 29 29 0a 20 20 20 20 20 20 28 6c 65 74    20 28 28 74 61 69 6c 20 73 70 65 63 29 29 0a 20  | pec)).......(let.((tail.spec)).. | 
| 3ec60 |  20 20 20 20 20 20 20 28 77 68 69 6c 65 20 74 61    69 6c 0a 20 20 20 20 20 20 20 20 20 20 28 77 68  | .......(while.tail...........(wh | 
| 3ec80 |  65 6e 20 28 61 6e 64 20 28 65 71 20 28 63 61 72    20 74 61 69 6c 29 20 3a 74 79 70 65 29 20 28 73  | en.(and.(eq.(car.tail).:type).(s | 
| 3eca0 |  79 6d 62 6f 6c 70 20 28 63 61 64 72 20 74 61 69    6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ymbolp.(cadr.tail)))............ | 
| 3ecc0 |  20 28 73 65 74 63 61 72 20 28 63 64 72 20 74 61    69 6c 29 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65  | .(setcar.(cdr.tail).(symbol-name | 
| 3ece0 |  20 28 63 61 64 72 20 74 61 69 6c 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44  | .(cadr.tail))))...........;;.TOD | 
| 3ed00 |  4f 3a 20 48 61 6e 64 6c 65 20 3a 65 6e 75 6d 20    28 22 70 72 6f 76 69 64 65 64 22 20 22 61 73 22  | O:.Handle.:enum.("provided"."as" | 
| 3ed20 |  20 22 6c 69 73 74 22 29 20 68 65 72 65 2c 20 63    6f 6e 76 65 72 74 20 74 6f 0a 20 20 20 20 20 20  | ."list").here,.convert.to....... | 
| 3ed40 |  20 20 20 20 3b 3b 20 3a 65 6e 75 6d 20 5b 22 70    72 6f 76 69 64 65 64 22 20 22 61 73 22 20 22 61  | ....;;.:enum.["provided"."as"."a | 
| 3ed60 |  72 72 61 79 22 5d 0a 20 20 20 20 20 20 20 20 20    20 28 77 68 65 6e 20 28 6f 72 20 28 6c 69 73 74  | rray"]...........(when.(or.(list | 
| 3ed80 |  70 20 28 63 61 64 72 20 74 61 69 6c 29 29 20 28    76 65 63 74 6f 72 70 20 28 63 61 64 72 20 74 61  | p.(cadr.tail)).(vectorp.(cadr.ta | 
| 3eda0 |  69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 70 72 65 70 72 6f  | il))).............(gptel--prepro | 
| 3edc0 |  63 65 73 73 2d 74 6f 6f 6c 2d 61 72 67 73 20 28    63 61 64 72 20 74 61 69 6c 29 29 29 0a 20 20 20  | cess-tool-args.(cadr.tail))).... | 
| 3ede0 |  20 20 20 20 20 20 20 28 73 65 74 71 20 74 61 69    6c 20 28 63 64 64 72 20 74 61 69 6c 29 29 29 29  | .......(setq.tail.(cddr.tail)))) | 
| 3ee00 |  29 0a 20 20 20 20 20 28 28 6c 69 73 74 70 20 73    70 65 63 29 20 28 64 6f 6c 69 73 74 20 28 65 6c  | )......((listp.spec).(dolist.(el | 
| 3ee20 |  65 6d 65 6e 74 20 73 70 65 63 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ement.spec)..................... | 
| 3ee40 |  20 28 77 68 65 6e 20 28 6c 69 73 74 70 20 65 6c    65 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20  | .(when.(listp.element).......... | 
| 3ee60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67    70 74 65 6c 2d 2d 70 72 65 70 72 6f 63 65 73 73  | ..............(gptel--preprocess | 
| 3ee80 |  2d 74 6f 6f 6c 2d 61 72 67 73 20 65 6c 65 6d 65    6e 74 29 29 29 29 29 29 0a 20 20 73 70 65 63 29  | -tool-args.element))))))...spec) | 
| 3eea0 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d    6d 61 6b 65 2d 74 6f 6f 6c 20 28 26 72 65 73 74  | ..(defun.gptel--make-tool.(&rest | 
| 3eec0 |  20 73 70 65 63 29 0a 20 20 22 43 6f 6e 73 74 72    75 63 74 20 61 20 67 70 74 65 6c 2d 74 6f 6f 6c  | .spec)..."Construct.a.gptel-tool | 
| 3eee0 |  20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 53 50    45 43 2e 22 0a 20 20 28 67 70 74 65 6c 2d 2d 70  | .according.to.SPEC."...(gptel--p | 
| 3ef00 |  72 65 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 61    72 67 73 20 28 70 6c 69 73 74 2d 67 65 74 20 73  | reprocess-tool-args.(plist-get.s | 
| 3ef20 |  70 65 63 20 3a 61 72 67 73 29 29 0a 20 20 28 61    70 70 6c 79 20 23 27 67 70 74 65 6c 2d 2d 6d 61  | pec.:args))...(apply.#'gptel--ma | 
| 3ef40 |  6b 65 2d 74 6f 6f 6c 2d 69 6e 74 65 72 6e 61 6c    20 73 70 65 63 29 29 0a 0a 28 64 65 66 76 61 72  | ke-tool-internal.spec))..(defvar | 
| 3ef60 |  20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f    6f 6c 73 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74  | .gptel--known-tools.nil..."Alist | 
| 3ef80 |  20 6f 66 20 67 70 74 65 6c 20 74 6f 6f 6c 73 20    61 72 72 61 6e 67 65 64 20 62 79 20 63 61 74 65  | .of.gptel.tools.arranged.by.cate | 
| 3efa0 |  67 6f 72 79 2e 0a 0a 41 20 5c 22 74 6f 6f 6c 5c    22 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20  | gory...A.\"tool\".is.a.function. | 
| 3efc0 |  73 70 65 63 20 28 64 65 66 69 6e 69 74 69 6f 6e    20 61 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e  | spec.(definition.and.description | 
| 3efe0 |  29 0a 70 72 6f 76 69 64 65 64 20 62 79 20 67 70    74 65 6c 20 74 6f 20 61 6e 20 4c 4c 4d 2e 20 20  | ).provided.by.gptel.to.an.LLM... | 
| 3f000 |  53 65 65 20 60 67 70 74 65 6c 2d 74 6f 6f 6c 27    2e 20 20 45 61 63 68 20 74 6f 6f 6c 20 69 73 0a  | See.`gptel-tool'...Each.tool.is. | 
| 3f020 |  61 73 73 69 67 6e 65 64 20 61 20 63 61 74 65 67    6f 72 79 20 77 68 65 6e 20 69 74 20 69 73 20 63  | assigned.a.category.when.it.is.c | 
| 3f040 |  72 65 61 74 65 64 2c 20 77 69 74 68 20 61 20 63    61 74 65 67 6f 72 79 20 6f 66 0a 5c 22 6d 69 73  | reated,.with.a.category.of.\"mis | 
| 3f060 |  63 5c 22 20 69 66 20 6e 6f 6e 65 20 69 73 20 73    70 65 63 69 66 69 65 64 2e 0a 0a 54 68 69 73 20  | c\".if.none.is.specified...This. | 
| 3f080 |  69 73 20 61 20 74 77 6f 2d 6c 65 76 65 6c 20 61    6c 69 73 74 20 6d 61 70 70 69 6e 67 20 63 61 74  | is.a.two-level.alist.mapping.cat | 
| 3f0a0 |  65 67 6f 72 69 65 73 20 61 6e 64 20 74 6f 6f 6c    20 6e 61 6d 65 73 20 74 6f 0a 74 68 65 20 74 6f  | egories.and.tool.names.to.the.to | 
| 3f0c0 |  6f 6c 20 69 74 73 65 6c 66 2e 20 20 49 74 20 69    73 20 75 73 65 64 20 61 73 20 61 20 67 6c 6f 62  | ol.itself...It.is.used.as.a.glob | 
| 3f0e0 |  61 6c 20 72 65 67 69 73 74 65 72 20 6f 66 20 61    76 61 69 6c 61 62 6c 65 0a 74 6f 6f 6c 73 20 61  | al.register.of.available.tools.a | 
| 3f100 |  6e 64 20 69 6e 20 67 70 74 65 6c 27 73 20 55 49    2c 20 73 65 65 20 60 67 70 74 65 6c 2d 74 6f 6f  | nd.in.gptel's.UI,.see.`gptel-too | 
| 3f120 |  6c 73 27 2e 0a 0a 49 6e 20 74 68 69 73 20 65 78    61 6d 70 6c 65 20 73 74 72 75 63 74 75 72 65 2c  | ls'...In.this.example.structure, | 
| 3f140 |  20 63 61 74 2d 74 6f 6f 6c 20 61 6e 64 20 74 68    65 20 72 65 73 74 20 61 72 65 20 63 6c 2d 73 74  | .cat-tool.and.the.rest.are.cl-st | 
| 3f160 |  72 75 63 74 73 0a 6f 66 20 74 79 70 65 20 60 67    70 74 65 6c 2d 74 6f 6f 6c 27 3a 0a 0a 20 20 20  | ructs.of.type.`gptel-tool':..... | 
| 3f180 |  43 41 54 45 47 4f 52 59 20 20 20 20 20 20 20 20    20 54 4f 4f 4c 20 4e 41 4d 45 20 20 20 20 20 20  | CATEGORY.........TOOL.NAME...... | 
| 3f1a0 |  20 20 20 20 54 4f 4f 4c 0a 20 28 28 5c 22 66 69    6c 65 73 79 73 74 65 6d 5c 22 20 2e 20 28 28 5c  | ....TOOL..((\"filesystem\"...((\ | 
| 3f1c0 |  22 72 65 61 64 5f 66 69 6c 65 5c 22 20 20 20 20    20 20 2e 20 63 61 74 2d 74 6f 6f 6c 29 0a 20 20  | "read_file\"........cat-tool)... | 
| 3f1e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 5c 22 6c 69 73 74 5f 64 69 72 65 63 74 6f  | .................(\"list_directo | 
| 3f200 |  72 79 5c 22 20 2e 20 6c 73 2d 74 6f 6f 6c 29 29    29 0a 20 20 28 5c 22 65 6d 61 63 73 5c 22 20 20  | ry\"...ls-tool)))...(\"emacs\".. | 
| 3f220 |  20 20 20 20 2e 20 28 28 5c 22 72 65 61 64 5f 62    75 66 66 65 72 5c 22 20 20 20 20 2e 20 62 75 66  | ......((\"read_buffer\"......buf | 
| 3f240 |  66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 74 6f    6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | fer-substring-tool)............. | 
| 3f260 |  20 20 20 20 20 20 20 28 5c 22 73 65 6e 64 5f 6d    65 73 73 61 67 65 5c 22 20 20 20 2e 20 6d 65 73  | .......(\"send_message\".....mes | 
| 3f280 |  73 61 67 65 2d 74 6f 6f 6c 29 29 29 29 0a 0a 54    68 69 73 20 76 61 72 69 61 62 6c 65 20 69 73 20  | sage-tool))))..This.variable.is. | 
| 3f2a0 |  66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65    20 6f 6e 6c 79 2c 20 74 6f 20 64 65 66 69 6e 65  | for.internal.use.only,.to.define | 
| 3f2c0 |  20 61 20 74 6f 6f 6c 20 75 73 65 0a 60 67 70 74    65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27 2e 22 29  | .a.tool.use.`gptel-make-tool'.") | 
| 3f2e0 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 67    65 74 2d 74 6f 6f 6c 20 28 70 61 74 68 29 0a 20  | ..(defun.gptel-get-tool.(path).. | 
| 3f300 |  20 22 46 69 6e 64 20 74 6f 6f 6c 20 69 6e 20 67    70 74 65 6c 27 73 20 74 6f 6f 6c 20 72 65 67 69  | ."Find.tool.in.gptel's.tool.regi | 
| 3f320 |  73 74 72 79 20 61 74 20 50 41 54 48 2e 0a 0a 50    41 54 48 20 63 61 6e 20 62 65 20 73 70 65 63 69  | stry.at.PATH...PATH.can.be.speci | 
| 3f340 |  66 69 65 64 0a 2d 20 61 73 20 61 20 73 74 72 69    6e 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  | fied.-.as.a.string.representing. | 
| 3f360 |  74 68 65 20 74 6f 6f 6c 20 6e 61 6d 65 2c 20 6c    69 6b 65 20 5c 22 73 65 61 72 63 68 5f 64 62 5c  | the.tool.name,.like.\"search_db\ | 
| 3f380 |  22 2c 0a 2d 20 6f 72 20 61 73 20 61 20 6c 69 73    74 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61  | ",.-.or.as.a.list.representing.a | 
| 3f3a0 |  20 63 61 74 65 67 6f 72 79 20 61 6e 64 20 74 6f    6f 6c 20 6e 61 6d 65 2c 0a 20 20 6c 69 6b 65 20  | .category.and.tool.name,...like. | 
| 3f3c0 |  5c 5c 3d 27 28 5c 22 65 6d 61 63 73 5c 22 20 5c    22 72 65 61 64 5f 62 75 66 66 65 72 5c 22 29 2e  | \\='(\"emacs\".\"read_buffer\"). | 
| 3f3e0 |  0a 49 6e 20 62 6f 74 68 20 63 61 73 65 73 2c 20    74 68 65 20 66 69 72 73 74 20 6d 61 74 63 68 69  | .In.both.cases,.the.first.matchi | 
| 3f400 |  6e 67 20 67 70 74 65 6c 2d 74 6f 6f 6c 20 69 73    20 72 65 74 75 72 6e 65 64 2e 0a 0a 2d 20 61 73  | ng.gptel-tool.is.returned...-.as | 
| 3f420 |  20 61 20 73 74 72 69 6e 67 20 72 65 70 72 65 73    65 6e 74 69 6e 67 20 61 20 63 61 74 65 67 6f 72  | .a.string.representing.a.categor | 
| 3f440 |  79 2c 20 6c 69 6b 65 20 5c 22 66 69 6c 65 73 79    73 74 65 6d 5c 22 2e 0a 49 6e 20 74 68 69 73 20  | y,.like.\"filesystem\"..In.this. | 
| 3f460 |  63 61 73 65 20 61 20 6c 69 73 74 20 6f 66 20 61    6c 6c 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 77  | case.a.list.of.all.gptel-tools.w | 
| 3f480 |  69 74 68 20 74 68 69 73 20 63 61 74 65 67 6f 72    79 20 69 73 0a 72 65 74 75 72 6e 65 64 2e 22 0a  | ith.this.category.is.returned.". | 
| 3f4a0 |  20 20 28 6f 72 20 28 63 6c 2d 65 74 79 70 65 63    61 73 65 20 70 61 74 68 0a 20 20 20 20 20 20 20  | ..(or.(cl-etypecase.path........ | 
| 3f4c0 |  20 28 63 6f 6e 73 20 28 6c 65 74 20 28 28 74 63    20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74  | .(cons.(let.((tc.(map-nested-elt | 
| 3f4e0 |  20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f    6f 6c 73 20 70 61 74 68 29 29 29 0a 20 20 20 20  | .gptel--known-tools.path)))..... | 
| 3f500 |  20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20    28 63 6f 6e 73 70 20 74 63 29 20 28 6d 61 70 2d  | ............(if.(consp.tc).(map- | 
| 3f520 |  76 61 6c 75 65 73 20 74 63 29 20 74 63 29 29 29    0a 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67  | values.tc).tc))).........(string | 
| 3f540 |  20 28 69 66 2d 6c 65 74 2a 20 28 28 63 61 74 65    67 6f 72 79 20 28 61 73 73 6f 63 20 70 61 74 68  | .(if-let*.((category.(assoc.path | 
| 3f560 |  20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f    6f 6c 73 29 29 29 0a 20 20 20 20 20 20 20 20 20  | .gptel--known-tools))).......... | 
| 3f580 |  20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d    76 61 6c 75 65 73 20 28 63 64 72 20 63 61 74 65  | ...........(map-values.(cdr.cate | 
| 3f5a0 |  67 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f  | gory))...................(cl-loo | 
| 3f5c0 |  70 20 66 6f 72 20 28 5f 20 2e 20 74 6f 6f 6c 73    29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77  | p.for.(_...tools).in.gptel--know | 
| 3f5e0 |  6e 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n-tools......................... | 
| 3f600 |  20 20 20 69 66 20 28 61 73 73 6f 63 20 70 61 74    68 20 74 6f 6f 6c 73 29 0a 20 20 20 20 20 20 20  | ...if.(assoc.path.tools)........ | 
| 3f620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 72 65 74 75 72 6e 20 28 63 64 72 20  | ....................return.(cdr. | 
| 3f640 |  69 74 29 29 29 29 29 0a 20 20 20 20 20 20 28 65    72 72 6f 72 20 22 4e 6f 20 74 6f 6f 6c 20 6d 61  | it))))).......(error."No.tool.ma | 
| 3f660 |  74 63 68 65 73 20 66 6f 72 20 25 53 22 20 70 61    74 68 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | tches.for.%S".path)))..(defun.gp | 
| 3f680 |  74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 20 28 26    72 65 73 74 20 73 6c 6f 74 73 29 0a 20 20 22 4d  | tel-make-tool.(&rest.slots)..."M | 
| 3f6a0 |  61 6b 65 20 61 20 67 70 74 65 6c 20 74 6f 6f 6c    20 66 6f 72 20 4c 4c 4d 20 75 73 65 2e 0a 0a 54  | ake.a.gptel.tool.for.LLM.use...T | 
| 3f6c0 |  68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79    77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 20 61  | he.following.keyword.arguments.a | 
| 3f6e0 |  72 65 20 61 76 61 69 6c 61 62 6c 65 2c 20 6f 66    20 77 68 69 63 68 20 74 68 65 20 66 69 72 73 74  | re.available,.of.which.the.first | 
| 3f700 |  0a 66 6f 75 72 20 61 72 65 20 72 65 71 75 69 72    65 64 2e 0a 0a 4e 41 4d 45 3a 20 54 68 65 20 6e  | .four.are.required...NAME:.The.n | 
| 3f720 |  61 6d 65 20 6f 66 20 74 68 65 20 74 6f 6f 6c 2c    20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 6f 20  | ame.of.the.tool,.recommended.to. | 
| 3f740 |  62 65 20 69 6e 20 4a 61 76 61 73 63 72 69 70 74    20 73 74 79 6c 65 20 73 6e 61 6b 65 5f 63 61 73  | be.in.Javascript.style.snake_cas | 
| 3f760 |  65 2e 0a 0a 46 55 4e 43 54 49 4f 4e 3a 20 54 68    65 20 66 75 6e 63 74 69 6f 6e 20 69 74 73 65 6c  | e...FUNCTION:.The.function.itsel | 
| 3f780 |  66 20 28 6c 61 6d 62 64 61 20 6f 72 20 73 79 6d    62 6f 6c 29 20 74 68 61 74 20 72 75 6e 73 20 74  | f.(lambda.or.symbol).that.runs.t | 
| 3f7a0 |  68 65 20 74 6f 6f 6c 2e 0a 0a 44 45 53 43 52 49    50 54 49 4f 4e 3a 20 41 20 76 65 72 62 6f 73 65  | he.tool...DESCRIPTION:.A.verbose | 
| 3f7c0 |  20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20    77 68 61 74 20 74 68 65 20 74 6f 6f 6c 20 64 6f  | .description.of.what.the.tool.do | 
| 3f7e0 |  65 73 2c 20 68 6f 77 20 74 6f 0a 63 61 6c 6c 20    69 74 20 61 6e 64 20 77 68 61 74 20 69 74 20 72  | es,.how.to.call.it.and.what.it.r | 
| 3f800 |  65 74 75 72 6e 73 2e 0a 0a 41 52 47 53 3a 20 41    20 6c 69 73 74 20 6f 66 20 70 6c 69 73 74 73 20  | eturns...ARGS:.A.list.of.plists. | 
| 3f820 |  73 70 65 63 69 66 79 69 6e 67 20 74 68 65 20 61    72 67 75 6d 65 6e 74 73 2c 20 6f 72 20 6e 69 6c  | specifying.the.arguments,.or.nil | 
| 3f840 |  20 66 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20    74 68 61 74 0a 74 61 6b 65 73 20 6e 6f 20 61 72  | .for.a.function.that.takes.no.ar | 
| 3f860 |  67 75 6d 65 6e 74 73 2e 20 20 45 61 63 68 20 70    6c 69 73 74 20 69 6e 20 41 52 47 53 20 72 65 71  | guments...Each.plist.in.ARGS.req | 
| 3f880 |  75 69 72 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77    69 6e 67 20 6b 65 79 73 3a 0a 2d 20 61 72 67 75  | uires.the.following.keys:.-.argu | 
| 3f8a0 |  6d 65 6e 74 20 3a 6e 61 6d 65 20 61 6e 64 20 3a    64 65 73 63 72 69 70 74 69 6f 6e 2c 20 61 73 20  | ment.:name.and.:description,.as. | 
| 3f8c0 |  73 74 72 69 6e 67 73 2e 0a 2d 20 61 72 67 75 6d    65 6e 74 20 3a 74 79 70 65 2c 20 61 73 20 61 20  | strings..-.argument.:type,.as.a. | 
| 3f8e0 |  73 79 6d 62 6f 6c 2e 20 20 41 6c 6c 6f 77 65 64    20 74 79 70 65 73 20 61 72 65 20 74 68 6f 73 65  | symbol...Allowed.types.are.those | 
| 3f900 |  20 75 6e 64 65 72 73 74 6f 6f 64 20 62 79 20 74    68 65 20 4a 53 4f 4e 0a 20 20 73 63 68 65 6d 61  | .understood.by.the.JSON...schema | 
| 3f920 |  3a 20 73 74 72 69 6e 67 2c 20 6e 75 6d 62 65 72    2c 20 69 6e 74 65 67 65 72 2c 20 62 6f 6f 6c 65  | :.string,.number,.integer,.boole | 
| 3f940 |  61 6e 2c 20 61 72 72 61 79 2c 20 6f 62 6a 65 63    74 20 6f 72 20 6e 75 6c 6c 0a 0a 54 68 65 20 66  | an,.array,.object.or.null..The.f | 
| 3f960 |  6f 6c 6c 6f 77 69 6e 67 20 70 6c 69 73 74 20 6b    65 79 73 20 61 72 65 20 63 6f 6e 64 69 74 69 6f  | ollowing.plist.keys.are.conditio | 
| 3f980 |  6e 61 6c 2f 6f 70 74 69 6f 6e 61 6c 3a 0a 2d 20    3a 6f 70 74 69 6f 6e 61 6c 2c 20 62 6f 6f 6c 65  | nal/optional:.-.:optional,.boole | 
| 3f9a0 |  61 6e 20 69 6e 64 69 63 61 74 69 6e 67 20 69 66    20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 70 74  | an.indicating.if.argument.is.opt | 
| 3f9c0 |  69 6f 6e 61 6c 0a 2d 20 3a 65 6e 75 6d 20 66 6f    72 20 65 6e 75 6d 65 72 61 74 65 64 20 74 79 70  | ional.-.:enum.for.enumerated.typ | 
| 3f9e0 |  65 73 2c 20 77 68 6f 73 65 20 76 61 6c 75 65 20    69 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 73  | es,.whose.value.is.a.vector.of.s | 
| 3fa00 |  74 72 69 6e 67 73 20 72 65 70 72 65 73 65 6e 74    69 6e 67 0a 20 20 61 6c 6c 6f 77 65 64 20 76 61  | trings.representing...allowed.va | 
| 3fa20 |  6c 75 65 73 2e 20 20 4e 6f 74 65 20 74 68 61 74    20 3a 74 79 70 65 20 69 73 20 73 74 69 6c 6c 20  | lues...Note.that.:type.is.still. | 
| 3fa40 |  72 65 71 75 69 72 65 64 20 66 6f 72 20 65 6e 75    6d 73 2e 0a 2d 20 3a 69 74 65 6d 73 2c 20 69 66  | required.for.enums..-.:items,.if | 
| 3fa60 |  20 74 68 65 20 3a 74 79 70 65 20 69 73 20 61 72    72 61 79 2e 20 20 49 74 73 20 76 61 6c 75 65 20  | .the.:type.is.array...Its.value. | 
| 3fa80 |  6d 75 73 74 20 62 65 20 61 20 70 6c 69 73 74 20    69 6e 63 6c 75 64 69 6e 67 20 61 74 20 6c 65 61  | must.be.a.plist.including.at.lea | 
| 3faa0 |  73 74 0a 20 20 74 68 65 20 69 74 65 6d 27 73 20    3a 74 79 70 65 2e 0a 2d 20 3a 70 72 6f 70 65 72  | st...the.item's.:type..-.:proper | 
| 3fac0 |  74 69 65 73 2c 20 69 66 20 74 68 65 20 74 79 70    65 20 69 73 20 6f 62 6a 65 63 74 2e 20 20 49 74  | ties,.if.the.type.is.object...It | 
| 3fae0 |  73 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20    61 20 70 6c 69 73 74 20 74 68 61 74 20 63 61 6e  | s.value.must.be.a.plist.that.can | 
| 3fb00 |  20 62 65 0a 20 20 73 65 72 69 61 6c 69 7a 65 64    20 69 6e 74 6f 20 61 20 4a 53 4f 4e 20 6f 62 6a  | .be...serialized.into.a.JSON.obj | 
| 3fb20 |  65 63 74 20 73 70 65 63 69 66 69 63 61 74 69 6f    6e 20 62 79 20 60 6a 73 6f 6e 2d 73 65 72 69 61  | ect.specification.by.`json-seria | 
| 3fb40 |  6c 69 7a 65 27 2e 0a 0a 41 53 59 4e 43 3a 20 62    6f 6f 6c 65 61 6e 20 69 6e 64 69 63 61 74 69 6e  | lize'...ASYNC:.boolean.indicatin | 
| 3fb60 |  67 20 69 66 20 74 68 65 20 65 6c 69 73 70 20 66    75 6e 63 74 69 6f 6e 20 69 73 20 61 73 79 6e 63  | g.if.the.elisp.function.is.async | 
| 3fb80 |  68 72 6f 6e 6f 75 73 2e 0a 49 66 20 41 53 59 4e    43 20 69 73 20 74 2c 20 74 68 65 20 66 75 6e 63  | hronous..If.ASYNC.is.t,.the.func | 
| 3fba0 |  74 69 6f 6e 20 73 68 6f 75 6c 64 20 74 61 6b 65    20 61 20 63 61 6c 6c 62 61 63 6b 20 61 73 20 69  | tion.should.take.a.callback.as.i | 
| 3fbc0 |  74 73 20 66 69 72 73 74 0a 61 72 67 75 6d 65 6e    74 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68  | ts.first.argument,.along.with.th | 
| 3fbe0 |  65 20 61 72 67 75 6d 65 6e 74 73 20 73 70 65 63    69 66 69 65 64 20 69 6e 20 41 52 47 53 2c 20 61  | e.arguments.specified.in.ARGS,.a | 
| 3fc00 |  6e 64 20 72 75 6e 20 74 68 65 0a 63 61 6c 6c 62    61 63 6b 20 77 69 74 68 20 74 68 65 20 74 6f 6f  | nd.run.the.callback.with.the.too | 
| 3fc20 |  6c 20 63 61 6c 6c 20 72 65 73 75 6c 74 20 77 68    65 6e 20 69 74 27 73 20 72 65 61 64 79 2e 20 20  | l.call.result.when.it's.ready... | 
| 3fc40 |  54 68 65 20 63 61 6c 6c 62 61 63 6b 0a 69 74 73    65 6c 66 20 69 73 20 61 6e 20 69 6d 70 6c 65 6d  | The.callback.itself.is.an.implem | 
| 3fc60 |  65 6e 74 61 74 69 6f 6e 20 64 65 74 61 69 6c 20    61 6e 64 20 6d 75 73 74 20 6e 6f 74 20 62 65 20  | entation.detail.and.must.not.be. | 
| 3fc80 |  69 6e 63 6c 75 64 65 64 20 69 6e 0a 41 52 47 53    2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  | included.in.ARGS...The.following | 
| 3fca0 |  20 6b 65 79 73 20 61 72 65 20 6f 70 74 69 6f 6e    61 6c 0a 0a 43 41 54 45 47 4f 52 59 3a 20 41 20  | .keys.are.optional..CATEGORY:.A. | 
| 3fcc0 |  73 74 72 69 6e 67 20 69 6e 64 69 63 61 74 69 6e    67 20 61 20 63 61 74 65 67 6f 72 79 20 66 6f 72  | string.indicating.a.category.for | 
| 3fce0 |  20 74 68 65 20 74 6f 6f 6c 2e 20 20 54 68 69 73    20 69 73 0a 75 73 65 64 20 6f 6e 6c 79 20 66 6f  | .the.tool...This.is.used.only.fo | 
| 3fd00 |  72 20 67 72 6f 75 70 69 6e 67 20 69 6e 20 67 70    74 65 6c 27 73 20 55 49 2e 20 20 44 65 66 61 75  | r.grouping.in.gptel's.UI...Defau | 
| 3fd20 |  6c 74 73 20 74 6f 20 5c 22 6d 69 73 63 5c 22 2e    0a 0a 43 4f 4e 46 49 52 4d 3a 20 57 68 65 74 68  | lts.to.\"misc\"...CONFIRM:.Wheth | 
| 3fd40 |  65 72 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c    20 73 68 6f 75 6c 64 20 77 61 69 74 20 66 6f 72  | er.the.tool.call.should.wait.for | 
| 3fd60 |  20 74 68 65 20 75 73 65 72 20 74 6f 20 72 75 6e    0a 69 74 2e 20 20 49 66 20 74 72 75 65 2c 20 74  | .the.user.to.run.it...If.true,.t | 
| 3fd80 |  68 65 20 75 73 65 72 20 77 69 6c 6c 20 62 65 20    70 72 6f 6d 70 74 65 64 20 77 69 74 68 20 74 68  | he.user.will.be.prompted.with.th | 
| 3fda0 |  65 20 70 72 6f 70 6f 73 65 64 20 74 6f 6f 6c 0a    63 61 6c 6c 2c 20 77 68 69 63 68 20 63 61 6e 20  | e.proposed.tool.call,.which.can. | 
| 3fdc0 |  62 65 20 65 78 61 6d 69 6e 65 64 2c 20 61 63 63    65 70 74 65 64 2c 20 64 65 66 65 72 72 65 64 20  | be.examined,.accepted,.deferred. | 
| 3fde0 |  6f 72 20 63 61 6e 63 65 6c 65 64 2e 0a 0a 49 4e    43 4c 55 44 45 3a 20 57 68 65 74 68 65 72 20 74  | or.canceled...INCLUDE:.Whether.t | 
| 3fe00 |  68 65 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 20    73 68 6f 75 6c 64 20 62 65 20 69 6e 63 6c 75 64  | he.tool.results.should.be.includ | 
| 3fe20 |  65 64 20 61 73 20 70 61 72 74 20 6f 66 0a 74 68    65 20 4c 4c 4d 20 6f 75 74 70 75 74 2e 20 20 54  | ed.as.part.of.the.LLM.output...T | 
| 3fe40 |  68 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f    72 20 6c 6f 67 67 69 6e 67 20 61 6e 64 20 61 73  | his.is.useful.for.logging.and.as | 
| 3fe60 |  20 63 6f 6e 74 65 78 74 20 66 6f 72 0a 73 75 62    73 65 71 75 65 6e 74 20 72 65 71 75 65 73 74 73  | .context.for.subsequent.requests | 
| 3fe80 |  20 69 6e 20 74 68 65 20 73 61 6d 65 20 62 75 66    66 65 72 2e 20 20 54 68 69 73 20 69 73 20 70 72  | .in.the.same.buffer...This.is.pr | 
| 3fea0 |  69 6d 61 72 69 6c 79 20 75 73 65 66 75 6c 0a 69    6e 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a  | imarily.useful.in.chat.buffers.. | 
| 3fec0 |  0a 48 65 72 65 20 69 73 20 61 6e 20 65 78 61 6d    70 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e 3a 0a  | .Here.is.an.example.definition:. | 
| 3fee0 |  0a 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 74    6f 6f 6c 0a 20 20 20 3a 66 75 6e 63 74 69 6f 6e  | ...(gptel-make-tool....:function | 
| 3ff00 |  20 28 6c 61 6d 62 64 61 20 28 6c 6f 63 61 74 69    6f 6e 20 75 6e 69 74 29 0a 20 20 20 20 20 20 20  | .(lambda.(location.unit)........ | 
| 3ff20 |  20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65    74 72 69 65 76 65 2d 73 79 6e 63 68 72 6f 6e 6f  | .........(url-retrieve-synchrono | 
| 3ff40 |  75 73 6c 79 20 5c 22 61 70 69 2e 77 65 61 74 68    65 72 2e 63 6f 6d 2f 2e 2e 2e 5c 22 0a 20 20 20  | usly.\"api.weather.com/...\".... | 
| 3ff60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 3ff80 |  20 20 20 20 20 20 20 20 20 6c 6f 63 61 74 69 6f    6e 20 75 6e 69 74 29 29 0a 20 20 20 3a 6e 61 6d  | .........location.unit))....:nam | 
| 3ffa0 |  65 20 5c 22 67 65 74 5f 77 65 61 74 68 65 72 5c    22 0a 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f  | e.\"get_weather\"....:descriptio | 
| 3ffc0 |  6e 20 5c 22 47 65 74 20 74 68 65 20 63 75 72 72    65 6e 74 20 77 65 61 74 68 65 72 20 69 6e 20 61  | n.\"Get.the.current.weather.in.a | 
| 3ffe0 |  20 67 69 76 65 6e 20 6c 6f 63 61 74 69 6f 6e 5c    22 0a 20 20 20 3a 61 72 67 73 20 28 6c 69 73 74  | .given.location\"....:args.(list | 
| 40000 |  20 5c 5c 3d 27 28 3a 6e 61 6d 65 20 5c 22 6c 6f    63 61 74 69 6f 6e 5c 22 0a 20 20 20 20 20 20 20  | .\\='(:name.\"location\"........ | 
| 40020 |  20 20 20 20 20 20 20 20 20 20 3a 74 79 70 65 20    73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20  | ..........:type.string.......... | 
| 40040 |  20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70    74 69 6f 6e 20 5c 22 54 68 65 20 63 69 74 79 20  | ........:description.\"The.city. | 
| 40060 |  61 6e 64 20 73 74 61 74 65 2c 20 65 2e 67 2e 20    53 61 6e 20 46 72 61 6e 63 69 73 63 6f 2c 20 43  | and.state,.e.g..San.Francisco,.C | 
| 40080 |  41 5c 22 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 5c 5c 3d 27 28 3a 6e 61 6d 65 20 5c  | A\")................\\='(:name.\ | 
| 400a0 |  22 75 6e 69 74 5c 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 74 79 70 65 20 73  | "unit\"..................:type.s | 
| 400c0 |  74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 65 6e 75 6d 20 5b 5c 22  | tring..................:enum.[\" | 
| 400e0 |  63 65 6c 73 69 75 73 5c 22 20 5c 22 66 61 72 65    6e 68 65 69 74 5c 22 5d 0a 20 20 20 20 20 20 20  | celsius\".\"farenheit\"]........ | 
| 40100 |  20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72    69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20  | ..........:description.......... | 
| 40120 |  20 20 20 20 20 20 20 20 5c 22 54 68 65 20 75 6e    69 74 20 6f 66 20 74 65 6d 70 65 72 61 74 75 72  | ........\"The.unit.of.temperatur | 
| 40140 |  65 2c 20 65 69 74 68 65 72 20 5c 5c 3d 27 63 65    6c 73 69 75 73 5c 5c 3d 27 20 6f 72 20 5c 5c 3d  | e,.either.\\='celsius\\='.or.\\= | 
| 40160 |  27 66 61 68 72 65 6e 68 65 69 74 5c 5c 3d 27 5c    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | 'fahrenheit\\='\"............... | 
| 40180 |  20 20 20 3a 6f 70 74 69 6f 6e 61 6c 20 74 29 29    29 0a 0a 49 66 20 74 68 65 20 74 6f 6f 6c 20 69  | ...:optional.t)))..If.the.tool.i | 
| 401a0 |  73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20    74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  | s.asynchronous,.the.function.is. | 
| 401c0 |  6d 6f 64 69 66 69 65 64 20 74 6f 20 74 61 6b 65    20 61 0a 63 61 6c 6c 62 61 63 6b 20 61 73 20 69  | modified.to.take.a.callback.as.i | 
| 401e0 |  74 73 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e    74 2c 20 77 68 69 63 68 20 69 74 20 72 75 6e 73  | ts.first.argument,.which.it.runs | 
| 40200 |  20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74    3a 0a 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 63  | .with.the.result:.....(lambda.(c | 
| 40220 |  61 6c 6c 62 61 63 6b 20 6c 6f 63 61 74 69 6f 6e    20 75 6e 69 74 29 0a 20 20 20 20 20 28 75 72 6c  | allback.location.unit)......(url | 
| 40240 |  2d 72 65 74 72 69 65 76 65 20 5c 22 61 70 69 2e    77 65 61 74 68 65 72 2e 63 6f 6d 2f 2e 2e 2e 5c  | -retrieve.\"api.weather.com/...\ | 
| 40260 |  22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29  | "....................(lambda.(_) | 
| 40280 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73  | ......................(let.((res | 
| 402a0 |  75 6c 74 20 28 70 61 72 73 65 2d 74 68 69 73 2d    62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20  | ult.(parse-this-buffer)))....... | 
| 402c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61  | .................(funcall.callba | 
| 402e0 |  63 6b 20 72 65 73 75 6c 74 29 29 29 29 29 22 0a    20 20 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 20 28  | ck.result)))))"...(let*.((tool.( | 
| 40300 |  61 70 70 6c 79 20 23 27 67 70 74 65 6c 2d 2d 6d    61 6b 65 2d 74 6f 6f 6c 20 73 6c 6f 74 73 29 29  | apply.#'gptel--make-tool.slots)) | 
| 40320 |  0a 20 20 20 20 20 20 20 20 20 28 63 61 74 65 67    6f 72 79 20 28 6f 72 20 28 67 70 74 65 6c 2d 74  | ..........(category.(or.(gptel-t | 
| 40340 |  6f 6f 6c 2d 63 61 74 65 67 6f 72 79 20 74 6f 6f    6c 29 20 22 6d 69 73 63 22 29 29 29 0a 20 20 20  | ool-category.tool)."misc"))).... | 
| 40360 |  20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65    74 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70  | .(setf.(alist-get............(gp | 
| 40380 |  74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f    6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 28  | tel-tool-name.tool)............( | 
| 403a0 |  61 6c 69 73 74 2d 67 65 74 20 63 61 74 65 67 6f    72 79 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d  | alist-get.category.gptel--known- | 
| 403c0 |  74 6f 6f 6c 73 20 6e 69 6c 20 6e 69 6c 20 23 27    65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20  | tools.nil.nil.#'equal).......... | 
| 403e0 |  20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61    6c 29 0a 20 20 20 20 20 20 20 20 20 20 74 6f 6f  | ..nil.nil.#'equal)...........too | 
| 40400 |  6c 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e    65 72 69 63 20 67 70 74 65 6c 2d 2d 70 61 72 73  | l)))..(cl-defgeneric.gptel--pars | 
| 40420 |  65 2d 74 6f 6f 6c 73 20 28 5f 62 61 63 6b 65 6e    64 20 74 6f 6f 6c 73 29 0a 20 20 22 50 61 72 73  | e-tools.(_backend.tools)..."Pars | 
| 40440 |  65 20 54 4f 4f 4c 53 20 61 6e 64 20 72 65 74 75    72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f  | e.TOOLS.and.return.a.list.of.pro | 
| 40460 |  6d 70 74 73 2e 0a 0a 54 4f 4f 4c 53 20 69 73 20    61 20 6c 69 73 74 20 6f 66 20 60 67 70 74 65 6c  | mpts...TOOLS.is.a.list.of.`gptel | 
| 40480 |  2d 74 6f 6f 6c 27 20 73 74 72 75 63 74 73 2c 20    77 68 69 63 68 20 73 65 65 2e 0a 0a 5f 42 41 43  | -tool'.structs,.which.see..._BAC | 
| 404a0 |  4b 45 4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20    62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 20  | KEND.is.the.LLM.backend.in.use.. | 
| 404c0 |  20 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66    61 75 6c 74 0a 69 6d 70 6c 65 6d 65 6e 74 61 74  | .This.is.the.default.implementat | 
| 404e0 |  69 6f 6e 2c 20 75 73 65 64 20 62 79 20 4f 70 65    6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 41  | ion,.used.by.OpenAI-compatible.A | 
| 40500 |  50 49 73 20 61 6e 64 20 4f 6c 6c 61 6d 61 2e 22    0a 20 20 28 76 63 6f 6e 63 61 74 0a 20 20 20 28  | PIs.and.Ollama."...(vconcat....( | 
| 40520 |  6d 61 70 63 61 72 0a 20 20 20 20 28 6c 61 6d 62    64 61 20 28 74 6f 6f 6c 29 0a 20 20 20 20 20 20  | mapcar.....(lambda.(tool)....... | 
| 40540 |  28 6c 69 73 74 0a 20 20 20 20 20 20 20 3a 74 79    70 65 20 22 66 75 6e 63 74 69 6f 6e 22 0a 20 20  | (list........:type."function"... | 
| 40560 |  20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e 0a 20    20 20 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20  | .....:function........(append... | 
| 40580 |  20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20    20 20 20 20 20 3a 6e 61 6d 65 20 28 67 70 74 65  | ......(list..........:name.(gpte | 
| 405a0 |  6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c    29 0a 20 20 20 20 20 20 20 20 20 3a 64 65 73 63  | l-tool-name.tool)..........:desc | 
| 405c0 |  72 69 70 74 69 6f 6e 20 28 67 70 74 65 6c 2d 74    6f 6f 6c 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  | ription.(gptel-tool-description. | 
| 405e0 |  74 6f 6f 6c 29 29 0a 20 20 20 20 20 20 20 20 28    69 66 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 61  | tool)).........(if.(gptel-tool-a | 
| 40600 |  72 67 73 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20  | rgs.tool)..............(list.... | 
| 40620 |  20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 61    6d 65 74 65 72 73 0a 20 20 20 20 20 20 20 20 20  | ...........:parameters.......... | 
| 40640 |  20 20 20 20 20 28 6c 69 73 74 20 3a 74 79 70 65    20 22 6f 62 6a 65 63 74 22 0a 20 20 20 20 20 20  | .....(list.:type."object"....... | 
| 40660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 67 70 74 65 6c 27 73 20 74 6f 6f 6c 20 61 72  | ..............;;.gptel's.tool.ar | 
| 40680 |  67 73 20 73 70 65 63 20 69 73 20 63 6c 6f 73 65    20 74 6f 20 74 68 65 20 4a 53 4f 4e 20 73 63 68  | gs.spec.is.close.to.the.JSON.sch | 
| 406a0 |  65 6d 61 2c 20 65 78 63 65 70 74 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ema,.except..................... | 
| 406c0 |  3b 3b 20 74 68 61 74 20 77 65 20 75 73 65 20 28    3a 6e 61 6d 65 20 22 61 72 67 6e 61 6d 65 22 20  | ;;.that.we.use.(:name."argname". | 
| 406e0 |  2e 2e 2e 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 73 74  | ...).....................;;.inst | 
| 40700 |  65 61 64 20 6f 66 20 20 28 3a 61 72 67 6e 61 6d    65 20 28 2e 2e 2e 29 29 2c 20 61 6e 64 0a 20 20  | ead.of..(:argname.(...)),.and... | 
| 40720 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 28 3a 6f 70 74 69 6f 6e 61 6c 20  | ..................;;.(:optional. | 
| 40740 |  74 29 20 66 6f 72 20 65 61 63 68 20 61 72 67 20    69 6e 73 74 65 61 64 20 6f 66 20 28 3a 72 65 71  | t).for.each.arg.instead.of.(:req | 
| 40760 |  75 69 72 65 64 20 5b 2e 2e 2e 5d 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | uired.[...]).................... | 
| 40780 |  20 3b 3b 20 66 6f 72 20 61 6c 6c 20 61 72 67 73    20 61 74 20 6f 6e 63 65 2e 20 20 48 61 6e 64 6c  | .;;.for.all.args.at.once...Handl | 
| 407a0 |  65 20 74 68 69 73 20 64 69 66 66 65 72 65 6e 63    65 20 62 79 0a 20 20 20 20 20 20 20 20 20 20 20  | e.this.difference.by............ | 
| 407c0 |  20 20 20 20 20 20 20 20 20 3b 3b 20 6d 6f 64 69    66 79 69 6e 67 20 61 20 63 6f 70 79 20 6f 66 20  | .........;;.modifying.a.copy.of. | 
| 407e0 |  74 68 65 20 67 70 74 65 6c 20 74 6f 6f 6c 20 61    72 67 20 73 70 65 63 2e 0a 20 20 20 20 20 20 20  | the.gptel.tool.arg.spec......... | 
| 40800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72    6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20  | .............:properties........ | 
| 40820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c    2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20  | .............(cl-loop........... | 
| 40840 |  20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 61    72 67 20 69 6e 20 28 67 70 74 65 6c 2d 74 6f 6f  | ...........for.arg.in.(gptel-too | 
| 40860 |  6c 2d 61 72 67 73 20 74 6f 6f 6c 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l-args.tool).................... | 
| 40880 |  20 20 66 6f 72 20 61 72 67 73 70 65 63 20 3d 20    28 63 6f 70 79 2d 73 65 71 75 65 6e 63 65 20 61  | ..for.argspec.=.(copy-sequence.a | 
| 408a0 |  72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 61 6d  | rg)......................for.nam | 
| 408c0 |  65 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 61    72 67 20 3a 6e 61 6d 65 29 20 3b 68 61 6e 64 6c  | e.=.(plist-get.arg.:name).;handl | 
| 408e0 |  65 64 20 64 69 66 66 65 72 65 6e 74 6c 79 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ed.differently.................. | 
| 40900 |  20 20 20 20 66 6f 72 20 6e 65 77 6e 61 6d 65 20    3d 20 28 6f 72 20 28 61 6e 64 20 28 6b 65 79 77  | ....for.newname.=.(or.(and.(keyw | 
| 40920 |  6f 72 64 70 20 6e 61 6d 65 29 20 6e 61 6d 65 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ordp.name).name)................ | 
| 40940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 79  | ........................(make-sy | 
| 40960 |  6d 62 6f 6c 20 28 63 6f 6e 63 61 74 20 22 3a 22    20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20  | mbol.(concat.":".name)))........ | 
| 40980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..............do................ | 
| 409a0 |  3b 41 52 47 53 50 45 43 20 69 73 20 41 52 47 20    77 69 74 68 6f 75 74 20 75 6e 72 65 63 6f 67 6e  | ;ARGSPEC.is.ARG.without.unrecogn | 
| 409c0 |  69 7a 65 64 20 6b 65 79 73 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ized.keys......................( | 
| 409e0 |  63 6c 2d 72 65 6d 66 20 61 72 67 73 70 65 63 20    3a 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20  | cl-remf.argspec.:name).......... | 
| 40a00 |  20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d    72 65 6d 66 20 61 72 67 73 70 65 63 20 3a 6f 70  | ............(cl-remf.argspec.:op | 
| 40a20 |  74 69 6f 6e 61 6c 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  | tional)......................if. | 
| 40a40 |  28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65    74 20 61 72 67 20 3a 74 79 70 65 29 20 22 6f 62  | (equal.(plist-get.arg.:type)."ob | 
| 40a60 |  6a 65 63 74 22 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28  | ject")......................do.( | 
| 40a80 |  75 6e 6c 65 73 73 20 28 70 6c 69 73 74 2d 6d 65    6d 62 65 72 20 61 72 67 73 70 65 63 20 3a 72 65  | unless.(plist-member.argspec.:re | 
| 40aa0 |  71 75 69 72 65 64 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | quired)......................... | 
| 40ac0 |  20 20 28 70 6c 69 73 74 2d 70 75 74 20 61 72 67    73 70 65 63 20 3a 72 65 71 75 69 72 65 64 20 5b  | ..(plist-put.argspec.:required.[ | 
| 40ae0 |  5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d  | ]))......................(plist- | 
| 40b00 |  70 75 74 20 61 72 67 73 70 65 63 20 3a 61 64 64    69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65  | put.argspec.:additionalPropertie | 
| 40b20 |  73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s.:json-false).................. | 
| 40b40 |  20 20 20 20 61 70 70 65 6e 64 20 28 6c 69 73 74    20 6e 65 77 6e 61 6d 65 20 61 72 67 73 70 65 63  | ....append.(list.newname.argspec | 
| 40b60 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64  | )).....................:required | 
| 40b80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 76 63 6f 6e 63 61 74 0a 20 20  | .....................(vconcat... | 
| 40ba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 64 65 6c 71 20 6e 69 6c 20 28 6d 61  | ...................(delq.nil.(ma | 
| 40bc0 |  70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | pcar............................ | 
| 40be0 |  20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61 72    67 29 20 28 61 6e 64 20 28 6e 6f 74 20 28 70 6c  | .....(lambda.(arg).(and.(not.(pl | 
| 40c00 |  69 73 74 2d 67 65 74 20 61 72 67 20 3a 6f 70 74    69 6f 6e 61 6c 29 29 0a 20 20 20 20 20 20 20 20  | ist-get.arg.:optional))......... | 
| 40c20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 40c40 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74    20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20  | ......(plist-get.arg.:name)))... | 
| 40c60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67  | ..............................(g | 
| 40c80 |  70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74    6f 6f 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20  | ptel-tool-args.tool))))......... | 
| 40ca0 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 61 64 64    69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69 65  | ............:additionalPropertie | 
| 40cc0 |  73 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20  | s.:json-false))...........(list. | 
| 40ce0 |  3a 70 61 72 61 6d 65 74 65 72 73 20 3a 6e 75 6c    6c 29 29 29 29 29 0a 20 20 20 20 28 65 6e 73 75  | :parameters.:null))))).....(ensu | 
| 40d00 |  72 65 2d 6c 69 73 74 20 74 6f 6f 6c 73 29 29 29    29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69  | re-list.tools))))..(cl-defgeneri | 
| 40d20 |  63 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74    6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 62 61 63  | c.gptel--parse-tool-results.(bac | 
| 40d40 |  6b 65 6e 64 20 72 65 73 75 6c 74 73 29 0a 20 20    22 52 65 74 75 72 6e 20 61 20 42 41 43 4b 45 4e  | kend.results)..."Return.a.BACKEN | 
| 40d60 |  44 2d 61 70 70 72 6f 70 72 69 61 74 65 20 70 72    6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20  | D-appropriate.prompt.containing. | 
| 40d80 |  74 6f 6f 6c 20 63 61 6c 6c 20 52 45 53 55 4c 54    53 2e 0a 0a 54 68 69 73 20 77 69 6c 6c 20 62 65  | tool.call.RESULTS...This.will.be | 
| 40da0 |  20 69 6e 6a 65 63 74 65 64 20 69 6e 74 6f 20 74    68 65 20 6d 65 73 73 61 67 65 73 20 6c 69 73 74  | .injected.into.the.messages.list | 
| 40dc0 |  20 69 6e 20 74 68 65 20 70 72 6f 6d 70 74 20 74    6f 0a 73 65 6e 64 20 74 6f 20 74 68 65 20 4c 4c  | .in.the.prompt.to.send.to.the.LL | 
| 40de0 |  4d 2e 22 29 0a 0a 3b 3b 20 46 49 58 4d 45 28 66    73 6d 29 20 75 6e 69 66 79 20 74 68 69 73 20 77  | M.")..;;.FIXME(fsm).unify.this.w | 
| 40e00 |  69 74 68 20 60 67 70 74 65 6c 2d 2d 77 72 61 70    2d 75 73 65 72 2d 70 72 6f 6d 70 74 27 2c 20 77  | ith.`gptel--wrap-user-prompt',.w | 
| 40e20 |  68 69 63 68 20 69 73 20 61 20 6d 65 73 73 0a 28    63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70  | hich.is.a.mess.(cl-defgeneric.gp | 
| 40e40 |  74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d    70 74 0a 20 20 28 5f 62 61 63 6b 65 6e 64 20 64  | tel--inject-prompt...(_backend.d | 
| 40e60 |  61 74 61 20 6e 65 77 2d 70 72 6f 6d 70 74 20 26    6f 70 74 69 6f 6e 61 6c 20 5f 70 6f 73 69 74 69  | ata.new-prompt.&optional._positi | 
| 40e80 |  6f 6e 29 0a 20 20 22 41 70 70 65 6e 64 20 4e 45    57 2d 50 52 4f 4d 50 54 20 74 6f 20 65 78 69 73  | on)..."Append.NEW-PROMPT.to.exis | 
| 40ea0 |  74 69 6e 67 20 70 72 6f 6d 70 74 73 20 69 6e 20    71 75 65 72 79 20 44 41 54 41 2e 0a 0a 4e 45 57  | ting.prompts.in.query.DATA...NEW | 
| 40ec0 |  2d 50 52 4f 4d 50 54 20 63 61 6e 20 62 65 20 61    20 73 69 6e 67 6c 65 20 6d 65 73 73 61 67 65 20  | -PROMPT.can.be.a.single.message. | 
| 40ee0 |  6f 72 20 61 20 6c 69 73 74 20 6f 66 20 6d 65 73    73 61 67 65 73 2e 0a 0a 4e 6f 74 20 69 6d 70 6c  | or.a.list.of.messages...Not.impl | 
| 40f00 |  65 6d 65 6e 74 65 64 3a 20 69 66 20 50 4f 53 49    54 49 4f 4e 20 69 73 0a 2d 20 61 20 6e 6f 6e 2d  | emented:.if.POSITION.is.-.a.non- | 
| 40f20 |  6e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2c    20 69 6e 73 65 72 74 20 69 74 20 61 74 20 74 68  | negative.number,.insert.it.at.th | 
| 40f40 |  61 74 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 50    52 4f 4d 50 54 53 2e 0a 2d 20 61 20 6e 65 67 61  | at.position.in.PROMPTS..-.a.nega | 
| 40f60 |  74 69 76 65 20 6e 75 6d 62 65 72 2c 20 69 6e 73    65 72 74 20 69 74 20 74 68 65 72 65 20 63 6f 75  | tive.number,.insert.it.there.cou | 
| 40f80 |  6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 65    6e 64 2e 0a 0a 54 68 69 73 20 67 65 6e 65 72 69  | nting.from.the.end...This.generi | 
| 40fa0 |  63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e    20 68 61 6e 64 6c 65 73 20 74 68 65 20 41 6e 74  | c.implementation.handles.the.Ant | 
| 40fc0 |  68 72 6f 70 69 63 2c 0a 4f 70 65 6e 41 49 2d 63    6f 6d 70 61 74 69 62 6c 65 20 61 6e 64 20 4f 6c  | hropic,.OpenAI-compatible.and.Ol | 
| 40fe0 |  6c 61 6d 61 20 6d 65 73 73 61 67 65 20 66 6f 72    6d 61 74 73 2e 22 0a 20 20 3b 3b 20 3b 54 4f 44  | lama.message.formats."...;;.;TOD | 
| 41000 |  4f 28 66 73 6d 29 3a 20 69 6d 70 6c 65 6d 65 6e    74 20 5f 50 4f 53 49 54 49 4f 4e 0a 20 20 28 77  | O(fsm):.implement._POSITION...(w | 
| 41020 |  68 65 6e 20 28 6b 65 79 77 6f 72 64 70 20 28 63    61 72 2d 73 61 66 65 20 6e 65 77 2d 70 72 6f 6d  | hen.(keywordp.(car-safe.new-prom | 
| 41040 |  70 74 29 29 20 3b 49 73 20 6e 65 77 2d 70 72 6f    6d 70 74 20 6f 6e 65 20 6f 72 20 6d 61 6e 79 3f  | pt)).;Is.new-prompt.one.or.many? | 
| 41060 |  0a 20 20 20 20 28 73 65 74 71 20 6e 65 77 2d 70    72 6f 6d 70 74 20 28 6c 69 73 74 20 6e 65 77 2d  | .....(setq.new-prompt.(list.new- | 
| 41080 |  70 72 6f 6d 70 74 29 29 29 0a 20 20 28 6c 65 74    20 28 28 70 72 6f 6d 70 74 73 20 28 70 6c 69 73  | prompt)))...(let.((prompts.(plis | 
| 410a0 |  74 2d 67 65 74 20 64 61 74 61 20 3a 6d 65 73 73    61 67 65 73 29 29 29 0a 20 20 20 20 28 70 6c 69  | t-get.data.:messages))).....(pli | 
| 410c0 |  73 74 2d 70 75 74 20 64 61 74 61 20 3a 6d 65 73    73 61 67 65 73 20 28 76 63 6f 6e 63 61 74 20 70  | st-put.data.:messages.(vconcat.p | 
| 410e0 |  72 6f 6d 70 74 73 20 6e 65 77 2d 70 72 6f 6d 70    74 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 53 74 61  | rompts.new-prompt))))....;;;.Sta | 
| 41100 |  74 65 20 6d 61 63 68 69 6e 65 20 66 6f 72 20 64    72 69 76 69 6e 67 20 72 65 71 75 65 73 74 73 0a  | te.machine.for.driving.requests. | 
| 41120 |  0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 72    65 71 75 65 73 74 2d 2d 74 72 61 6e 73 69 74 69  | .(defvar.gptel-request--transiti | 
| 41140 |  6f 6e 73 0a 20 20 60 28 28 49 4e 49 54 20 2e 20    28 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20  | ons...`((INIT...((t............. | 
| 41160 |  20 20 20 20 20 20 20 20 20 20 2e 20 57 41 49 54    29 29 29 0a 20 20 20 20 28 57 41 49 54 20 2e 20  | ............WAIT))).....(WAIT... | 
| 41180 |  28 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 2e 20 54 59 50 45  | ((t.........................TYPE | 
| 411a0 |  29 29 29 0a 20 20 20 20 28 54 59 50 45 20 2e 20    28 28 2c 23 27 67 70 74 65 6c 2d 2d 65 72 72 6f  | ))).....(TYPE...((,#'gptel--erro | 
| 411c0 |  72 2d 70 20 20 20 20 20 20 20 2e 20 45 52 52 53    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | r-p.........ERRS)..............( | 
| 411e0 |  2c 23 27 67 70 74 65 6c 2d 2d 74 6f 6f 6c 2d 75    73 65 2d 70 20 20 20 20 2e 20 54 4f 4f 4c 29 0a  | ,#'gptel--tool-use-p......TOOL). | 
| 41200 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .............(t................. | 
| 41220 |  20 20 20 20 20 20 2e 20 44 4f 4e 45 29 29 29 0a    20 20 20 20 28 54 4f 4f 4c 20 2e 20 28 28 2c 23  | ........DONE))).....(TOOL...((,# | 
| 41240 |  27 67 70 74 65 6c 2d 2d 65 72 72 6f 72 2d 70 20    20 20 20 20 20 20 2e 20 45 52 52 53 29 0a 20 20  | 'gptel--error-p.........ERRS)... | 
| 41260 |  20 20 20 20 20 20 20 20 20 20 20 28 2c 23 27 67    70 74 65 6c 2d 2d 74 6f 6f 6c 2d 72 65 73 75 6c  | ...........(,#'gptel--tool-resul | 
| 41280 |  74 2d 70 20 2e 20 57 41 49 54 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 28 74 20 20 20 20 20  | t-p...WAIT)..............(t..... | 
| 412a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 2e 20 44 4f 4e 45 29 29 29 29 0a 20 20 22  | ....................DONE))))..." | 
| 412c0 |  41 6c 69 73 74 20 73 70 65 63 69 66 79 69 6e 67    20 67 70 74 65 6c 27 73 20 64 65 66 61 75 6c 74  | Alist.specifying.gptel's.default | 
| 412e0 |  20 73 74 61 74 65 20 74 72 61 6e 73 69 74 69 6f    6e 20 74 61 62 6c 65 20 66 6f 72 20 72 65 71 75  | .state.transition.table.for.requ | 
| 41300 |  65 73 74 73 2e 0a 0a 45 61 63 68 20 65 6e 74 72    79 20 69 73 20 61 20 6c 69 73 74 20 77 68 6f 73  | ests...Each.entry.is.a.list.whos | 
| 41320 |  65 20 63 61 72 20 69 73 20 61 20 72 65 71 75 65    73 74 20 73 74 61 74 65 20 28 61 6e 79 20 73 79  | e.car.is.a.request.state.(any.sy | 
| 41340 |  6d 62 6f 6c 29 0a 61 6e 64 20 77 68 6f 73 65 20    63 64 72 20 69 73 20 61 6e 20 61 6c 69 73 74 20  | mbol).and.whose.cdr.is.an.alist. | 
| 41360 |  6c 69 73 74 69 6e 67 20 70 6f 73 73 69 62 6c 65    20 6e 65 78 74 20 73 74 61 74 65 73 2e 20 20 45  | listing.possible.next.states...E | 
| 41380 |  61 63 68 20 6b 65 79 0a 69 73 20 65 69 74 68 65    72 20 61 20 70 72 65 64 69 63 61 74 65 20 66 75  | ach.key.is.either.a.predicate.fu | 
| 413a0 |  6e 63 74 69 6f 6e 20 6f 72 20 60 74 27 2e 20 20    57 68 65 6e 20 60 67 70 74 65 6c 2d 2d 66 73 6d  | nction.or.`t'...When.`gptel--fsm | 
| 413c0 |  2d 6e 65 78 74 27 20 69 73 0a 63 61 6c 6c 65 64    2c 20 74 68 65 20 70 72 65 64 69 63 61 74 65 73  | -next'.is.called,.the.predicates | 
| 413e0 |  20 61 72 65 20 63 61 6c 6c 65 64 20 69 6e 20 74    68 65 20 6f 72 64 65 72 20 74 68 65 79 20 61 70  | .are.called.in.the.order.they.ap | 
| 41400 |  70 65 61 72 20 68 65 72 65 0a 74 6f 20 66 69 6e    64 20 74 68 65 20 6e 65 78 74 20 73 74 61 74 65  | pear.here.to.find.the.next.state | 
| 41420 |  2e 20 20 45 61 63 68 20 70 72 65 64 69 63 61 74    65 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68  | ...Each.predicate.is.called.with | 
| 41440 |  20 74 68 65 20 73 74 61 74 65 0a 6d 61 63 68 69    6e 65 27 73 20 49 4e 46 4f 2c 20 73 65 65 20 60  | .the.state.machine's.INFO,.see.` | 
| 41460 |  67 70 74 65 6c 2d 66 73 6d 27 2e 20 20 41 20 70    72 65 64 69 63 61 74 65 20 6f 66 20 60 74 27 20  | gptel-fsm'...A.predicate.of.`t'. | 
| 41480 |  69 73 0a 63 6f 6e 73 69 64 65 72 65 64 20 61 20    73 75 63 63 65 73 73 20 61 6e 64 20 61 63 74 73  | is.considered.a.success.and.acts | 
| 414a0 |  20 61 73 20 61 20 64 65 66 61 75 6c 74 2e 22 29    0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d  | .as.a.default.")..(defvar.gptel- | 
| 414c0 |  72 65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72    73 0a 20 20 60 28 28 57 41 49 54 20 2c 23 27 67  | request--handlers...`((WAIT.,#'g | 
| 414e0 |  70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 77 61 69    74 29 0a 20 20 20 20 28 54 4f 4f 4c 20 2c 23 27  | ptel--handle-wait).....(TOOL.,#' | 
| 41500 |  67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f    6f 6c 2d 75 73 65 29 29 0a 20 20 22 41 6c 69 73  | gptel--handle-tool-use))..."Alis | 
| 41520 |  74 20 73 70 65 63 69 66 79 69 6e 67 20 68 61 6e    64 6c 65 72 73 20 66 6f 72 20 67 70 74 65 6c 27  | t.specifying.handlers.for.gptel' | 
| 41540 |  73 20 64 65 66 61 75 6c 74 20 73 74 61 74 65 20    74 72 61 6e 73 69 74 69 6f 6e 73 2e 0a 0a 45 61  | s.default.state.transitions...Ea | 
| 41560 |  63 68 20 65 6e 74 72 79 20 69 73 20 61 20 6c 69    73 74 20 77 68 6f 73 65 20 63 61 72 20 69 73 20  | ch.entry.is.a.list.whose.car.is. | 
| 41580 |  61 20 72 65 71 75 65 73 74 20 73 74 61 74 65 20    28 61 20 73 79 6d 62 6f 6c 29 20 61 6e 64 0a 77  | a.request.state.(a.symbol).and.w | 
| 415a0 |  68 6f 73 65 20 63 64 72 20 69 73 20 61 20 6c 69    73 74 20 6f 66 20 68 61 6e 64 6c 65 72 20 66 75  | hose.cdr.is.a.list.of.handler.fu | 
| 415c0 |  6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77    68 65 6e 0a 74 72 61 6e 73 69 74 69 6f 6e 69 6e  | nctions.called.when.transitionin | 
| 415e0 |  67 20 74 6f 20 74 68 61 74 20 73 74 61 74 65 2e    20 20 54 68 65 20 68 61 6e 64 6c 65 72 73 20 61  | g.to.that.state...The.handlers.a | 
| 41600 |  72 65 20 63 61 6c 6c 65 64 20 69 6e 20 74 68 65    0a 73 65 71 75 65 6e 63 65 20 74 68 61 74 20 74  | re.called.in.the.sequence.that.t | 
| 41620 |  68 65 79 20 61 70 70 65 61 72 20 69 6e 20 74 68    65 20 6c 69 73 74 2c 20 61 6e 64 20 65 61 63 68  | hey.appear.in.the.list,.and.each | 
| 41640 |  20 66 75 6e 63 74 69 6f 6e 20 72 65 63 65 69 76    65 73 0a 74 68 65 20 73 74 61 74 65 20 6d 61 63  | .function.receives.the.state.mac | 
| 41660 |  68 69 6e 65 20 61 73 20 69 74 73 20 6f 6e 6c 79    20 61 72 67 75 6d 65 6e 74 2e 20 20 49 6e 66 6f  | hine.as.its.only.argument...Info | 
| 41680 |  72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68    65 0a 72 65 71 75 65 73 74 20 73 74 61 74 65 20  | rmation.about.the.request.state. | 
| 416a0 |  63 61 6e 20 62 65 20 72 65 74 72 69 65 76 65 64    20 76 69 61 20 74 68 65 20 6d 61 63 68 69 6e 65  | can.be.retrieved.via.the.machine | 
| 416c0 |  27 73 20 49 4e 46 4f 20 73 6c 6f 74 2c 20 73 65    65 0a 60 67 70 74 65 6c 2d 66 73 6d 27 2e 0a 0a  | 's.INFO.slot,.see.`gptel-fsm'... | 
| 416e0 |  48 61 6e 64 6c 65 72 73 20 61 72 65 20 72 65 73    70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 64 6f 69  | Handlers.are.responsible.for.doi | 
| 41700 |  6e 67 20 73 74 61 74 65 2d 72 65 6c 61 74 65 64    20 74 61 73 6b 73 20 28 6c 69 6b 65 0a 6c 6f 67  | ng.state-related.tasks.(like.log | 
| 41720 |  67 69 6e 67 20 65 72 72 6f 72 73 20 6f 72 20 69    6e 73 65 72 74 69 6e 67 20 72 65 73 70 6f 6e 73  | ging.errors.or.inserting.respons | 
| 41740 |  65 73 29 20 61 6e 64 20 74 72 61 6e 73 69 74 69    6f 6e 69 6e 67 20 74 6f 20 74 68 65 0a 6e 65 78  | es).and.transitioning.to.the.nex | 
| 41760 |  74 20 73 74 61 74 65 20 62 79 20 63 61 6c 6c 69    6e 67 20 60 67 70 74 65 6c 2d 2d 66 73 6d 2d 74  | t.state.by.calling.`gptel--fsm-t | 
| 41780 |  72 61 6e 73 69 74 69 6f 6e 27 2e 0a 0a 48 61 6e    64 6c 65 72 73 20 63 61 6e 20 62 65 20 61 73 79  | ransition'...Handlers.can.be.asy | 
| 417a0 |  6e 63 68 72 6f 6e 6f 75 73 2c 20 69 6e 20 77 68    69 63 68 20 63 61 73 65 20 74 68 65 20 74 72 61  | nchronous,.in.which.case.the.tra | 
| 417c0 |  6e 73 69 74 69 6f 6e 20 63 61 6c 6c 0a 73 68 6f    75 6c 64 20 74 79 70 69 63 61 6c 6c 79 20 62 65  | nsition.call.should.typically.be | 
| 417e0 |  20 70 6c 61 63 65 64 20 69 6e 20 69 74 73 20 63    61 6c 6c 62 61 63 6b 2e 22 29 0a 0a 28 64 65 66  | .placed.in.its.callback.")..(def | 
| 41800 |  76 61 72 20 67 70 74 65 6c 2d 73 65 6e 64 2d 2d    68 61 6e 64 6c 65 72 73 0a 20 20 60 28 28 57 41  | var.gptel-send--handlers...`((WA | 
| 41820 |  49 54 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e    64 6c 65 2d 77 61 69 74 29 0a 20 20 20 20 28 54  | IT.,#'gptel--handle-wait).....(T | 
| 41840 |  59 50 45 20 2c 23 27 67 70 74 65 6c 2d 2d 68 61    6e 64 6c 65 2d 70 72 65 2d 69 6e 73 65 72 74 29  | YPE.,#'gptel--handle-pre-insert) | 
| 41860 |  0a 20 20 20 20 28 45 52 52 53 20 2c 23 27 67 70    74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 65 72 72 6f  | .....(ERRS.,#'gptel--handle-erro | 
| 41880 |  72 20 2c 23 27 67 70 74 65 6c 2d 2d 66 73 6d 2d    6c 61 73 74 29 0a 20 20 20 20 28 54 4f 4f 4c 20  | r.,#'gptel--fsm-last).....(TOOL. | 
| 418a0 |  2c 23 27 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65    2d 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 28  | ,#'gptel--handle-tool-use).....( | 
| 418c0 |  44 4f 4e 45 20 2c 23 27 67 70 74 65 6c 2d 2d 68    61 6e 64 6c 65 2d 70 6f 73 74 2d 69 6e 73 65 72  | DONE.,#'gptel--handle-post-inser | 
| 418e0 |  74 20 2c 23 27 67 70 74 65 6c 2d 2d 66 73 6d 2d    6c 61 73 74 29 29 0a 20 20 22 41 6c 69 73 74 20  | t.,#'gptel--fsm-last))..."Alist. | 
| 41900 |  73 70 65 63 69 66 79 69 6e 67 20 68 61 6e 64 6c    65 72 73 20 66 6f 72 20 60 67 70 74 65 6c 2d 73  | specifying.handlers.for.`gptel-s | 
| 41920 |  65 6e 64 27 20 73 74 61 74 65 20 74 72 61 6e 73    69 74 69 6f 6e 73 2e 0a 0a 53 65 65 20 60 67 70  | end'.state.transitions...See.`gp | 
| 41940 |  74 65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e    64 6c 65 72 73 27 20 66 6f 72 20 64 65 74 61 69  | tel-request--handlers'.for.detai | 
| 41960 |  6c 73 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 73 74    72 75 63 74 20 28 67 70 74 65 6c 2d 66 73 6d 20  | ls.")..(cl-defstruct.(gptel-fsm. | 
| 41980 |  28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70    74 65 6c 2d 6d 61 6b 65 2d 66 73 6d 29 0a 20 20  | (:constructor.gptel-make-fsm)... | 
| 419a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20  | .......................(:copier. | 
| 419c0 |  67 70 74 65 6c 2d 63 6f 70 79 2d 66 73 6d 29 29    0a 20 20 22 53 74 61 74 65 20 6d 61 63 68 69 6e  | gptel-copy-fsm))..."State.machin | 
| 419e0 |  65 20 66 6f 72 20 67 70 74 65 6c 20 72 65 71 75    65 73 74 73 2e 0a 0a 53 54 41 54 45 3a 20 54 68  | e.for.gptel.requests...STATE:.Th | 
| 41a00 |  65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20    6f 66 20 74 68 65 20 6d 61 63 68 69 6e 65 2c 20  | e.current.state.of.the.machine,. | 
| 41a20 |  63 61 6e 20 62 65 20 61 6e 79 20 73 79 6d 62 6f    6c 2e 0a 0a 54 41 42 4c 45 3a 20 41 6c 69 73 74  | can.be.any.symbol...TABLE:.Alist | 
| 41a40 |  20 6d 61 70 70 69 6e 67 20 73 74 61 74 65 73 20    74 6f 20 70 6f 73 73 69 62 6c 65 20 6e 65 78 74  | .mapping.states.to.possible.next | 
| 41a60 |  20 73 74 61 74 65 73 0a 61 6c 6f 6e 67 20 77 69    74 68 20 70 72 65 64 69 63 61 74 65 73 20 74 6f  | .states.along.with.predicates.to | 
| 41a80 |  20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6e    65 78 74 20 73 74 61 74 65 2e 20 20 53 65 65 0a  | .determine.the.next.state...See. | 
| 41aa0 |  60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d    74 72 61 6e 73 69 74 69 6f 6e 73 27 20 66 6f 72  | `gptel-request--transitions'.for | 
| 41ac0 |  20 61 6e 20 65 78 61 6d 70 6c 65 2e 0a 0a 48 41    4e 44 4c 45 52 53 3a 20 41 6c 69 73 74 20 6d 61  | .an.example...HANDLERS:.Alist.ma | 
| 41ae0 |  70 70 69 6e 67 20 73 74 61 74 65 73 20 74 6f 20    73 74 61 74 65 20 68 61 6e 64 6c 65 72 20 66 75  | pping.states.to.state.handler.fu | 
| 41b00 |  6e 63 74 69 6f 6e 73 2e 0a 48 61 6e 64 6c 65 72    73 20 61 72 65 20 63 61 6c 6c 65 64 20 77 68 65  | nctions..Handlers.are.called.whe | 
| 41b20 |  6e 20 65 6e 74 65 72 69 6e 67 20 65 61 63 68 20    73 74 61 74 65 2e 20 20 53 65 65 0a 60 67 70 74  | n.entering.each.state...See.`gpt | 
| 41b40 |  65 6c 2d 72 65 71 75 65 73 74 2d 2d 68 61 6e 64    6c 65 72 73 27 20 66 6f 72 20 61 6e 20 65 78 61  | el-request--handlers'.for.an.exa | 
| 41b60 |  6d 70 6c 65 0a 0a 49 4e 46 4f 3a 20 54 68 65 20    73 74 61 74 65 20 6d 61 63 68 69 6e 65 27 73 20  | mple..INFO:.The.state.machine's. | 
| 41b80 |  63 75 72 72 65 6e 74 20 63 6f 6e 74 65 78 74 2e    20 20 54 68 69 73 20 69 73 20 61 20 70 6c 69 73  | current.context...This.is.a.plis | 
| 41ba0 |  74 0a 68 6f 6c 64 69 6e 67 20 61 6c 6c 20 74 68    65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 72 65  | t.holding.all.the.information.re | 
| 41bc0 |  71 75 69 72 65 64 20 66 6f 72 20 74 68 65 20 6f    6e 67 6f 69 6e 67 20 72 65 71 75 65 73 74 2c 20  | quired.for.the.ongoing.request,. | 
| 41be0 |  61 6e 64 0a 63 61 6e 20 62 65 20 75 73 65 64 20    74 6f 20 74 77 65 61 6b 20 61 6e 64 20 72 65 73  | and.can.be.used.to.tweak.and.res | 
| 41c00 |  75 6d 65 20 61 20 70 61 75 73 65 64 20 72 65 71    75 65 73 74 2e 20 20 54 68 69 73 20 73 68 6f 75  | ume.a.paused.request...This.shou | 
| 41c20 |  6c 64 20 62 65 0a 63 61 6c 6c 65 64 20 5c 22 63    6f 6e 74 65 78 74 5c 22 2c 20 62 75 74 20 63 6f  | ld.be.called.\"context\",.but.co | 
| 41c40 |  6e 74 65 78 74 20 6d 65 61 6e 73 20 74 6f 6f 20    6d 61 6e 79 20 74 68 69 6e 67 73 20 61 6c 72 65  | ntext.means.too.many.things.alre | 
| 41c60 |  61 64 79 20 69 6e 0a 67 70 74 65 6c 27 73 20 63    6f 64 65 21 0a 0a 45 61 63 68 20 67 70 74 65 6c  | ady.in.gptel's.code!..Each.gptel | 
| 41c80 |  20 72 65 71 75 65 73 74 20 69 73 20 70 61 73 73    65 64 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  | .request.is.passed.an.instance.o | 
| 41ca0 |  66 20 74 68 69 73 0a 73 74 61 74 65 20 6d 61 63    68 69 6e 65 20 61 6e 64 20 64 72 69 76 65 6e 20  | f.this.state.machine.and.driven. | 
| 41cc0 |  62 79 20 69 74 2e 22 0a 20 20 28 73 74 61 74 65    20 27 49 4e 49 54 29 0a 20 20 28 74 61 62 6c 65  | by.it."...(state.'INIT)...(table | 
| 41ce0 |  20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 2d 2d    74 72 61 6e 73 69 74 69 6f 6e 73 29 0a 20 20 28  | .gptel-request--transitions)...( | 
| 41d00 |  68 61 6e 64 6c 65 72 73 20 67 70 74 65 6c 2d 72    65 71 75 65 73 74 2d 2d 68 61 6e 64 6c 65 72 73  | handlers.gptel-request--handlers | 
| 41d20 |  29 20 69 6e 66 6f 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73  | ).info)..(defun.gptel--fsm-trans | 
| 41d40 |  69 74 69 6f 6e 20 28 6d 61 63 68 69 6e 65 20 26    6f 70 74 69 6f 6e 61 6c 20 6e 65 77 2d 73 74 61  | ition.(machine.&optional.new-sta | 
| 41d60 |  74 65 29 0a 20 20 22 4d 6f 76 65 20 4d 41 43 48    49 4e 45 20 74 6f 20 69 74 73 20 6e 65 78 74 20  | te)..."Move.MACHINE.to.its.next. | 
| 41d80 |  73 74 61 74 65 2e 0a 0a 4d 41 43 48 49 4e 45 20    69 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  | state...MACHINE.is.an.instance.o | 
| 41da0 |  66 20 60 67 70 74 65 6c 2d 66 73 6d 27 2e 0a 0a    54 68 65 20 6e 65 78 74 20 73 74 61 74 65 20 69  | f.`gptel-fsm'...The.next.state.i | 
| 41dc0 |  73 20 4e 45 57 2d 53 54 41 54 45 20 69 66 20 67    69 76 65 6e 2e 20 20 4f 74 68 65 72 77 69 73 65  | s.NEW-STATE.if.given...Otherwise | 
| 41de0 |  20 69 74 20 69 73 20 64 65 74 65 72 6d 69 6e 65    64 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  | .it.is.determined.automatically. | 
| 41e00 |  66 72 6f 6d 20 4d 41 43 48 49 4e 45 27 73 20 74    72 61 6e 73 69 74 69 6f 6e 20 74 61 62 6c 65 2e  | from.MACHINE's.transition.table. | 
| 41e20 |  22 0a 20 20 28 75 6e 6c 65 73 73 20 6e 65 77 2d    73 74 61 74 65 20 28 73 65 74 71 20 6e 65 77 2d  | "...(unless.new-state.(setq.new- | 
| 41e40 |  73 74 61 74 65 20 28 67 70 74 65 6c 2d 2d 66 73    6d 2d 6e 65 78 74 20 6d 61 63 68 69 6e 65 29 29  | state.(gptel--fsm-next.machine)) | 
| 41e60 |  29 0a 20 20 28 70 75 73 68 20 28 67 70 74 65 6c    2d 66 73 6d 2d 73 74 61 74 65 20 6d 61 63 68 69  | )...(push.(gptel-fsm-state.machi | 
| 41e80 |  6e 65 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69    73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d 66 73  | ne).........(plist-get.(gptel-fs | 
| 41ea0 |  6d 2d 69 6e 66 6f 20 6d 61 63 68 69 6e 65 29 20    3a 68 69 73 74 6f 72 79 29 29 0a 20 20 28 73 65  | m-info.machine).:history))...(se | 
| 41ec0 |  74 66 20 28 67 70 74 65 6c 2d 66 73 6d 2d 73 74    61 74 65 20 6d 61 63 68 69 6e 65 29 20 6e 65 77  | tf.(gptel-fsm-state.machine).new | 
| 41ee0 |  2d 73 74 61 74 65 29 0a 20 20 28 77 68 65 6e 2d    6c 65 74 2a 20 28 28 68 61 6e 64 6c 65 72 73 20  | -state)...(when-let*.((handlers. | 
| 41f00 |  28 61 6c 69 73 74 2d 67 65 74 20 6e 65 77 2d 73    74 61 74 65 20 28 67 70 74 65 6c 2d 66 73 6d 2d  | (alist-get.new-state.(gptel-fsm- | 
| 41f20 |  68 61 6e 64 6c 65 72 73 20 6d 61 63 68 69 6e 65    29 29 29 29 0a 20 20 20 20 28 6d 61 70 63 20 28  | handlers.machine)))).....(mapc.( | 
| 41f40 |  6c 61 6d 62 64 61 20 28 68 29 20 28 66 75 6e 63    61 6c 6c 20 68 20 6d 61 63 68 69 6e 65 29 29 20  | lambda.(h).(funcall.h.machine)). | 
| 41f60 |  68 61 6e 64 6c 65 72 73 29 29 29 0a 0a 28 64 65    66 75 6e 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6e  | handlers)))..(defun.gptel--fsm-n | 
| 41f80 |  65 78 74 20 28 6d 61 63 68 69 6e 65 29 0a 20 20    22 44 65 74 65 72 6d 69 6e 65 20 4d 41 43 48 49  | ext.(machine)..."Determine.MACHI | 
| 41fa0 |  4e 45 27 73 20 6e 65 78 74 20 73 74 61 74 65 20    61 63 63 6f 72 64 69 6e 67 20 74 6f 20 69 74 73  | NE's.next.state.according.to.its | 
| 41fc0 |  20 74 72 61 6e 73 69 74 69 6f 6e 20 74 61 62 6c    65 2e 0a 0a 4d 41 43 48 49 4e 45 20 69 73 20 61  | .transition.table...MACHINE.is.a | 
| 41fe0 |  6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 60 67    70 74 65 6c 2d 66 73 6d 27 22 0a 20 20 28 6c 65  | n.instance.of.`gptel-fsm'"...(le | 
| 42000 |  74 2a 20 28 28 63 75 72 72 65 6e 74 20 28 67 70    74 65 6c 2d 66 73 6d 2d 73 74 61 74 65 20 6d 61  | t*.((current.(gptel-fsm-state.ma | 
| 42020 |  63 68 69 6e 65 29 29 0a 20 20 20 20 20 20 20 20    20 28 74 72 61 6e 73 69 74 69 6f 6e 73 20 28 61  | chine))..........(transitions.(a | 
| 42040 |  6c 69 73 74 2d 67 65 74 20 63 75 72 72 65 6e 74    20 28 67 70 74 65 6c 2d 66 73 6d 2d 74 61 62 6c  | list-get.current.(gptel-fsm-tabl | 
| 42060 |  65 20 6d 61 63 68 69 6e 65 29 29 29 29 0a 20 20    20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20  | e.machine)))).....(cl-loop...... | 
| 42080 |  77 69 74 68 20 69 6e 66 6f 20 3d 20 28 67 70 74    65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 6d 61 63 68  | with.info.=.(gptel-fsm-info.mach | 
| 420a0 |  69 6e 65 29 0a 20 20 20 20 20 66 6f 72 20 28 70    72 65 64 20 2e 20 6e 65 78 74 29 20 69 6e 20 74  | ine)......for.(pred...next).in.t | 
| 420c0 |  72 61 6e 73 69 74 69 6f 6e 73 0a 20 20 20 20 20    77 68 65 6e 20 28 6f 72 20 28 65 71 20 70 72 65  | ransitions......when.(or.(eq.pre | 
| 420e0 |  64 20 74 29 20 28 66 75 6e 63 61 6c 6c 20 70 72    65 64 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 72  | d.t).(funcall.pred.info))......r | 
| 42100 |  65 74 75 72 6e 20 6e 65 78 74 29 29 29 0a 0a 28    64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74  | eturn.next)))..(defvar-local.gpt | 
| 42120 |  65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 6e 69 6c    0a 20 20 22 53 74 61 74 65 20 6d 61 63 68 69 6e  | el--fsm-last.nil..."State.machin | 
| 42140 |  65 20 66 6f 72 20 6c 61 74 65 73 74 20 72 65 71    75 65 73 74 20 69 6e 20 74 68 65 20 62 75 66 66  | e.for.latest.request.in.the.buff | 
| 42160 |  65 72 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70    74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 28 66  | er.")..(defun.gptel--fsm-last.(f | 
| 42180 |  73 6d 29 0a 20 20 20 20 22 43 61 70 74 75 72 65    20 74 68 65 20 6c 61 74 65 73 74 20 72 65 71 75  | sm)....."Capture.the.latest.requ | 
| 421a0 |  65 73 74 20 73 74 61 74 65 20 46 53 4d 20 66 6f    72 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 2e  | est.state.FSM.for.introspection. | 
| 421c0 |  22 0a 20 20 20 20 28 6c 65 74 20 28 28 69 6e 66    6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66  | ".....(let.((info.(gptel-fsm-inf | 
| 421e0 |  6f 20 66 73 6d 29 29 29 0a 20 20 20 20 20 20 28    75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 6c 6f 67  | o.fsm))).......(unless.gptel-log | 
| 42200 |  2d 6c 65 76 65 6c 0a 20 20 20 20 20 20 20 20 28    6c 65 74 20 28 28 64 61 74 61 20 28 70 6c 69 73  | -level.........(let.((data.(plis | 
| 42220 |  74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 64  | t-get.info.:data)))...........(d | 
| 42240 |  6f 6c 69 73 74 20 28 6b 65 79 20 27 28 3a 6d 65    73 73 61 67 65 73 20 3a 63 6f 6e 74 65 6e 74 73  | olist.(key.'(:messages.:contents | 
| 42260 |  20 3a 71 75 65 72 79 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 73 65 74 66 20 28 70 6c 69  | .:query)).............(setf.(pli | 
| 42280 |  73 74 2d 67 65 74 20 64 61 74 61 20 6b 65 79 29    20 6e 69 6c 29 29 29 29 0a 20 20 20 20 20 20 28  | st-get.data.key).nil)))).......( | 
| 422a0 |  73 65 74 66 20 28 67 70 74 65 6c 2d 66 73 6d 2d    69 6e 66 6f 20 66 73 6d 29 0a 20 20 20 20 20 20  | setf.(gptel-fsm-info.fsm)....... | 
| 422c0 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74    20 69 6e 66 6f 20 3a 65 6e 64 2d 74 69 6d 65 20  | ......(plist-put.info.:end-time. | 
| 422e0 |  28 63 75 72 72 65 6e 74 2d 74 69 6d 65 2d 73 74    72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 28 77  | (current-time-string))).......(w | 
| 42300 |  69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66    65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e  | ith-current-buffer.(plist-get.in | 
| 42320 |  66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20    20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d  | fo.:buffer).........(setq.gptel- | 
| 42340 |  2d 66 73 6d 2d 6c 61 73 74 20 66 73 6d 29 29 29    29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d  | -fsm-last.fsm))))..(defun.gptel- | 
| 42360 |  2d 69 6e 73 70 65 63 74 2d 66 73 6d 20 28 26 6f    70 74 69 6f 6e 61 6c 20 66 73 6d 29 0a 20 20 22  | -inspect-fsm.(&optional.fsm)..." | 
| 42380 |  49 6e 73 70 65 63 74 20 67 70 74 65 6c 20 72 65    71 75 65 73 74 20 73 74 61 74 65 20 46 53 4d 2e  | Inspect.gptel.request.state.FSM. | 
| 423a0 |  0a 0a 46 53 4d 20 64 65 66 61 75 6c 74 73 20 74    6f 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74  | ..FSM.defaults.to.the.state.of.t | 
| 423c0 |  68 65 20 6c 61 73 74 20 72 65 71 75 65 73 74 20    69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 62  | he.last.request.in.the.current.b | 
| 423e0 |  75 66 66 65 72 2e 22 0a 20 20 28 75 6e 6c 65 73    73 20 66 73 6d 0a 20 20 20 20 28 73 65 74 71 20  | uffer."...(unless.fsm.....(setq. | 
| 42400 |  66 73 6d 20 28 6f 72 20 28 63 64 72 2d 73 61 66    65 20 28 63 6c 2d 66 69 6e 64 2d 69 66 0a 20 20  | fsm.(or.(cdr-safe.(cl-find-if... | 
| 42420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62  | ...........................(lamb | 
| 42440 |  64 61 20 28 70 72 6f 63 2d 6c 69 73 74 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | da.(proc-list).................. | 
| 42460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65    71 20 28 74 68 72 65 61 64 2d 66 69 72 73 74 20  | ..............(eq.(thread-first. | 
| 42480 |  28 63 61 64 72 20 70 72 6f 63 2d 6c 69 73 74 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (cadr.proc-list)................ | 
| 424a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 424c0 |  20 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66    6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(gptel-fsm-info).............. | 
| 424e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 42500 |  20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 3a    62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20  | ....(plist-get.:buffer))........ | 
| 42520 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72  | ............................(cur | 
| 42540 |  72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rent-buffer))).................. | 
| 42560 |  20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65    6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74  | ............gptel--request-alist | 
| 42580 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 67 70 74 65 6c 2d 2d 66 73 6d 2d  | ))...................gptel--fsm- | 
| 425a0 |  6c 61 73 74 29 29 29 0a 20 20 28 75 6e 6c 65 73    73 20 28 63 6c 2d 74 79 70 65 70 20 67 70 74 65  | last)))...(unless.(cl-typep.gpte | 
| 425c0 |  6c 2d 2d 66 73 6d 2d 6c 61 73 74 20 27 67 70 74    65 6c 2d 66 73 6d 29 0a 20 20 20 20 28 75 73 65  | l--fsm-last.'gptel-fsm).....(use | 
| 425e0 |  72 2d 65 72 72 6f 72 20 22 4e 6f 20 67 70 74 65    6c 20 72 65 71 75 65 73 74 20 6c 6f 67 20 69 6e  | r-error."No.gptel.request.log.in | 
| 42600 |  20 74 68 69 73 20 62 75 66 66 65 72 20 79 65 74    21 22 29 29 0a 20 20 28 72 65 71 75 69 72 65 20  | .this.buffer.yet!"))...(require. | 
| 42620 |  27 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 29    0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74  | 'tabulated-list)...(with-current | 
| 42640 |  2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66    66 65 72 2d 63 72 65 61 74 65 20 22 2a 67 70 74  | -buffer.(get-buffer-create."*gpt | 
| 42660 |  65 6c 2d 64 69 61 67 6e 6f 73 74 69 63 2a 22 29    0a 20 20 20 20 28 73 65 74 71 20 74 61 62 75 6c  | el-diagnostic*").....(setq.tabul | 
| 42680 |  61 74 65 64 2d 6c 69 73 74 2d 66 6f 72 6d 61 74    20 5b 28 22 52 65 71 75 65 73 74 20 61 74 74 72  | ated-list-format.[("Request.attr | 
| 426a0 |  69 62 75 74 65 22 20 33 30 20 74 29 20 28 22 56    61 6c 75 65 22 20 33 30 29 5d 29 0a 20 20 20 20  | ibute".30.t).("Value".30)])..... | 
| 426c0 |  28 6c 65 74 2a 20 28 28 70 62 20 28 6c 61 6d 62    64 61 20 28 73 29 20 28 70 72 6f 70 65 72 74 69  | (let*.((pb.(lambda.(s).(properti | 
| 426e0 |  7a 65 20 73 20 27 66 61 63 65 20 27 66 6f 6e 74    2d 6c 6f 63 6b 2d 62 75 69 6c 74 69 6e 2d 66 61  | ze.s.'face.'font-lock-builtin-fa | 
| 42700 |  63 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 28 70 73 20 28 6c 61 6d 62 64 61 20 28 73 29  | ce)))............(ps.(lambda.(s) | 
| 42720 |  20 28 70 72 6f 70 65 72 74 69 7a 65 20 73 20 27    66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d  | .(propertize.s.'face.'font-lock- | 
| 42740 |  73 74 72 69 6e 67 2d 66 61 63 65 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 28 66 6d 74 20 28  | string-face)))............(fmt.( | 
| 42760 |  6c 61 6d 62 64 61 20 28 73 29 20 28 63 6f 6e 64    20 28 28 6d 65 6d 71 20 28 63 61 72 2d 73 61 66  | lambda.(s).(cond.((memq.(car-saf | 
| 42780 |  65 20 73 29 20 27 28 63 6c 6f 73 75 72 65 20 6c    61 6d 62 64 61 29 29 0a 20 20 20 20 20 20 20 20  | e.s).'(closure.lambda))......... | 
| 427a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 23  | ......................(format."# | 
| 427c0 |  3c 6c 61 6d 62 64 61 20 25 23 78 3e 22 20 28 73    78 68 61 73 68 20 73 29 29 29 0a 20 20 20 20 20  | <lambda.%#x>".(sxhash.s)))...... | 
| 427e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 28 62 79 74 65 2d 63  | ........................((byte-c | 
| 42800 |  6f 64 65 2d 66 75 6e 63 74 69 6f 6e 2d 70 20 73    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ode-function-p.s)............... | 
| 42820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 66 6f 72 6d 61 74 20 22 23 3c 63 6f 6d 70 69  | ................(format."#<compi | 
| 42840 |  6c 65 64 20 25 23 78 3e 22 20 28 73 78 68 61 73    68 20 73 29 29 29 0a 20 20 20 20 20 20 20 20 20  | led.%#x>".(sxhash.s))).......... | 
| 42860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 28 73 74 72 69 6e 67 70 20 73 29  | ....................((stringp.s) | 
| 42880 |  20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65    20 22 5c 6e 22 20 22 e2 ae 90 20 22 20 73 29 29  | .(string-replace."\n"."....".s)) | 
| 428a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74  | ..............................(t | 
| 428c0 |  20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e    67 20 73 29 29 29 29 29 0a 20 20 20 20 20 20 20  | .(prin1-to-string.s)))))........ | 
| 428e0 |  20 20 20 20 28 69 6e 68 69 62 69 74 2d 72 65 61    64 2d 6f 6e 6c 79 20 74 29 0a 20 20 20 20 20 20  | ....(inhibit-read-only.t)....... | 
| 42900 |  20 20 20 20 20 28 69 6e 66 6f 20 28 67 70 74 65    6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29  | .....(info.(gptel-fsm-info.fsm)) | 
| 42920 |  0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 74    72 69 65 73 2d 69 6e 66 6f 0a 20 20 20 20 20 20  | ............(entries-info....... | 
| 42940 |  20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20  | ......(cl-loop..............for. | 
| 42960 |  69 64 78 20 75 70 66 72 6f 6d 20 33 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6b  | idx.upfrom.3..............for.(k | 
| 42980 |  65 79 20 76 61 6c 29 20 6f 6e 20 69 6e 66 6f 20    62 79 20 23 27 63 64 64 72 0a 20 20 20 20 20 20  | ey.val).on.info.by.#'cddr....... | 
| 429a0 |  20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 28 6d    65 6d 71 20 6b 65 79 20 27 28 3a 64 61 74 61 20  | .......unless.(memq.key.'(:data. | 
| 429c0 |  3a 68 69 73 74 6f 72 79 20 3a 74 6f 6f 6c 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :history.:tools................. | 
| 429e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 70 61 72 74 69 61 6c 5f 74 65 78 74 20 3a 70  | ................:partial_text.:p | 
| 42a00 |  61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65  | artial_json))..............colle | 
| 42a20 |  63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6c 69 73 74 20 69 64 78 20 60 5b 2c 28 66 75  | ct..............(list.idx.`[,(fu | 
| 42a40 |  6e 63 61 6c 6c 20 70 62 20 28 73 79 6d 62 6f 6c    2d 6e 61 6d 65 20 6b 65 79 29 29 0a 20 20 20 20  | ncall.pb.(symbol-name.key))..... | 
| 42a60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 2c 28 66 75 6e 63 61 6c 6c 20 70  | .....................,(funcall.p | 
| 42a80 |  73 20 28 66 75 6e 63 61 6c 6c 20 66 6d 74 20 76    61 6c 29 29 5d 29 29 29 0a 20 20 20 20 20 20 20  | s.(funcall.fmt.val))])))........ | 
| 42aa0 |  20 20 20 20 28 65 6e 74 72 69 65 73 2d 64 61 74    61 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | ....(entries-data.............(c | 
| 42ac0 |  6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 66 6f 72 20 69 64 78 20 75 70 66 72  | l-loop..............for.idx.upfr | 
| 42ae0 |  6f 6d 20 35 30 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 66 6f 72 20 28 6b 65 79 20 76 61 6c 29  | om.50..............for.(key.val) | 
| 42b00 |  20 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 69    6e 66 6f 20 3a 64 61 74 61 29 20 62 79 20 23 27  | .on.(plist-get.info.:data).by.#' | 
| 42b20 |  63 64 64 72 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 6b  | cddr..............unless.(memq.k | 
| 42b40 |  65 79 20 27 28 3a 6d 65 73 73 61 67 65 73 20 3a    73 74 72 65 61 6d 20 3a 63 6f 6e 74 65 6e 74 73  | ey.'(:messages.:stream.:contents | 
| 42b60 |  20 3a 71 75 65 72 79 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20  | .:query))..............collect.. | 
| 42b80 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73    74 20 69 64 78 20 60 5b 2c 28 66 75 6e 63 61 6c  | ............(list.idx.`[,(funcal | 
| 42ba0 |  6c 20 70 62 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d    65 20 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20  | l.pb.(symbol-name.key))......... | 
| 42bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 2c 28 66 75 6e 63 61 6c 6c 20 70 73 20 28 66  | .................,(funcall.ps.(f | 
| 42be0 |  75 6e 63 61 6c 6c 20 66 6d 74 20 76 61 6c 29 29    5d 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74  | uncall.fmt.val))])))).......(set | 
| 42c00 |  71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74    2d 65 6e 74 72 69 65 73 0a 20 20 20 20 20 20 20  | q.tabulated-list-entries........ | 
| 42c20 |  20 20 20 20 20 28 6e 63 6f 6e 63 20 28 6c 69 73    74 20 60 28 32 20 5b 2c 28 66 75 6e 63 61 6c 6c  | .....(nconc.(list.`(2.[,(funcall | 
| 42c40 |  20 70 62 20 22 3a 73 74 61 74 65 22 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .pb.":state")................... | 
| 42c60 |  20 20 20 20 20 20 20 20 20 20 20 20 2c 28 66 75    6e 63 61 6c 6c 20 70 73 0a 20 20 20 20 20 20 20  | ............,(funcall.ps........ | 
| 42c80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e  | .........................(mapcon | 
| 42ca0 |  63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | cat............................. | 
| 42cc0 |  20 20 20 20 20 66 6d 74 20 28 72 65 76 65 72 73    65 20 28 63 6f 6e 73 20 28 67 70 74 65 6c 2d 66  | .....fmt.(reverse.(cons.(gptel-f | 
| 42ce0 |  73 6d 2d 73 74 61 74 65 20 66 73 6d 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | sm-state.fsm)................... | 
| 42d00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c  | .............................(pl | 
| 42d20 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 68 69    73 74 6f 72 79 29 29 29 0a 20 20 20 20 20 20 20  | ist-get.info.:history)))........ | 
| 42d40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 22 20 e2 86 92 20  | .........................."..... | 
| 42d60 |  22 29 29 5d 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 65 6e 74 72 69 65  | "))]))....................entrie | 
| 42d80 |  73 2d 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 65 6e 74 72 69 65  | s-info....................entrie | 
| 42da0 |  73 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 28    74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 70  | s-data)).......(tabulated-list-p | 
| 42dc0 |  72 69 6e 74 29 0a 20 20 20 20 20 20 28 74 61 62    75 6c 61 74 65 64 2d 6c 69 73 74 2d 6d 6f 64 65  | rint).......(tabulated-list-mode | 
| 42de0 |  29 0a 20 20 20 20 20 20 28 74 61 62 75 6c 61 74    65 64 2d 6c 69 73 74 2d 69 6e 69 74 2d 68 65 61  | ).......(tabulated-list-init-hea | 
| 42e00 |  64 65 72 29 0a 20 20 20 20 20 20 28 68 6c 2d 6c    69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20  | der).......(hl-line-mode.1)..... | 
| 42e20 |  20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65    72 0a 20 20 20 20 20 20 20 28 63 75 72 72 65 6e  | ..(display-buffer........(curren | 
| 42e40 |  74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20    20 27 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66  | t-buffer)........'((display-buff | 
| 42e60 |  65 72 2d 69 6e 2d 73 69 64 65 2d 77 69 6e 64 6f    77 29 0a 20 20 20 20 20 20 20 20 20 28 73 69 64  | er-in-side-window)..........(sid | 
| 42e80 |  65 20 2e 20 62 6f 74 74 6f 6d 29 0a 20 20 20 20    20 20 20 20 20 28 77 69 6e 64 6f 77 2d 68 65 69  | e...bottom)..........(window-hei | 
| 42ea0 |  67 68 74 20 2e 20 66 69 74 2d 77 69 6e 64 6f 77    2d 74 6f 2d 62 75 66 66 65 72 29 0a 20 20 20 20  | ght...fit-window-to-buffer)..... | 
| 42ec0 |  20 20 20 20 20 28 73 6c 6f 74 20 2e 20 31 30 29    0a 20 20 20 20 20 20 20 20 20 28 62 6f 64 79 2d  | .....(slot...10)..........(body- | 
| 42ee0 |  66 75 6e 63 74 69 6f 6e 20 2e 20 73 65 6c 65 63    74 2d 77 69 6e 64 6f 77 29 29 29 29 29 29 0a 0a  | function...select-window)))))).. | 
| 42f00 |  3b 3b 3b 3b 20 53 74 61 74 65 20 6d 61 63 68 69    6e 65 20 68 61 6e 64 6c 65 72 73 0a 3b 3b 20 54  | ;;;;.State.machine.handlers.;;.T | 
| 42f20 |  68 65 20 6e 65 78 74 20 66 65 77 20 66 75 6e 63    74 69 6f 6e 73 20 61 72 65 20 64 65 66 61 75 6c  | he.next.few.functions.are.defaul | 
| 42f40 |  74 20 73 74 61 74 65 20 68 61 6e 64 6c 65 72 73    20 66 6f 72 20 67 70 74 65 6c 27 73 20 73 74 61  | t.state.handlers.for.gptel's.sta | 
| 42f60 |  74 65 20 6d 61 63 68 69 6e 65 2c 0a 3b 3b 20 73    65 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73  | te.machine,.;;.see.`gptel-reques | 
| 42f80 |  74 2d 2d 68 61 6e 64 6c 65 72 73 27 2e 0a 0a 28    64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e  | t--handlers'...(defun.gptel--han | 
| 42fa0 |  64 6c 65 2d 77 61 69 74 20 28 66 73 6d 29 0a 20    20 22 46 69 72 65 20 74 68 65 20 72 65 71 75 65  | dle-wait.(fsm)..."Fire.the.reque | 
| 42fc0 |  73 74 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20    73 74 61 74 65 20 6d 61 63 68 69 6e 65 20 46 53  | st.contained.in.state.machine.FS | 
| 42fe0 |  4d 27 73 20 69 6e 66 6f 2e 22 0a 20 20 3b 3b 20    52 65 73 65 74 20 73 6f 6d 65 20 66 6c 61 67 73  | M's.info."...;;.Reset.some.flags | 
| 43000 |  20 69 6e 20 69 6e 66 6f 2e 20 20 54 68 69 73 20    69 73 20 6e 65 63 65 73 73 61 72 79 20 77 68 65  | .in.info...This.is.necessary.whe | 
| 43020 |  6e 20 72 65 75 73 69 6e 67 20 66 73 6d 27 73 20    63 6f 6e 74 65 78 74 20 66 6f 72 0a 20 20 3b 3b  | n.reusing.fsm's.context.for...;; | 
| 43040 |  20 61 20 73 65 63 6f 6e 64 20 6e 65 74 77 6f 72    6b 20 72 65 71 75 65 73 74 3a 20 67 70 74 65 6c  | .a.second.network.request:.gptel | 
| 43060 |  20 74 65 73 74 73 20 66 6f 72 20 74 68 65 20 70    72 65 73 65 6e 63 65 20 6f 66 20 74 68 65 73 65  | .tests.for.the.presence.of.these | 
| 43080 |  20 66 6c 61 67 73 20 74 6f 0a 20 20 3b 3b 20 68    61 6e 64 6c 65 20 73 74 61 74 65 20 74 72 61 6e  | .flags.to...;;.handle.state.tran | 
| 430a0 |  73 69 74 69 6f 6e 73 2e 20 20 28 4e 4f 54 45 3a    20 44 6f 6e 27 74 20 61 64 64 20 3a 74 6f 6b 65  | sitions...(NOTE:.Don't.add.:toke | 
| 430c0 |  6e 20 74 6f 20 74 68 69 73 2e 29 0a 20 20 28 6c    65 74 20 28 28 69 6e 66 6f 20 28 67 70 74 65 6c  | n.to.this.)...(let.((info.(gptel | 
| 430e0 |  2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 29 29    0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6b 65  | -fsm-info.fsm))).....(dolist.(ke | 
| 43100 |  79 20 27 28 3a 74 6f 6f 6c 2d 73 75 63 63 65 73    73 20 3a 74 6f 6f 6c 2d 75 73 65 20 3a 65 72 72  | y.'(:tool-success.:tool-use.:err | 
| 43120 |  6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 68 74 74 70 2d 73 74 61 74  | or....................:http-stat | 
| 43140 |  75 73 20 3a 72 65 61 73 6f 6e 69 6e 67 20 3a 72    65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 29  | us.:reasoning.:reasoning-block)) | 
| 43160 |  0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 70 6c    69 73 74 2d 67 65 74 20 69 6e 66 6f 20 6b 65 79  | .......(when.(plist-get.info.key | 
| 43180 |  29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74    2d 70 75 74 20 69 6e 66 6f 20 6b 65 79 20 6e 69  | ).........(plist-put.info.key.ni | 
| 431a0 |  6c 29 29 29 29 0a 20 20 28 66 75 6e 63 61 6c 6c    0a 20 20 20 28 69 66 20 67 70 74 65 6c 2d 75 73  | l))))...(funcall....(if.gptel-us | 
| 431c0 |  65 2d 63 75 72 6c 0a 20 20 20 20 20 20 20 23 27    67 70 74 65 6c 2d 63 75 72 6c 2d 67 65 74 2d 72  | e-curl........#'gptel-curl-get-r | 
| 431e0 |  65 73 70 6f 6e 73 65 0a 20 20 20 20 20 23 27 67    70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65  | esponse......#'gptel--url-get-re | 
| 43200 |  73 70 6f 6e 73 65 29 0a 20 20 20 66 73 6d 29 0a    20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70  | sponse)....fsm)...(run-hooks.'gp | 
| 43220 |  74 65 6c 2d 70 6f 73 74 2d 72 65 71 75 65 73 74    2d 68 6f 6f 6b 29 0a 20 20 28 77 69 74 68 2d 63  | tel-post-request-hook)...(with-c | 
| 43240 |  75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70    6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d  | urrent-buffer.(plist-get.(gptel- | 
| 43260 |  66 73 6d 2d 69 6e 66 6f 20 66 73 6d 29 20 3a 62    75 66 66 65 72 29 0a 20 20 20 20 28 67 70 74 65  | fsm-info.fsm).:buffer).....(gpte | 
| 43280 |  6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73    20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27  | l--update-status.".Waiting...".' | 
| 432a0 |  77 61 72 6e 69 6e 67 29 29 29 0a 0a 28 64 65 66    75 6e 20 67 70 74 65 6c 2d 2d 68 61 6e 64 6c 65  | warning)))..(defun.gptel--handle | 
| 432c0 |  2d 70 72 65 2d 69 6e 73 65 72 74 20 28 66 73 6d    29 0a 20 20 22 54 61 73 6b 73 20 62 65 66 6f 72  | -pre-insert.(fsm)..."Tasks.befor | 
| 432e0 |  65 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65 20    4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 66 6f 72  | e.inserting.the.LLM.response.for | 
| 43300 |  20 73 74 61 74 65 20 46 53 4d 2e 0a 0a 48 61 6e    64 6c 65 20 72 65 61 64 2d 6f 6e 6c 79 20 62 75  | .state.FSM...Handle.read-only.bu | 
| 43320 |  66 66 65 72 73 20 61 6e 64 20 72 75 6e 20 70 72    65 2d 72 65 73 70 6f 6e 73 65 20 68 6f 6f 6b 73  | ffers.and.run.pre-response.hooks | 
| 43340 |  20 28 62 75 74 20 6f 6e 6c 79 20 69 66 0a 74 68    65 20 72 65 71 75 65 73 74 20 73 75 63 63 65 65  | .(but.only.if.the.request.succee | 
| 43360 |  64 65 64 29 2e 22 0a 20 20 28 6c 65 74 2a 20 28    28 69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d  | ded)."...(let*.((info.(gptel-fsm | 
| 43380 |  2d 69 6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20    20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b  | -info.fsm))..........(start-mark | 
| 433a0 |  65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e    66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 0a  | er.(plist-get.info.:position))). | 
| 433c0 |  20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 0a 20    20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20  | ....(when.(and............(memq. | 
| 433e0 |  28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20    3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20  | (plist-get.info.:callback)...... | 
| 43400 |  20 20 20 20 20 20 20 20 20 20 20 20 27 28 67 70    74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70  | ............'(gptel--insert-resp | 
| 43420 |  6f 6e 73 65 20 67 70 74 65 6c 2d 63 75 72 6c 2d    2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72  | onse.gptel-curl--stream-insert-r | 
| 43440 |  65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65  | esponse))............(with-curre | 
| 43460 |  6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74    2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65  | nt-buffer.(plist-get.info.:buffe | 
| 43480 |  72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6f 72 20 62 75 66 66 65 72 2d 72 65 61 64 2d  | r)..............(or.buffer-read- | 
| 434a0 |  6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d  | only..................(get-char- | 
| 434c0 |  70 72 6f 70 65 72 74 79 20 73 74 61 72 74 2d 6d    61 72 6b 65 72 20 27 72 65 61 64 2d 6f 6e 6c 79  | property.start-marker.'read-only | 
| 434e0 |  29 29 29 29 0a 20 20 20 20 20 20 28 6d 65 73 73    61 67 65 20 22 42 75 66 66 65 72 20 69 73 20 72  | )))).......(message."Buffer.is.r | 
| 43500 |  65 61 64 20 6f 6e 6c 79 2c 20 64 69 73 70 6c 61    79 69 6e 67 20 72 65 70 6c 79 20 69 6e 20 62 75  | ead.only,.displaying.reply.in.bu | 
| 43520 |  66 66 65 72 20 5c 22 2a 4c 4c 4d 20 72 65 73 70    6f 6e 73 65 2a 5c 22 22 29 0a 20 20 20 20 20 20  | ffer.\"*LLM.response*\"")....... | 
| 43540 |  28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a    20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72  | (display-buffer........(with-cur | 
| 43560 |  72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74    2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22  | rent-buffer.(get-buffer-create." | 
| 43580 |  2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a 22 29    0a 20 20 20 20 20 20 20 20 20 28 76 69 73 75 61  | *LLM.response*")..........(visua | 
| 435a0 |  6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20    20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68  | l-line-mode.1)..........(goto-ch | 
| 435c0 |  61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a    20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d  | ar.(point-max))..........(move-m | 
| 435e0 |  61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b    65 72 20 28 70 6f 69 6e 74 29 20 28 63 75 72 72  | arker.start-marker.(point).(curr | 
| 43600 |  65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20    20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62  | ent-buffer))..........(current-b | 
| 43620 |  75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 27    28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72  | uffer))........'((display-buffer | 
| 43640 |  2d 72 65 75 73 65 2d 77 69 6e 64 6f 77 0a 20 20    20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 2d  | -reuse-window...........display- | 
| 43660 |  62 75 66 66 65 72 2d 70 6f 70 2d 75 70 2d 77 69    6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 28  | buffer-pop-up-window)..........( | 
| 43680 |  72 65 75 73 61 62 6c 65 2d 66 72 61 6d 65 73 20    2e 20 76 69 73 69 62 6c 65 29 29 29 29 0a 20 20  | reusable-frames...visible))))... | 
| 436a0 |  20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d    62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62  | ..(with-current-buffer.(marker-b | 
| 436c0 |  75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b    65 72 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20  | uffer.start-marker).......(when. | 
| 436e0 |  28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20    3a 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20  | (plist-get.info.:stream)........ | 
| 43700 |  20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d    73 74 61 74 75 73 20 22 20 54 79 70 69 6e 67 2e  | .(gptel--update-status.".Typing. | 
| 43720 |  2e 2e 22 20 27 73 75 63 63 65 73 73 29 29 0a 20    20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72  | ..".'success)).......(save-excur | 
| 43740 |  73 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 67 6f    74 6f 2d 63 68 61 72 20 73 74 61 72 74 2d 6d 61  | sion.........(goto-char.start-ma | 
| 43760 |  72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 28 77    68 65 6e 20 28 61 6e 64 20 28 6d 65 6d 62 65 72  | rker).........(when.(and.(member | 
| 43780 |  20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f    20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 20 27  | .(plist-get.info.:http-status).' | 
| 437a0 |  28 22 32 30 30 22 20 22 31 30 30 22 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ("200"."100")).................. | 
| 437c0 |  20 20 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70    6f 6e 73 65 2d 68 6f 6f 6b 29 0a 20 20 20 20 20  | ..gptel-pre-response-hook)...... | 
| 437e0 |  20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20    27 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f  | .....(run-hooks.'gptel-pre-respo | 
| 43800 |  6e 73 65 2d 68 6f 6f 6b 29 29 29 29 29 29 0a 0a    28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68 61  | nse-hook))))))..(defun.gptel--ha | 
| 43820 |  6e 64 6c 65 2d 70 6f 73 74 2d 69 6e 73 65 72 74    20 28 66 73 6d 29 0a 20 20 22 54 61 73 6b 73 20  | ndle-post-insert.(fsm)..."Tasks. | 
| 43840 |  61 66 74 65 72 20 73 75 63 63 65 73 73 66 75 6c    6c 79 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65  | after.successfully.inserting.the | 
| 43860 |  20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 77 69    74 68 20 73 74 61 74 65 20 46 53 4d 2e 0a 0a 49  | .LLM.response.with.state.FSM...I | 
| 43880 |  6e 64 69 63 61 74 65 20 67 70 74 65 6c 20 73 74    61 74 75 73 2c 20 70 75 6c 73 65 20 74 68 65 20  | ndicate.gptel.status,.pulse.the. | 
| 438a0 |  69 6e 73 65 72 74 65 64 20 74 65 78 74 20 61 6e    64 20 72 75 6e 20 70 6f 73 74 2d 72 65 73 70 6f  | inserted.text.and.run.post-respo | 
| 438c0 |  6e 73 65 20 68 6f 6f 6b 73 2e 0a 0a 4e 6f 20 73    74 61 74 65 20 74 72 61 6e 73 69 74 69 6f 6e 20  | nse.hooks...No.state.transition. | 
| 438e0 |  68 65 72 65 20 73 69 6e 63 65 20 74 68 61 74 27    73 20 68 61 6e 64 6c 65 64 20 62 79 20 74 68 65  | here.since.that's.handled.by.the | 
| 43900 |  20 70 72 6f 63 65 73 73 20 73 65 6e 74 69 6e 65    6c 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 69  | .process.sentinels."...(let*.((i | 
| 43920 |  6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69    6e 66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20  | nfo.(gptel-fsm-info.fsm))....... | 
| 43940 |  20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72    20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f  | ...(start-marker.(plist-get.info | 
| 43960 |  20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20    20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d  | .:position))..........(tracking- | 
| 43980 |  6d 61 72 6b 65 72 20 28 6f 72 20 28 70 6c 69 73    74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 63  | marker.(or.(plist-get.info.:trac | 
| 439a0 |  6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | king-marker).................... | 
| 439c0 |  20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74    2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20  | ...........start-marker))....... | 
| 439e0 |  20 20 20 3b 3b 20 73 74 61 72 74 2d 6d 61 72 6b    65 72 20 6d 61 79 20 68 61 76 65 20 62 65 65 6e  | ...;;.start-marker.may.have.been | 
| 43a00 |  20 6d 6f 76 65 64 20 69 66 20 3a 62 75 66 66 65    72 20 77 61 73 20 72 65 61 64 2d 6f 6e 6c 79 0a  | .moved.if.:buffer.was.read-only. | 
| 43a20 |  20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62  | .........(gptel-buffer.(marker-b | 
| 43a40 |  75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b    65 72 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d  | uffer.start-marker))).....(with- | 
| 43a60 |  63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67    70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 20  | current-buffer.gptel-buffer..... | 
| 43a80 |  20 20 28 69 66 20 28 6e 6f 74 20 74 72 61 63 6b    69 6e 67 2d 6d 61 72 6b 65 72 29 20 20 20 20 20  | ..(if.(not.tracking-marker)..... | 
| 43aa0 |  20 20 20 20 3b 45 6d 70 74 79 20 72 65 73 70 6f    6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 28 77  | ....;Empty.response...........(w | 
| 43ac0 |  68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28    67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74  | hen.gptel-mode.(gptel--update-st | 
| 43ae0 |  61 74 75 73 20 22 20 45 6d 70 74 79 20 72 65 73    70 6f 6e 73 65 22 20 27 73 75 63 63 65 73 73 29  | atus.".Empty.response".'success) | 
| 43b00 |  29 0a 20 20 20 20 20 20 20 20 28 70 75 6c 73 65    2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 69 67 68 6c  | ).........(pulse-momentary-highl | 
| 43b20 |  69 67 68 74 2d 72 65 67 69 6f 6e 20 73 74 61 72    74 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e  | ight-region.start-marker.trackin | 
| 43b40 |  67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20    20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f  | g-marker).........(when.gptel-mo | 
| 43b60 |  64 65 0a 20 20 20 20 20 20 20 20 20 20 28 73 61    76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f  | de...........(save-excursion.(go | 
| 43b80 |  74 6f 2d 63 68 61 72 20 74 72 61 63 6b 69 6e 67    2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20  | to-char.tracking-marker)........ | 
| 43ba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 69 6e 73 65 72 74 20 67 70 74 65 6c  | ...................(insert.gptel | 
| 43bc0 |  2d 72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61    74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  | -response-separator............. | 
| 43be0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 70 72 6f  | ......................(gptel-pro | 
| 43c00 |  6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e    67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28  | mpt-prefix-string)))...........( | 
| 43c20 |  67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74    61 74 75 73 20 20 22 20 52 65 61 64 79 22 20 27  | gptel--update-status..".Ready".' | 
| 43c40 |  73 75 63 63 65 73 73 29 29 29 29 0a 20 20 20 20    3b 3b 20 52 75 6e 20 68 6f 6f 6b 20 69 6e 20 76  | success)))).....;;.Run.hook.in.v | 
| 43c60 |  69 73 69 62 6c 65 20 77 69 6e 64 6f 77 20 74 6f    20 73 65 74 20 77 69 6e 64 6f 77 2d 70 6f 69 6e  | isible.window.to.set.window-poin | 
| 43c80 |  74 2c 20 42 55 47 20 23 32 36 39 0a 20 20 20 20    28 69 66 2d 6c 65 74 2a 20 28 28 67 70 74 65 6c  | t,.BUG.#269.....(if-let*.((gptel | 
| 43ca0 |  2d 77 69 6e 64 6f 77 20 28 67 65 74 2d 62 75 66    66 65 72 2d 77 69 6e 64 6f 77 20 67 70 74 65 6c  | -window.(get-buffer-window.gptel | 
| 43cc0 |  2d 62 75 66 66 65 72 20 27 76 69 73 69 62 6c 65    29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74  | -buffer.'visible))).........(wit | 
| 43ce0 |  68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f    77 20 67 70 74 65 6c 2d 77 69 6e 64 6f 77 0a 20  | h-selected-window.gptel-window.. | 
| 43d00 |  20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f    6f 6b 2d 77 69 74 68 2d 61 72 67 73 0a 20 20 20  | .........(run-hook-with-args.... | 
| 43d20 |  20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 70    6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e  | ........'gptel-post-response-fun | 
| 43d40 |  63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20    20 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69  | ctions............(marker-positi | 
| 43d60 |  6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29    20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f  | on.start-marker).(marker-positio | 
| 43d80 |  6e 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65    72 29 29 29 0a 20 20 20 20 20 20 28 77 69 74 68  | n.tracking-marker))).......(with | 
| 43da0 |  2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20    67 70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20  | -current-buffer.gptel-buffer.... | 
| 43dc0 |  20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 2d 77    69 74 68 2d 61 72 67 73 0a 20 20 20 20 20 20 20  | .....(run-hook-with-args........ | 
| 43de0 |  20 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65    73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73  | ..'gptel-post-response-functions | 
| 43e00 |  0a 20 20 20 20 20 20 20 20 20 28 6d 61 72 6b 65    72 2d 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74  | ..........(marker-position.start | 
| 43e20 |  2d 6d 61 72 6b 65 72 29 20 28 6d 61 72 6b 65 72    2d 70 6f 73 69 74 69 6f 6e 20 74 72 61 63 6b 69  | -marker).(marker-position.tracki | 
| 43e40 |  6e 67 2d 6d 61 72 6b 65 72 29 29 29 29 29 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 68  | ng-marker))))))..(defun.gptel--h | 
| 43e60 |  61 6e 64 6c 65 2d 65 72 72 6f 72 20 28 66 73 6d    29 0a 20 20 22 43 68 65 63 6b 20 66 6f 72 20 65  | andle-error.(fsm)..."Check.for.e | 
| 43e80 |  72 72 6f 72 73 20 69 6e 20 72 65 71 75 65 73 74    20 73 74 61 74 65 20 46 53 4d 20 70 65 72 66 6f  | rrors.in.request.state.FSM.perfo | 
| 43ea0 |  72 6d 20 55 49 20 75 70 64 61 74 65 73 2e 0a 0a    52 75 6e 20 70 6f 73 74 2d 72 65 73 70 6f 6e 73  | rm.UI.updates...Run.post-respons | 
| 43ec0 |  65 20 68 6f 6f 6b 73 2e 22 0a 20 20 28 77 68 65    6e 2d 6c 65 74 2a 20 28 28 69 6e 66 6f 20 28 67  | e.hooks."...(when-let*.((info.(g | 
| 43ee0 |  70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73    6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ptel-fsm-info.fsm))............. | 
| 43f00 |  20 20 28 65 72 72 6f 72 2d 64 61 74 61 20 28 70    6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 65  | ..(error-data.(plist-get.info.:e | 
| 43f20 |  72 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 68 74 74 70 2d 6d 73 67 20 20  | rror))...............(http-msg.. | 
| 43f40 |  20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f    20 3a 73 74 61 74 75 73 29 29 0a 20 20 20 20 20  | .(plist-get.info.:status))...... | 
| 43f60 |  20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65  | .........(gptel-buffer.(plist-ge | 
| 43f80 |  74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | t.info.:buffer))...............( | 
| 43fa0 |  73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6c    69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f  | start-marker.(plist-get.info.:po | 
| 43fc0 |  73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67  | sition))...............(tracking | 
| 43fe0 |  2d 6d 61 72 6b 65 72 20 28 6f 72 20 28 70 6c 69    73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61  | -marker.(or.(plist-get.info.:tra | 
| 44000 |  63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | cking-marker)................... | 
| 44020 |  20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72    74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20  | ............start-marker))...... | 
| 44040 |  20 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e    64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20  | .........(backend-name.......... | 
| 44060 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63    6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20  | ......(gptel-backend-name....... | 
| 44080 |  20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65    72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67  | ..........(buffer-local-value.'g | 
| 440a0 |  70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74    65 6c 2d 62 75 66 66 65 72 29 29 29 29 0a 20 20  | ptel-backend.gptel-buffer))))... | 
| 440c0 |  20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 65    72 72 6f 72 2d 64 61 74 61 29 0a 20 20 20 20 20  | ..(if.(stringp.error-data)...... | 
| 440e0 |  20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20    65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20  | ...(message."%s.error:.(%s).%s". | 
| 44100 |  62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74    70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72  | backend-name.http-msg.(string-tr | 
| 44120 |  69 6d 20 65 72 72 6f 72 2d 64 61 74 61 29 29 0a    20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a  | im.error-data)).......(when-let* | 
| 44140 |  20 28 28 65 72 72 6f 72 2d 74 79 70 65 20 28 70    6c 69 73 74 2d 67 65 74 20 65 72 72 6f 72 2d 64  | .((error-type.(plist-get.error-d | 
| 44160 |  61 74 61 20 3a 74 79 70 65 29 29 29 0a 20 20 20    20 20 20 20 20 28 73 65 74 71 20 68 74 74 70 2d  | ata.:type))).........(setq.http- | 
| 44180 |  6d 73 67 20 28 63 6f 6e 63 61 74 20 22 28 22 20    20 68 74 74 70 2d 6d 73 67 20 22 29 20 22 20 28  | msg.(concat."("..http-msg.").".( | 
| 441a0 |  73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f    72 2d 74 79 70 65 29 29 29 29 0a 20 20 20 20 20  | string-trim.error-type))))...... | 
| 441c0 |  20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 65 72    72 6f 72 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67  | .(when-let*.((error-msg.(plist-g | 
| 441e0 |  65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 6d    65 73 73 61 67 65 29 29 29 0a 20 20 20 20 20 20  | et.error-data.:message)))....... | 
| 44200 |  20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 65    72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62  | ..(message."%s.error:.(%s).%s".b | 
| 44220 |  61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70    2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69  | ackend-name.http-msg.(string-tri | 
| 44240 |  6d 20 65 72 72 6f 72 2d 6d 73 67 29 29 29 29 0a    20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e  | m.error-msg)))).....(with-curren | 
| 44260 |  74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62    75 66 66 65 72 0a 20 20 20 20 20 20 28 77 68 65  | t-buffer.gptel-buffer.......(whe | 
| 44280 |  6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20    20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64  | n.gptel-mode.........(gptel--upd | 
| 442a0 |  61 74 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20    20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 45 72  | ate-status..........(format.".Er | 
| 442c0 |  72 6f 72 3a 20 25 73 22 20 68 74 74 70 2d 6d 73    67 29 20 27 65 72 72 6f 72 29 29 29 0a 20 20 20  | ror:.%s".http-msg).'error))).... | 
| 442e0 |  20 28 69 66 2d 6c 65 74 2a 20 28 28 67 70 74 65    6c 2d 77 69 6e 64 6f 77 20 28 67 65 74 2d 62 75  | .(if-let*.((gptel-window.(get-bu | 
| 44300 |  66 66 65 72 2d 77 69 6e 64 6f 77 20 67 70 74 65    6c 2d 62 75 66 66 65 72 20 27 76 69 73 69 62 6c  | ffer-window.gptel-buffer.'visibl | 
| 44320 |  65 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69    74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64  | e))).........(with-selected-wind | 
| 44340 |  6f 77 20 67 70 74 65 6c 2d 77 69 6e 64 6f 77 0a    20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68  | ow.gptel-window...........(run-h | 
| 44360 |  6f 6f 6b 2d 77 69 74 68 2d 61 72 67 73 0a 20 20    20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d  | ook-with-args............'gptel- | 
| 44380 |  70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75    6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20  | post-response-functions......... | 
| 443a0 |  20 20 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74    69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72  | ...(marker-position.start-marker | 
| 443c0 |  29 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69    6f 6e 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b  | ).(marker-position.tracking-mark | 
| 443e0 |  65 72 29 29 29 0a 20 20 20 20 20 20 28 77 69 74    68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72  | er))).......(with-current-buffer | 
| 44400 |  20 67 70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20    20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 2d  | .gptel-buffer.........(run-hook- | 
| 44420 |  77 69 74 68 2d 61 72 67 73 0a 20 20 20 20 20 20    20 20 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72  | with-args..........'gptel-post-r | 
| 44440 |  65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e    73 0a 20 20 20 20 20 20 20 20 20 28 6d 61 72 6b  | esponse-functions..........(mark | 
| 44460 |  65 72 2d 70 6f 73 69 74 69 6f 6e 20 73 74 61 72    74 2d 6d 61 72 6b 65 72 29 20 28 6d 61 72 6b 65  | er-position.start-marker).(marke | 
| 44480 |  72 2d 70 6f 73 69 74 69 6f 6e 20 74 72 61 63 6b    69 6e 67 2d 6d 61 72 6b 65 72 29 29 29 29 29 29  | r-position.tracking-marker)))))) | 
| 444a0 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d    68 61 6e 64 6c 65 2d 74 6f 6f 6c 2d 75 73 65 20  | ..(defun.gptel--handle-tool-use. | 
| 444c0 |  28 66 73 6d 29 0a 20 20 22 52 75 6e 20 74 6f 6f    6c 20 63 61 6c 6c 73 20 63 61 70 74 75 72 65 64  | (fsm)..."Run.tool.calls.captured | 
| 444e0 |  20 69 6e 20 46 53 4d 2c 20 61 6e 64 20 61 64 76    61 6e 63 65 20 74 68 65 20 73 74 61 74 65 20 6d  | .in.FSM,.and.advance.the.state.m | 
| 44500 |  61 63 68 69 6e 65 20 77 69 74 68 20 74 68 65 20    72 65 73 75 6c 74 73 2e 22 0a 20 20 28 77 68 65  | achine.with.the.results."...(whe | 
| 44520 |  6e 2d 6c 65 74 2a 20 28 28 69 6e 66 6f 20 28 67    70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73  | n-let*.((info.(gptel-fsm-info.fs | 
| 44540 |  6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 62 61 63 6b 65 6e 64 20 28 70 6c 69 73  | m))...............(backend.(plis | 
| 44560 |  74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b    65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20  | t-get.info.:backend))........... | 
| 44580 |  20 20 20 20 3b 3b 20 54 68 69 73 20 66 75 6e 63    74 69 6f 6e 20 6d 69 67 68 74 20 72 75 6e 20 6d  | ....;;.This.function.might.run.m | 
| 445a0 |  61 6e 79 20 74 69 6d 65 73 2c 20 73 6f 20 6f 6e    6c 79 20 61 63 74 20 6f 6e 20 74 68 65 20 72 65  | any.times,.so.only.act.on.the.re | 
| 445c0 |  6d 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c    6c 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20  | maining.tool.calls.............. | 
| 445e0 |  20 20 28 74 6f 6f 6c 2d 75 73 65 20 28 63 6c 2d    72 65 6d 6f 76 65 2d 69 66 20 28 6c 61 6d 62 64  | ..(tool-use.(cl-remove-if.(lambd | 
| 44600 |  61 20 28 74 63 29 20 28 70 6c 69 73 74 2d 67 65    74 20 74 63 20 3a 72 65 73 75 6c 74 29 29 0a 20  | a.(tc).(plist-get.tc.:result)).. | 
| 44620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 44640 |  20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20    69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29  | .....(plist-get.info.:tool-use)) | 
| 44660 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6e 74 6f 6f 6c 73 20 28 6c 65 6e 67 74 68 20  | )...............(ntools.(length. | 
| 44680 |  74 6f 6f 6c 2d 75 73 65 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c 2d 69  | tool-use))...............(tool-i | 
| 446a0 |  64 78 20 30 29 29 0a 20 20 20 20 28 77 69 74 68    2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20  | dx.0)).....(with-current-buffer. | 
| 446c0 |  28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20    3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28  | (plist-get.info.:buffer).......( | 
| 446e0 |  77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a    20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d  | when.gptel-mode.........(gptel-- | 
| 44700 |  75 70 64 61 74 65 2d 73 74 61 74 75 73 0a 20 20    20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22  | update-status..........(format." | 
| 44720 |  20 43 61 6c 6c 69 6e 67 20 74 6f 6f 6c 2e 2e 2e    22 20 29 20 27 6d 6f 64 65 2d 6c 69 6e 65 2d 65  | .Calling.tool...".).'mode-line-e | 
| 44740 |  6d 70 68 61 73 69 73 29 29 0a 0a 20 20 20 20 20    20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 2d 61  | mphasis))........(let.((result-a | 
| 44760 |  6c 69 73 74 29 20 28 70 65 6e 64 69 6e 67 2d 63    61 6c 6c 73 29 29 0a 20 20 20 20 20 20 20 20 28  | list).(pending-calls)).........( | 
| 44780 |  6d 61 70 63 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b  | mapc...........................; | 
| 447a0 |  20 43 6f 6e 73 74 72 75 63 74 20 66 75 6e 63 74    69 6f 6e 20 63 61 6c 6c 73 0a 20 20 20 20 20 20  | .Construct.function.calls....... | 
| 447c0 |  20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c    2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 20 20 20  | ...(lambda.(tool-call).......... | 
| 447e0 |  20 20 28 6c 65 74 72 65 63 20 28 28 61 72 67 73    20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c  | ..(letrec.((args.(plist-get.tool | 
| 44800 |  2d 63 61 6c 6c 20 3a 61 72 67 73 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -call.:args))................... | 
| 44820 |  20 20 28 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67    65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 6e 61  | ..(name.(plist-get.tool-call.:na | 
| 44840 |  6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 61 72 67 2d 76 61  | me)).....................(arg-va | 
| 44860 |  6c 75 65 73 20 6e 69 6c 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74  | lues.nil).....................(t | 
| 44880 |  6f 6f 6c 2d 73 70 65 63 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | ool-spec......................(c | 
| 448a0 |  6c 2d 66 69 6e 64 2d 69 66 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l-find-if....................... | 
| 448c0 |  28 6c 61 6d 62 64 61 20 28 74 73 29 20 28 65 71    75 61 6c 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d  | (lambda.(ts).(equal.(gptel-tool- | 
| 448e0 |  6e 61 6d 65 20 74 73 29 20 6e 61 6d 65 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | name.ts).name))................. | 
| 44900 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74    20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 29 29 29 0a  | ......(plist-get.info.:tools))). | 
| 44920 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 72 6f 63 65 73 73 2d 74 6f 6f  | ....................(process-too | 
| 44940 |  6c 2d 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c  | l-result......................(l | 
| 44960 |  61 6d 62 64 61 20 28 72 65 73 75 6c 74 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ambda.(result).................. | 
| 44980 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74    20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 73 75 63 63  | ......(plist-put.info.:tool-succ | 
| 449a0 |  65 73 73 20 74 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c  | ess.t)........................(l | 
| 449c0 |  65 74 20 28 28 72 65 73 75 6c 74 20 28 67 70 74    65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 72 65  | et.((result.(gptel--to-string.re | 
| 449e0 |  73 75 6c 74 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | sult)))......................... | 
| 44a00 |  20 28 70 6c 69 73 74 2d 70 75 74 20 74 6f 6f 6c    2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 20 72 65  | .(plist-put.tool-call.:result.re | 
| 44a20 |  73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | sult)..........................( | 
| 44a40 |  70 75 73 68 20 28 6c 69 73 74 20 74 6f 6f 6c 2d    73 70 65 63 20 61 72 67 73 20 72 65 73 75 6c 74  | push.(list.tool-spec.args.result | 
| 44a60 |  29 20 72 65 73 75 6c 74 2d 61 6c 69 73 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).result-alist))................ | 
| 44a80 |  20 20 20 20 20 20 20 20 28 63 6c 2d 69 6e 63 66    20 74 6f 6f 6c 2d 69 64 78 29 0a 20 20 20 20 20  | ........(cl-incf.tool-idx)...... | 
| 44aa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 77 68 65 6e 20 28 3e 3d 20 74 6f 6f 6c  | ..................(when.(>=.tool | 
| 44ac0 |  2d 69 64 78 20 6e 74 6f 6f 6c 73 29 20 3b 20 41    6c 6c 20 74 6f 6f 6c 73 20 68 61 76 65 20 72 75  | -idx.ntools).;.All.tools.have.ru | 
| 44ae0 |  6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65  | n..........................(gpte | 
| 44b00 |  6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70 74    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l--inject-prompt................ | 
| 44b20 |  20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65    6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e  | ...........backend.(plist-get.in | 
| 44b40 |  66 6f 20 3a 64 61 74 61 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fo.:data)....................... | 
| 44b60 |  20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73    65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 0a 20  | ....(gptel--parse-tool-results.. | 
| 44b80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e  | ..........................backen | 
| 44ba0 |  64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66    6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29 0a 20  | d.(plist-get.info.:tool-use))).. | 
| 44bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c  | ........................(funcall | 
| 44be0 |  20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f    20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20  | .(plist-get.info.:callback)..... | 
| 44c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | ..............................(c | 
| 44c20 |  6f 6e 73 20 27 74 6f 6f 6c 2d 72 65 73 75 6c 74    20 72 65 73 75 6c 74 2d 61 6c 69 73 74 29 20 69  | ons.'tool-result.result-alist).i | 
| 44c40 |  6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67  | nfo)..........................(g | 
| 44c60 |  70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69    74 69 6f 6e 20 66 73 6d 29 29 29 29 29 0a 20 20  | ptel--fsm-transition.fsm)))))... | 
| 44c80 |  20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28    6e 75 6c 6c 20 74 6f 6f 6c 2d 73 70 65 63 29 0a  | ...........(if.(null.tool-spec). | 
| 44ca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6d 65 73 73 61 67 65 20 22 55 6e 6b 6e 6f  | .................(message."Unkno | 
| 44cc0 |  77 6e 20 74 6f 6f 6c 20 63 61 6c 6c 65 64 20 62    79 20 6d 6f 64 65 6c 3a 20 25 73 22 20 6e 61 6d  | wn.tool.called.by.model:.%s".nam | 
| 44ce0 |  65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 73 65 74 71 20 61 72 67 2d 76 61 6c 75  | e)................(setq.arg-valu | 
| 44d00 |  65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 0a  | es......................(mapcar. | 
| 44d20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61  | ......................(lambda.(a | 
| 44d40 |  72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74  | rg).........................(let | 
| 44d60 |  20 28 28 6b 65 79 20 28 69 6e 74 65 72 6e 20 28    63 6f 6e 63 61 74 20 22 3a 22 20 28 70 6c 69 73  | .((key.(intern.(concat.":".(plis | 
| 44d80 |  74 2d 67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29    29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | t-get.arg.:name)))))............ | 
| 44da0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 6c 69 73 74 2d 67 65 74 20 61 72 67 73 20 6b  | ...............(plist-get.args.k | 
| 44dc0 |  65 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74  | ey))).......................(gpt | 
| 44de0 |  65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f    6c 2d 73 70 65 63 29 29 29 0a 20 20 20 20 20 20  | el-tool-args.tool-spec)))....... | 
| 44e00 |  20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 63    6b 20 69 66 20 74 6f 6f 6c 20 72 65 71 75 69 72  | .........;;.Check.if.tool.requir | 
| 44e20 |  65 73 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | es.confirmation................( | 
| 44e40 |  69 66 20 28 61 6e 64 20 67 70 74 65 6c 2d 63 6f    6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73  | if.(and.gptel-confirm-tool-calls | 
| 44e60 |  20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63    6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c  | .(or.(eq.gptel-confirm-tool-call | 
| 44e80 |  73 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s.t)............................ | 
| 44ea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c  | ..........................(gptel | 
| 44ec0 |  2d 74 6f 6f 6c 2d 63 6f 6e 66 69 72 6d 20 74 6f    6f 6c 2d 73 70 65 63 29 29 29 0a 20 20 20 20 20  | -tool-confirm.tool-spec)))...... | 
| 44ee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70    75 73 68 20 28 6c 69 73 74 20 74 6f 6f 6c 2d 73  | ..............(push.(list.tool-s | 
| 44f00 |  70 65 63 20 61 72 67 2d 76 61 6c 75 65 73 20 70    72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 65 73 75  | pec.arg-values.process-tool-resu | 
| 44f20 |  6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 70 65 6e  | lt)..........................pen | 
| 44f40 |  64 69 6e 67 2d 63 61 6c 6c 73 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | ding-calls)..................;;. | 
| 44f60 |  49 66 20 6e 6f 74 2c 20 72 75 6e 20 74 68 65 20    74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20  | If.not,.run.the.tool............ | 
| 44f80 |  20 20 20 20 20 20 28 69 66 20 28 67 70 74 65 6c    2d 74 6f 6f 6c 2d 61 73 79 6e 63 20 74 6f 6f 6c  | ......(if.(gptel-tool-async.tool | 
| 44fa0 |  2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70  | -spec)......................(app | 
| 44fc0 |  6c 79 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 66    75 6e 63 74 69 6f 6e 20 74 6f 6f 6c 2d 73 70 65  | ly.(gptel-tool-function.tool-spe | 
| 44fe0 |  63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  | c).............................p | 
| 45000 |  72 6f 63 65 73 73 2d 74 6f 6f 6c 2d 72 65 73 75    6c 74 20 61 72 67 2d 76 61 6c 75 65 73 29 0a 20  | rocess-tool-result.arg-values).. | 
| 45020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 0a  | ..................(let.((result. | 
| 45040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69  | ..........................(condi | 
| 45060 |  74 69 6f 6e 2d 63 61 73 65 20 65 72 72 64 61 74    61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tion-case.errdata............... | 
| 45080 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 61 70 70 6c 79 20 28 67 70 74 65 6c 2d 74 6f  | ................(apply.(gptel-to | 
| 450a0 |  6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 74 6f 6f 6c    2d 73 70 65 63 29 20 61 72 67 2d 76 61 6c 75 65  | ol-function.tool-spec).arg-value | 
| 450c0 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | s).............................( | 
| 450e0 |  65 72 72 6f 72 20 28 6d 61 70 63 6f 6e 63 61 74    20 23 27 67 70 74 65 6c 2d 2d 74 6f 2d 73 74 72  | error.(mapconcat.#'gptel--to-str | 
| 45100 |  69 6e 67 20 65 72 72 64 61 74 61 20 22 20 22 29    29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ing.errdata.".")))))............ | 
| 45120 |  20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61    6c 6c 20 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d  | ..........(funcall.process-tool- | 
| 45140 |  72 65 73 75 6c 74 20 72 65 73 75 6c 74 29 29 29    29 29 29 29 0a 20 20 20 20 20 20 20 20 20 74 6f  | result.result)))))))..........to | 
| 45160 |  6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 20 20 20    28 77 68 65 6e 20 70 65 6e 64 69 6e 67 2d 63 61  | ol-use).........(when.pending-ca | 
| 45180 |  6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 28 73    65 74 71 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c  | lls...........(setq.gptel--fsm-l | 
| 451a0 |  61 73 74 20 66 73 6d 29 0a 20 20 20 20 20 20 20    20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d  | ast.fsm)...........(when.gptel-m | 
| 451c0 |  6f 64 65 20 28 67 70 74 65 6c 2d 2d 75 70 64 61    74 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20  | ode.(gptel--update-status....... | 
| 451e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20  | ......................(format.". | 
| 45200 |  52 75 6e 20 74 6f 6f 6c 73 3f 22 20 29 20 27 6d    6f 64 65 2d 6c 69 6e 65 2d 65 6d 70 68 61 73 69  | Run.tools?".).'mode-line-emphasi | 
| 45220 |  73 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66    75 6e 63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 65  | s))...........(funcall.(plist-ge | 
| 45240 |  74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.info.:callback)............... | 
| 45260 |  20 20 20 20 20 28 63 6f 6e 73 20 27 74 6f 6f 6c    2d 63 61 6c 6c 20 70 65 6e 64 69 6e 67 2d 63 61  | .....(cons.'tool-call.pending-ca | 
| 45280 |  6c 6c 73 29 20 69 6e 66 6f 29 29 29 29 29 29 0a    0a 3b 3b 3b 3b 20 53 74 61 74 65 20 6d 61 63 68  | lls).info))))))..;;;;.State.mach | 
| 452a0 |  69 6e 65 20 70 72 65 64 69 63 61 74 65 73 0a 3b    3b 20 50 72 65 64 69 63 61 74 65 73 20 75 73 65  | ine.predicates.;;.Predicates.use | 
| 452c0 |  64 20 74 6f 20 66 69 6e 64 20 74 68 65 20 6e 65    78 74 20 73 74 61 74 65 20 74 6f 20 74 72 61 6e  | d.to.find.the.next.state.to.tran | 
| 452e0 |  73 69 74 69 6f 6e 20 74 6f 2c 20 73 65 65 0a 3b    3b 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74  | sition.to,.see.;;.`gptel-request | 
| 45300 |  2d 2d 74 72 61 6e 73 69 74 69 6f 6e 73 27 2e 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 65  | --transitions'...(defun.gptel--e | 
| 45320 |  72 72 6f 72 2d 70 20 28 69 6e 66 6f 29 20 28 70    6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 65  | rror-p.(info).(plist-get.info.:e | 
| 45340 |  72 72 6f 72 29 29 0a 0a 28 64 65 66 75 6e 20 67    70 74 65 6c 2d 2d 74 6f 6f 6c 2d 75 73 65 2d 70  | rror))..(defun.gptel--tool-use-p | 
| 45360 |  20 28 69 6e 66 6f 29 0a 20 20 28 61 6e 64 20 28    70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a  | .(info)...(and.(plist-get.info.: | 
| 45380 |  74 6f 6f 6c 73 29 20 28 70 6c 69 73 74 2d 67 65    74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65  | tools).(plist-get.info.:tool-use | 
| 453a0 |  29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65    6c 2d 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 2d 70  | )))..(defun.gptel--tool-result-p | 
| 453c0 |  20 28 69 6e 66 6f 29 0a 20 20 28 61 6e 64 20 28    70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a  | .(info)...(and.(plist-get.info.: | 
| 453e0 |  74 6f 6f 6c 73 29 20 28 70 6c 69 73 74 2d 67 65    74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 73 75 63  | tools).(plist-get.info.:tool-suc | 
| 45400 |  63 65 73 73 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f    28 70 72 6f 6d 70 74 2d 6c 69 73 74 29 3a 20 44  | cess)))..;;.TODO(prompt-list):.D | 
| 45420 |  6f 63 75 6d 65 6e 74 20 6e 65 77 20 70 72 6f 6d    70 74 20 69 6e 70 75 74 20 66 6f 72 6d 61 74 20  | ocument.new.prompt.input.format. | 
| 45440 |  74 6f 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73    74 27 2e 0a 0c 0a 3b 3b 3b 20 53 65 6e 64 20 71  | to.`gptel-request'....;;;.Send.q | 
| 45460 |  75 65 72 69 65 73 2c 20 68 61 6e 64 6c 65 20 72    65 73 70 6f 6e 73 65 73 0a 28 63 6c 2d 64 65 66  | ueries,.handle.responses.(cl-def | 
| 45480 |  75 6e 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74    0a 20 20 20 20 28 26 6f 70 74 69 6f 6e 61 6c 20  | un.gptel-request.....(&optional. | 
| 454a0 |  70 72 6f 6d 70 74 20 26 6b 65 79 20 63 61 6c 6c    62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20  | prompt.&key.callback............ | 
| 454c0 |  20 20 20 20 28 62 75 66 66 65 72 20 28 63 75 72    72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20  | ....(buffer.(current-buffer))... | 
| 454e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73    69 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 64 72  | .............position.context.dr | 
| 45500 |  79 2d 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 73 74 72 65 61 6d 20 6e 69 6c  | y-run................(stream.nil | 
| 45520 |  29 20 28 69 6e 2d 70 6c 61 63 65 20 6e 69 6c 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).(in-place.nil)................ | 
| 45540 |  28 73 79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 73    79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20  | (system.gptel--system-message).. | 
| 45560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72    61 6e 73 66 6f 72 6d 73 20 28 66 73 6d 20 28 67  | ..............transforms.(fsm.(g | 
| 45580 |  70 74 65 6c 2d 6d 61 6b 65 2d 66 73 6d 29 29 29    0a 20 20 22 52 65 71 75 65 73 74 20 61 20 72 65  | ptel-make-fsm)))..."Request.a.re | 
| 455a0 |  73 70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20    60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20  | sponse.from.the.`gptel-backend'. | 
| 455c0 |  66 6f 72 20 50 52 4f 4d 50 54 2e 0a 0a 54 68 65    20 72 65 71 75 65 73 74 20 69 73 20 61 73 79 6e  | for.PROMPT...The.request.is.asyn | 
| 455e0 |  63 68 72 6f 6e 6f 75 73 2c 20 74 68 69 73 20 66    75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  | chronous,.this.function.returns. | 
| 45600 |  69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 0a 49 66    20 50 52 4f 4d 50 54 20 69 73 0a 2d 20 61 20 73  | immediately...If.PROMPT.is.-.a.s | 
| 45620 |  74 72 69 6e 67 2c 20 69 74 20 69 73 20 75 73 65    64 20 74 6f 20 63 72 65 61 74 65 20 61 20 66 75  | tring,.it.is.used.to.create.a.fu | 
| 45640 |  6c 6c 20 70 72 6f 6d 70 74 20 73 75 69 74 61 62    6c 65 20 66 6f 72 0a 20 20 73 65 6e 64 69 6e 67  | ll.prompt.suitable.for...sending | 
| 45660 |  20 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a 2d 20 41    20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73  | .to.the.LLM..-.A.list.of.strings | 
| 45680 |  2c 20 69 74 20 69 73 20 69 6e 74 65 72 70 72 65    74 65 64 20 61 73 20 61 20 63 6f 6e 76 65 72 73  | ,.it.is.interpreted.as.a.convers | 
| 456a0 |  61 74 69 6f 6e 2c 20 69 2e 65 2e 20 61 0a 20 20    73 65 72 69 65 73 20 6f 66 20 61 6c 74 65 72 6e  | ation,.i.e..a...series.of.altern | 
| 456c0 |  61 74 69 6e 67 20 75 73 65 72 20 70 72 6f 6d 70    74 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f  | ating.user.prompts.and.LLM.respo | 
| 456e0 |  6e 73 65 73 2e 0a 20 20 28 5c 22 75 73 65 72 20    6d 73 67 20 31 5c 22 20 5c 22 6c 6c 6d 20 6d 73  | nses....(\"user.msg.1\".\"llm.ms | 
| 45700 |  67 20 31 5c 22 20 5c 22 75 73 65 72 20 6d 73 67    20 32 5c 22 20 5c 22 6c 6c 6d 20 6d 73 67 20 32  | g.1\".\"user.msg.2\".\"llm.msg.2 | 
| 45720 |  5c 22 20 2e 2e 2e 29 0a 2d 20 6e 69 6c 20 62 75    74 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69  | \"....).-.nil.but.region.is.acti | 
| 45740 |  76 65 2c 20 74 68 65 20 72 65 67 69 6f 6e 20 63    6f 6e 74 65 6e 74 73 20 61 72 65 20 75 73 65 64  | ve,.the.region.contents.are.used | 
| 45760 |  2e 0a 2d 20 6e 69 6c 2c 20 74 68 65 20 63 75 72    72 65 6e 74 20 62 75 66 66 65 72 27 73 20 63 6f  | ..-.nil,.the.current.buffer's.co | 
| 45780 |  6e 74 65 6e 74 73 20 75 70 20 74 6f 20 28 70 6f    69 6e 74 29 20 61 72 65 20 75 73 65 64 2e 0a 20  | ntents.up.to.(point).are.used... | 
| 457a0 |  20 50 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e    73 65 73 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d  | .Previous.responses.from.the.LLM | 
| 457c0 |  20 61 72 65 20 69 64 65 6e 74 69 66 69 65 64 20    61 73 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 4b  | .are.identified.as.responses...K | 
| 457e0 |  65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73    3a 0a 0a 43 41 4c 4c 42 41 43 4b 2c 20 69 66 20  | eyword.arguments:..CALLBACK,.if. | 
| 45800 |  73 75 70 70 6c 69 65 64 2c 20 69 73 20 61 20 66    75 6e 63 74 69 6f 6e 20 6f 66 20 74 77 6f 20 61  | supplied,.is.a.function.of.two.a | 
| 45820 |  72 67 75 6d 65 6e 74 73 2c 20 63 61 6c 6c 65 64    0a 77 69 74 68 20 74 68 65 20 52 45 53 50 4f 4e  | rguments,.called.with.the.RESPON | 
| 45840 |  53 45 20 28 75 73 75 61 6c 6c 79 20 61 20 73 74    72 69 6e 67 29 20 61 6e 64 20 49 4e 46 4f 20 28  | SE.(usually.a.string).and.INFO.( | 
| 45860 |  61 20 70 6c 69 73 74 29 3a 0a 0a 20 28 66 75 6e    63 61 6c 6c 20 43 41 4c 4c 42 41 43 4b 20 52 45  | a.plist):...(funcall.CALLBACK.RE | 
| 45880 |  53 50 4f 4e 53 45 20 49 4e 46 4f 29 0a 0a 52 45    53 50 4f 4e 53 45 20 69 73 0a 0a 2d 20 41 20 73  | SPONSE.INFO)..RESPONSE.is..-.A.s | 
| 458a0 |  74 72 69 6e 67 20 69 66 20 74 68 65 20 72 65 71    75 65 73 74 20 77 61 73 20 73 75 63 63 65 73 73  | tring.if.the.request.was.success | 
| 458c0 |  66 75 6c 0a 2d 20 6e 69 6c 20 69 66 20 74 68 65    72 65 20 77 61 73 20 6e 6f 20 72 65 73 70 6f 6e  | ful.-.nil.if.there.was.no.respon | 
| 458e0 |  73 65 20 6f 72 20 61 6e 20 65 72 72 6f 72 2e 0a    0a 54 68 65 73 65 20 61 72 65 20 74 68 65 20 6f  | se.or.an.error...These.are.the.o | 
| 45900 |  6e 6c 79 20 74 77 6f 20 63 61 73 65 73 20 79 6f    75 20 74 79 70 69 63 61 6c 6c 79 20 6e 65 65 64  | nly.two.cases.you.typically.need | 
| 45920 |  20 74 6f 20 63 6f 6e 73 69 64 65 72 2c 0a 75 6e    6c 65 73 73 20 79 6f 75 20 6e 65 65 64 20 74 6f  | .to.consider,.unless.you.need.to | 
| 45940 |  20 63 6c 65 61 6e 20 75 70 20 61 66 74 65 72 20    61 62 6f 72 74 65 64 20 72 65 71 75 65 73 74 73  | .clean.up.after.aborted.requests | 
| 45960 |  2c 20 75 73 65 20 4c 4c 4d 0a 74 6f 6f 6c 73 2c    20 68 61 6e 64 6c 65 20 5c 22 72 65 61 73 6f 6e  | ,.use.LLM.tools,.handle.\"reason | 
| 45980 |  69 6e 67 5c 22 20 63 6f 6e 74 65 6e 74 20 73 70    65 63 69 61 6c 6c 79 20 6f 72 20 73 74 72 65 61  | ing\".content.specially.or.strea | 
| 459a0 |  6d 0a 72 65 73 70 6f 6e 73 65 73 20 28 73 65 65    20 53 54 52 45 41 4d 29 2e 20 20 49 6e 20 74 68  | m.responses.(see.STREAM)...In.th | 
| 459c0 |  65 73 65 20 63 61 73 65 73 2c 20 52 45 53 50 4f    4e 53 45 20 63 61 6e 20 62 65 0a 0a 2d 20 54 68  | ese.cases,.RESPONSE.can.be..-.Th | 
| 459e0 |  65 20 73 79 6d 62 6f 6c 20 60 61 62 6f 72 74 27    20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20  | e.symbol.`abort'.if.the.request. | 
| 45a00 |  69 73 20 61 62 6f 72 74 65 64 2c 20 73 65 65 20    60 67 70 74 65 6c 2d 61 62 6f 72 74 27 2e 0a 0a  | is.aborted,.see.`gptel-abort'... | 
| 45a20 |  2d 20 41 20 63 6f 6e 73 20 63 65 6c 6c 20 6f 66    20 74 68 65 20 66 6f 72 6d 0a 0a 20 20 28 74 6f  | -.A.cons.cell.of.the.form....(to | 
| 45a40 |  6f 6c 2d 63 61 6c 6c 20 2e 20 28 28 54 4f 4f 4c    20 41 52 47 53 20 43 42 29 20 2e 2e 2e 29 29 0a  | ol-call...((TOOL.ARGS.CB)....)). | 
| 45a60 |  0a 20 20 77 68 65 72 65 20 54 4f 4f 4c 20 69 73    20 61 20 67 70 74 65 6c 2d 74 6f 6f 6c 20 73 74  | ...where.TOOL.is.a.gptel-tool.st | 
| 45a80 |  72 75 63 74 2c 20 41 52 47 53 20 69 73 20 61 20    70 6c 69 73 74 20 6f 66 0a 20 20 61 72 67 75 6d  | ruct,.ARGS.is.a.plist.of...argum | 
| 45aa0 |  65 6e 74 73 2c 20 61 6e 64 20 43 42 20 69 73 20    61 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 68  | ents,.and.CB.is.a.function.for.h | 
| 45ac0 |  61 6e 64 6c 69 6e 67 20 74 68 65 20 72 65 73 75    6c 74 73 2e 20 20 59 6f 75 0a 20 20 63 61 6e 20  | andling.the.results...You...can. | 
| 45ae0 |  63 61 6c 6c 20 43 42 20 77 69 74 68 20 74 68 65    20 72 65 73 75 6c 74 20 6f 66 20 63 61 6c 6c 69  | call.CB.with.the.result.of.calli | 
| 45b00 |  6e 67 20 74 68 65 20 74 6f 6f 6c 20 74 6f 20 63    6f 6e 74 69 6e 75 65 20 74 68 65 0a 20 20 72 65  | ng.the.tool.to.continue.the...re | 
| 45b20 |  71 75 65 73 74 2e 0a 0a 2d 20 41 20 63 6f 6e 73    20 63 65 6c 6c 20 6f 66 20 74 68 65 20 66 6f 72  | quest...-.A.cons.cell.of.the.for | 
| 45b40 |  6d 0a 0a 20 20 28 74 6f 6f 6c 2d 72 65 73 75 6c    74 20 2e 20 28 28 54 4f 4f 4c 20 41 52 47 53 20  | m....(tool-result...((TOOL.ARGS. | 
| 45b60 |  52 45 53 55 4c 54 29 20 2e 2e 2e 29 29 0a 0a 20    20 77 68 65 72 65 20 54 4f 4f 4c 20 69 73 20 61  | RESULT)....))....where.TOOL.is.a | 
| 45b80 |  20 67 70 74 65 6c 2d 74 6f 6f 6c 20 73 74 72 75    63 74 2c 20 41 52 47 53 20 69 73 20 61 20 70 6c  | .gptel-tool.struct,.ARGS.is.a.pl | 
| 45ba0 |  69 73 74 20 6f 66 0a 20 20 61 72 67 75 6d 65 6e    74 73 2c 20 61 6e 64 20 52 45 53 55 4c 54 20 77  | ist.of...arguments,.and.RESULT.w | 
| 45bc0 |  61 73 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d    20 63 61 6c 6c 69 6e 67 20 74 68 65 20 74 6f 6f  | as.returned.from.calling.the.too | 
| 45be0 |  6c 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 2d    20 41 20 63 6f 6e 73 20 63 65 6c 6c 20 6f 66 20  | l...function...-.A.cons.cell.of. | 
| 45c00 |  74 68 65 20 66 6f 72 6d 0a 0a 20 20 28 72 65 61    73 6f 6e 69 6e 67 20 2e 20 74 65 78 74 29 0a 0a  | the.form....(reasoning...text).. | 
| 45c20 |  20 20 77 68 65 72 65 20 74 65 78 74 20 69 73 20    74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20  | ..where.text.is.the.contents.of. | 
| 45c40 |  74 68 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c    6f 63 6b 2e 20 20 28 41 6c 73 6f 20 73 65 65 0a  | the.reasoning.block...(Also.see. | 
| 45c60 |  20 20 53 54 52 45 41 4d 20 69 66 20 79 6f 75 20    61 72 65 20 75 73 69 6e 67 20 73 74 72 65 61 6d  | ..STREAM.if.you.are.using.stream | 
| 45c80 |  69 6e 67 2e 29 0a 0a 53 65 65 20 60 67 70 74 65    6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e  | ing.)..See.`gptel--insert-respon | 
| 45ca0 |  73 65 27 20 66 6f 72 20 61 6e 20 65 78 61 6d 70    6c 65 20 63 61 6c 6c 62 61 63 6b 20 68 61 6e 64  | se'.for.an.example.callback.hand | 
| 45cc0 |  6c 69 6e 67 20 61 6c 6c 0a 63 61 73 65 73 2e 0a    0a 54 68 65 20 49 4e 46 4f 20 70 6c 69 73 74 20  | ling.all.cases...The.INFO.plist. | 
| 45ce0 |  68 61 73 20 28 61 74 20 6c 65 61 73 74 29 20 74    68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79  | has.(at.least).the.following.key | 
| 45d00 |  73 3a 0a 3a 64 61 74 61 20 20 20 20 20 20 20 20    20 2d 20 54 68 65 20 72 65 71 75 65 73 74 20 64  | s:.:data.........-.The.request.d | 
| 45d20 |  61 74 61 20 69 6e 63 6c 75 64 65 64 20 77 69 74    68 20 74 68 65 20 71 75 65 72 79 0a 3a 70 6f 73  | ata.included.with.the.query.:pos | 
| 45d40 |  69 74 69 6f 6e 20 20 20 20 20 2d 20 6d 61 72 6b    65 72 20 61 74 20 74 68 65 20 70 6f 69 6e 74 20  | ition.....-.marker.at.the.point. | 
| 45d60 |  74 68 65 20 72 65 71 75 65 73 74 20 77 61 73 20    73 65 6e 74 2c 20 75 6e 6c 65 73 73 0a 20 20 20  | the.request.was.sent,.unless.... | 
| 45d80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 50 4f 53    49 54 49 4f 4e 20 69 73 20 73 70 65 63 69 66 69  | .............POSITION.is.specifi | 
| 45da0 |  65 64 2e 0a 3a 62 75 66 66 65 72 20 20 20 20 20    20 20 2d 20 54 68 65 20 62 75 66 66 65 72 20 63  | ed..:buffer.......-.The.buffer.c | 
| 45dc0 |  75 72 72 65 6e 74 20 77 68 65 6e 20 74 68 65 20    72 65 71 75 65 73 74 20 77 61 73 20 73 65 6e 74  | urrent.when.the.request.was.sent | 
| 45de0 |  2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 75 6e 6c 65 73 73 20 42 55 46 46 45 52 20  | ,.................unless.BUFFER. | 
| 45e00 |  69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3a 73    74 61 74 75 73 20 20 20 20 20 20 20 2d 20 53 68  | is.specified..:status.......-.Sh | 
| 45e20 |  6f 72 74 20 73 74 72 69 6e 67 20 64 65 73 63 72    69 62 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74  | ort.string.describing.the.result | 
| 45e40 |  20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2c    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .of.the.request,................ | 
| 45e60 |  20 69 6e 63 6c 75 64 69 6e 67 20 70 6f 73 73 69    62 6c 65 20 48 54 54 50 20 65 72 72 6f 72 73 2e  | .including.possible.HTTP.errors. | 
| 45e80 |  0a 0a 45 78 61 6d 70 6c 65 20 6f 66 20 61 20 63    61 6c 6c 62 61 63 6b 20 74 68 61 74 20 6d 65 73  | ..Example.of.a.callback.that.mes | 
| 45ea0 |  73 61 67 65 73 20 74 68 65 20 75 73 65 72 20 77    69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65  | sages.the.user.with.the.response | 
| 45ec0 |  0a 61 6e 64 20 69 6e 66 6f 3a 0a 0a 20 28 6c 61    6d 62 64 61 20 28 72 65 73 70 6f 6e 73 65 20 69  | .and.info:...(lambda.(response.i | 
| 45ee0 |  6e 66 6f 29 0a 20 20 28 69 66 20 28 73 74 72 69    6e 67 70 20 72 65 73 70 6f 6e 73 65 29 0a 20 20  | nfo)...(if.(stringp.response)... | 
| 45f00 |  20 20 20 20 28 6c 65 74 20 28 28 70 6f 73 6e 20    28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e  | ....(let.((posn.(marker-position | 
| 45f20 |  20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f    20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20  | .(plist-get.info.:position)))... | 
| 45f40 |  20 20 20 20 20 20 20 20 20 20 28 62 75 66 20 20    28 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 70 6c  | ..........(buf..(buffer-name.(pl | 
| 45f60 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75    66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 20  | ist-get.info.:buffer))))........ | 
| 45f80 |  20 28 6d 65 73 73 61 67 65 20 5c 22 52 65 73 70    6f 6e 73 65 20 66 6f 72 20 72 65 71 75 65 73 74  | .(message.\"Response.for.request | 
| 45fa0 |  20 66 72 6f 6d 20 25 53 20 61 74 20 25 64 3a 20    25 73 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20  | .from.%S.at.%d:.%s\"............ | 
| 45fc0 |  20 20 20 20 20 20 62 75 66 20 70 6f 73 6e 20 72    65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 28 6d  | ......buf.posn.response)).....(m | 
| 45fe0 |  65 73 73 61 67 65 20 5c 22 67 70 74 65 6c 2d 72    65 71 75 65 73 74 20 66 61 69 6c 65 64 20 77 69  | essage.\"gptel-request.failed.wi | 
| 46000 |  74 68 20 6d 65 73 73 61 67 65 3a 20 25 73 5c 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | th.message:.%s\"..............(p | 
| 46020 |  6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73    74 61 74 75 73 29 29 29 29 0a 0a 4f 72 2c 20 66  | list-get.info.:status))))..Or,.f | 
| 46040 |  6f 72 20 6a 75 73 74 20 74 68 65 20 72 65 73 70    6f 6e 73 65 3a 0a 0a 20 28 6c 61 6d 62 64 61 20  | or.just.the.response:...(lambda. | 
| 46060 |  28 72 65 73 70 6f 6e 73 65 20 5f 29 0a 20 20 3b    3b 20 44 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77  | (response._)...;;.Do.something.w | 
| 46080 |  69 74 68 20 72 65 73 70 6f 6e 73 65 0a 20 20 28    6d 65 73 73 61 67 65 20 28 72 6f 74 31 33 2d 73  | ith.response...(message.(rot13-s | 
| 460a0 |  74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29    29 0a 0a 49 66 20 43 41 4c 4c 42 41 43 4b 20 69  | tring.response)))..If.CALLBACK.i | 
| 460c0 |  73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 72    65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72  | s.omitted,.the.response.is.inser | 
| 460e0 |  74 65 64 20 61 74 20 74 68 65 20 70 6f 69 6e 74    20 74 68 65 0a 72 65 71 75 65 73 74 20 77 61 73  | ted.at.the.point.the.request.was | 
| 46100 |  20 73 65 6e 74 2e 0a 0a 53 54 52 45 41 4d 20 69    73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 68 61 74  | .sent...STREAM.is.a.boolean.that | 
| 46120 |  20 64 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74    68 65 20 72 65 73 70 6f 6e 73 65 20 73 68 6f 75  | .determines.if.the.response.shou | 
| 46140 |  6c 64 20 62 65 0a 73 74 72 65 61 6d 65 64 2c 20    61 73 20 69 6e 20 60 67 70 74 65 6c 2d 73 74 72  | ld.be.streamed,.as.in.`gptel-str | 
| 46160 |  65 61 6d 27 2e 20 20 49 66 20 74 68 65 20 6d 6f    64 65 6c 20 6f 72 20 74 68 65 20 62 61 63 6b 65  | eam'...If.the.model.or.the.backe | 
| 46180 |  6e 64 20 64 6f 65 73 0a 6e 6f 74 20 73 75 70 70    6f 72 74 20 73 74 72 65 61 6d 69 6e 67 2c 20 74  | nd.does.not.support.streaming,.t | 
| 461a0 |  68 69 73 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f    72 65 64 2e 0a 0a 57 68 65 6e 20 73 74 72 65 61  | his.will.be.ignored...When.strea | 
| 461c0 |  6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 0a    2d 20 43 41 4c 4c 42 41 43 4b 20 77 69 6c 6c 20  | ming.responses..-.CALLBACK.will. | 
| 461e0 |  62 65 20 63 61 6c 6c 65 64 20 72 65 70 65 61 74    65 64 6c 79 20 77 69 74 68 20 65 61 63 68 20 52  | be.called.repeatedly.with.each.R | 
| 46200 |  45 53 50 4f 4e 53 45 20 74 65 78 74 0a 20 20 63    68 75 6e 6b 20 28 61 20 73 74 72 69 6e 67 29 20  | ESPONSE.text...chunk.(a.string). | 
| 46220 |  61 73 20 69 74 20 69 73 20 72 65 63 65 69 76 65    64 2e 0a 2d 20 57 68 65 6e 20 74 68 65 20 48 54  | as.it.is.received..-.When.the.HT | 
| 46240 |  54 50 20 72 65 71 75 65 73 74 20 65 6e 64 73 20    73 75 63 63 65 73 73 66 75 6c 6c 79 2c 20 43 41  | TP.request.ends.successfully,.CA | 
| 46260 |  4c 4c 42 41 43 4b 20 77 69 6c 6c 20 62 65 0a 20    20 63 61 6c 6c 65 64 20 77 69 74 68 20 61 20 52  | LLBACK.will.be...called.with.a.R | 
| 46280 |  45 53 50 4f 4e 53 45 20 61 72 67 75 6d 65 6e 74    20 6f 66 20 74 20 74 6f 20 69 6e 64 69 63 61 74  | ESPONSE.argument.of.t.to.indicat | 
| 462a0 |  65 20 73 75 63 63 65 73 73 2e 0a 2d 20 53 69 6d    69 6c 61 72 6c 79 2c 20 43 41 4c 4c 42 41 43 4b  | e.success..-.Similarly,.CALLBACK | 
| 462c0 |  20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20    77 69 74 68 0a 20 20 28 72 65 61 73 6f 6e 69 6e  | .will.be.called.with...(reasonin | 
| 462e0 |  67 20 2e 20 74 65 78 74 2d 63 68 75 6e 6b 29 20    66 6f 72 20 65 61 63 68 20 72 65 61 73 6f 6e 69  | g...text-chunk).for.each.reasoni | 
| 46300 |  6e 67 20 63 68 75 6e 6b 2c 20 61 6e 64 0a 20 20    28 72 65 61 73 6f 6e 69 6e 67 20 2e 20 74 29 20  | ng.chunk,.and...(reasoning...t). | 
| 46320 |  74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 65 20    65 6e 64 20 6f 66 20 74 68 65 20 72 65 61 73 6f  | to.indicate.the.end.of.the.reaso | 
| 46340 |  6e 69 6e 67 20 62 6c 6f 63 6b 2e 0a 0a 42 55 46    46 45 52 20 61 6e 64 20 50 4f 53 49 54 49 4f 4e  | ning.block...BUFFER.and.POSITION | 
| 46360 |  20 61 72 65 20 74 68 65 20 62 75 66 66 65 72 20    61 6e 64 20 70 6f 73 69 74 69 6f 6e 20 28 69 6e  | .are.the.buffer.and.position.(in | 
| 46380 |  74 65 67 65 72 20 6f 72 0a 6d 61 72 6b 65 72 29    20 61 74 20 77 68 69 63 68 20 74 68 65 20 72 65  | teger.or.marker).at.which.the.re | 
| 463a0 |  73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74    65 64 2e 20 20 49 66 20 61 20 43 41 4c 4c 42 41  | sponse.is.inserted...If.a.CALLBA | 
| 463c0 |  43 4b 20 69 73 0a 73 70 65 63 69 66 69 65 64 2c    20 6e 6f 20 72 65 73 70 6f 6e 73 65 20 69 73 20  | CK.is.specified,.no.response.is. | 
| 463e0 |  69 6e 73 65 72 74 65 64 20 61 6e 64 20 74 68 65    73 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  | inserted.and.these.arguments.are | 
| 46400 |  0a 69 67 6e 6f 72 65 64 2c 20 62 75 74 20 74 68    65 79 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61  | .ignored,.but.they.are.still.ava | 
| 46420 |  69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 49 4e    46 4f 20 70 6c 69 73 74 20 70 61 73 73 65 64 0a  | ilable.in.the.INFO.plist.passed. | 
| 46440 |  74 6f 20 43 41 4c 4c 42 41 43 4b 20 66 6f 72 20    79 6f 75 20 74 6f 20 75 73 65 2e 0a 0a 42 55 46  | to.CALLBACK.for.you.to.use...BUF | 
| 46460 |  46 45 52 20 64 65 66 61 75 6c 74 73 20 74 6f 20    74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66  | FER.defaults.to.the.current.buff | 
| 46480 |  65 72 2c 20 61 6e 64 20 50 4f 53 49 54 49 4f 4e    20 74 6f 20 74 68 65 20 76 61 6c 75 65 0a 6f 66  | er,.and.POSITION.to.the.value.of | 
| 464a0 |  20 28 70 6f 69 6e 74 29 20 6f 72 20 28 72 65 67    69 6f 6e 2d 65 6e 64 29 2c 20 64 65 70 65 6e 64  | .(point).or.(region-end),.depend | 
| 464c0 |  69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 74    68 65 20 72 65 67 69 6f 6e 20 69 73 0a 61 63 74  | ing.on.whether.the.region.is.act | 
| 464e0 |  69 76 65 2e 0a 0a 43 4f 4e 54 45 58 54 20 69 73    20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20  | ive...CONTEXT.is.any.additional. | 
| 46500 |  64 61 74 61 20 6e 65 65 64 65 64 20 66 6f 72 20    74 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20  | data.needed.for.the.callback.to. | 
| 46520 |  72 75 6e 2e 20 49 74 0a 69 73 20 69 6e 63 6c 75    64 65 64 20 69 6e 20 74 68 65 20 49 4e 46 4f 20  | run..It.is.included.in.the.INFO. | 
| 46540 |  61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20    63 61 6c 6c 62 61 63 6b 2e 0a 4e 6f 74 65 3a 20  | argument.to.the.callback..Note:. | 
| 46560 |  54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 64    20 66 6f 72 20 73 74 6f 72 69 6e 67 20 45 6d 61  | This.is.intended.for.storing.Ema | 
| 46580 |  63 73 20 73 74 61 74 65 20 74 6f 20 62 65 20 75    73 65 64 20 62 79 0a 43 41 4c 4c 42 41 43 4b 2c  | cs.state.to.be.used.by.CALLBACK, | 
| 465a0 |  20 61 6e 64 20 75 6e 72 65 6c 61 74 65 64 20 74    6f 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 75  | .and.unrelated.to.the.context.su | 
| 465c0 |  70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 4c 4c    4d 2e 0a 0a 53 59 53 54 45 4d 20 69 73 20 74 68  | pplied.to.the.LLM...SYSTEM.is.th | 
| 465e0 |  65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65    20 6f 72 20 65 78 74 65 6e 64 65 64 20 63 68 61  | e.system.message.or.extended.cha | 
| 46600 |  74 20 64 69 72 65 63 74 69 76 65 20 73 65 6e 74    20 74 6f 0a 74 68 65 20 4c 4c 4d 2e 20 20 54 68  | t.directive.sent.to.the.LLM...Th | 
| 46620 |  69 73 20 63 61 6e 20 62 65 20 61 20 73 74 72 69    6e 67 2c 20 61 20 6c 69 73 74 20 6f 66 20 73 74  | is.can.be.a.string,.a.list.of.st | 
| 46640 |  72 69 6e 67 73 20 6f 72 20 61 20 66 75 6e 63 74    69 6f 6e 0a 74 68 61 74 20 72 65 74 75 72 6e 73  | rings.or.a.function.that.returns | 
| 46660 |  20 65 69 74 68 65 72 3b 20 73 65 65 20 60 67 70    74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 20  | .either;.see.`gptel-directives'. | 
| 46680 |  66 6f 72 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d 61    74 69 6f 6e 2e 20 49 66 20 53 59 53 54 45 4d 20  | for.more.information..If.SYSTEM. | 
| 466a0 |  69 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20    76 61 6c 75 65 20 6f 66 0a 60 67 70 74 65 6c 2d  | is.omitted,.the.value.of.`gptel- | 
| 466c0 |  2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 27    20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74  | -system-message'.for.the.current | 
| 466e0 |  20 62 75 66 66 65 72 20 69 73 20 75 73 65 64 2e    0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  | .buffer.is.used...The.following. | 
| 46700 |  6b 65 79 77 6f 72 64 73 20 61 72 65 20 6d 61 69    6e 6c 79 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c  | keywords.are.mainly.for.internal | 
| 46720 |  20 75 73 65 3a 0a 0a 49 4e 2d 50 4c 41 43 45 20    69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 75 73 65  | .use:..IN-PLACE.is.a.boolean.use | 
| 46740 |  64 20 62 79 20 74 68 65 20 64 65 66 61 75 6c 74    20 63 61 6c 6c 62 61 63 6b 20 77 68 65 6e 20 69  | d.by.the.default.callback.when.i | 
| 46760 |  6e 73 65 72 74 69 6e 67 0a 74 68 65 20 72 65 73    70 6f 6e 73 65 20 74 6f 20 64 65 74 65 72 6d 69  | nserting.the.response.to.determi | 
| 46780 |  6e 65 20 69 66 20 64 65 6c 69 6d 69 74 65 72 73    20 61 72 65 20 6e 65 65 64 65 64 20 62 65 74 77  | ne.if.delimiters.are.needed.betw | 
| 467a0 |  65 65 6e 20 74 68 65 0a 70 72 6f 6d 70 74 20 61    6e 64 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e  | een.the.prompt.and.the.response. | 
| 467c0 |  0a 0a 49 66 20 44 52 59 2d 52 55 4e 20 69 73 20    6e 6f 6e 2d 6e 69 6c 2c 20 64 6f 20 6e 6f 74 20  | ..If.DRY-RUN.is.non-nil,.do.not. | 
| 467e0 |  73 65 6e 64 20 74 68 65 20 72 65 71 75 65 73 74    2e 20 20 43 6f 6e 73 74 72 75 63 74 20 61 6e 64  | send.the.request...Construct.and | 
| 46800 |  0a 72 65 74 75 72 6e 20 61 20 73 74 61 74 65 20    6d 61 63 68 69 6e 65 20 6f 62 6a 65 63 74 20 74  | .return.a.state.machine.object.t | 
| 46820 |  68 61 74 20 63 61 6e 20 62 65 20 69 6e 74 72 6f    73 70 65 63 74 65 64 20 61 6e 64 0a 72 65 73 75  | hat.can.be.introspected.and.resu | 
| 46840 |  6d 65 64 2e 0a 0a 54 52 41 4e 53 46 4f 52 4d 53    20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 66 75  | med...TRANSFORMS.is.a.list.of.fu | 
| 46860 |  6e 63 74 69 6f 6e 73 20 75 73 65 64 20 74 6f 20    74 72 61 6e 73 66 6f 72 6d 20 74 68 65 20 70 72  | nctions.used.to.transform.the.pr | 
| 46880 |  6f 6d 70 74 20 6f 72 20 71 75 65 72 79 0a 70 61    72 61 6d 65 74 65 72 73 20 64 79 6e 61 6d 69 63  | ompt.or.query.parameters.dynamic | 
| 468a0 |  61 6c 6c 79 2e 20 20 45 61 63 68 20 66 75 6e 63    74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 69  | ally...Each.function.is.called.i | 
| 468c0 |  6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75    66 66 65 72 0a 63 6f 6e 74 61 69 6e 69 6e 67 20  | n.a.temporary.buffer.containing. | 
| 468e0 |  74 68 65 20 70 72 6f 6d 70 74 20 74 6f 20 62 65    20 73 65 6e 74 2c 20 61 6e 64 20 63 61 6e 20 63  | the.prompt.to.be.sent,.and.can.c | 
| 46900 |  6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 6d 6f 64    69 66 79 20 74 68 69 73 0a 62 75 66 66 65 72 2e  | onditionally.modify.this.buffer. | 
| 46920 |  20 20 54 68 69 73 20 63 61 6e 20 69 6e 63 6c 75    64 65 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20  | ..This.can.include.changing.the. | 
| 46940 |  28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 29 20 76    61 6c 75 65 73 20 6f 66 20 74 68 65 0a 6d 6f 64  | (buffer-local).values.of.the.mod | 
| 46960 |  65 6c 2c 20 62 61 63 6b 65 6e 64 20 6f 72 20 73    79 73 74 65 6d 20 70 72 6f 6d 70 74 2c 20 6f 72  | el,.backend.or.system.prompt,.or | 
| 46980 |  20 61 75 67 6d 65 6e 74 69 6e 67 20 74 68 65 20    70 72 6f 6d 70 74 20 77 69 74 68 0a 61 64 64 69  | .augmenting.the.prompt.with.addi | 
| 469a0 |  74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69    6f 6e 20 28 73 75 63 68 20 61 73 20 66 72 6f 6d  | tional.information.(such.as.from | 
| 469c0 |  20 61 20 52 41 47 20 65 6e 67 69 6e 65 29 2e 0a    0a 2d 20 53 79 6e 63 68 72 6f 6e 6f 75 73 20 74  | .a.RAG.engine)...-.Synchronous.t | 
| 469e0 |  72 61 6e 73 66 6f 72 6d 65 72 73 20 61 72 65 20    63 61 6c 6c 65 64 20 77 69 74 68 20 7a 65 72 6f  | ransformers.are.called.with.zero | 
| 46a00 |  20 6f 72 20 6f 6e 65 20 61 72 67 75 6d 65 6e 74    2c 20 74 68 65 0a 20 20 73 74 61 74 65 20 6d 61  | .or.one.argument,.the...state.ma | 
| 46a20 |  63 68 69 6e 65 20 66 6f 72 20 74 68 65 20 72 65    71 75 65 73 74 2e 0a 0a 2d 20 41 73 79 6e 63 68  | chine.for.the.request...-.Asynch | 
| 46a40 |  72 6f 6e 6f 75 73 20 74 72 61 6e 73 66 6f 72 6d    65 72 73 20 61 72 65 20 63 61 6c 6c 65 64 20 77  | ronous.transformers.are.called.w | 
| 46a60 |  69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74    73 2c 20 61 20 63 61 6c 6c 62 61 63 6b 0a 20 20  | ith.two.arguments,.a.callback... | 
| 46a80 |  61 6e 64 20 74 68 65 20 73 74 61 74 65 20 6d 61    63 68 69 6e 65 2e 20 20 49 74 20 73 68 6f 75 6c  | and.the.state.machine...It.shoul | 
| 46aa0 |  64 20 72 75 6e 20 74 68 65 20 63 61 6c 6c 62 61    63 6b 20 61 66 74 65 72 20 66 69 6e 69 73 68 69  | d.run.the.callback.after.finishi | 
| 46ac0 |  6e 67 20 69 74 73 0a 20 20 74 72 61 6e 73 66 6f    72 6d 61 74 69 6f 6e 2e 0a 0a 53 65 65 20 60 67  | ng.its...transformation...See.`g | 
| 46ae0 |  70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e    73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 27  | ptel-prompt-transform-functions' | 
| 46b00 |  20 66 6f 72 20 6d 6f 72 65 2e 0a 0a 46 53 4d 20    69 73 20 74 68 65 20 73 74 61 74 65 20 6d 61 63  | .for.more...FSM.is.the.state.mac | 
| 46b20 |  68 69 6e 65 20 64 72 69 76 69 6e 67 20 74 68 65    20 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20  | hine.driving.the.request...This. | 
| 46b40 |  63 61 6e 20 62 65 20 75 73 65 64 0a 74 6f 20 64    65 66 69 6e 65 20 61 20 63 75 73 74 6f 6d 20 72  | can.be.used.to.define.a.custom.r | 
| 46b60 |  65 71 75 65 73 74 20 63 6f 6e 74 72 6f 6c 20 66    6c 6f 77 2c 20 73 65 65 20 60 67 70 74 65 6c 2d  | equest.control.flow,.see.`gptel- | 
| 46b80 |  66 73 6d 27 20 66 6f 72 0a 64 65 74 61 69 6c 73    2e 20 20 59 6f 75 20 63 61 6e 20 73 61 66 65 6c  | fsm'.for.details...You.can.safel | 
| 46ba0 |  79 20 69 67 6e 6f 72 65 20 74 68 69 73 20 2d 2d    20 46 53 4d 20 69 73 20 61 6e 20 75 6e 73 74 61  | y.ignore.this.--.FSM.is.an.unsta | 
| 46bc0 |  62 6c 65 0a 66 65 61 74 75 72 65 20 61 6e 64 20    73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67  | ble.feature.and.subject.to.chang | 
| 46be0 |  65 2e 0a 0a 4e 6f 74 65 3a 0a 0a 31 2e 20 54 68    69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e  | e...Note:..1..This.function.is.n | 
| 46c00 |  6f 74 20 66 75 6c 6c 79 20 73 65 6c 66 2d 63 6f    6e 74 61 69 6e 65 64 2e 20 20 43 6f 6e 73 69 64  | ot.fully.self-contained...Consid | 
| 46c20 |  65 72 0a 6c 65 74 2d 62 69 6e 64 69 6e 67 20 74    68 65 20 70 61 72 61 6d 65 74 65 72 73 20 60 67  | er.let-binding.the.parameters.`g | 
| 46c40 |  70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 2c 20 60    67 70 74 65 6c 2d 6d 6f 64 65 6c 27 2c 0a 60 67  | ptel-backend',.`gptel-model',.`g | 
| 46c60 |  70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 27 20    61 6e 64 20 60 67 70 74 65 6c 2d 75 73 65 2d 63  | ptel-use-tools'.and.`gptel-use-c | 
| 46c80 |  6f 6e 74 65 78 74 27 20 61 72 6f 75 6e 64 20 63    61 6c 6c 73 20 74 6f 20 69 74 20 61 73 0a 72 65  | ontext'.around.calls.to.it.as.re | 
| 46ca0 |  71 75 69 72 65 64 2e 0a 0a 32 2e 20 54 68 65 20    72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20  | quired...2..The.return.value.of. | 
| 46cc0 |  74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73    20 61 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65  | this.function.is.a.state.machine | 
| 46ce0 |  20 74 68 61 74 20 6d 61 79 0a 62 65 20 75 73 65    64 20 74 6f 20 72 65 72 75 6e 20 6f 72 20 63 6f  | .that.may.be.used.to.rerun.or.co | 
| 46d00 |  6e 74 69 6e 75 65 20 74 68 65 20 72 65 71 75 65    73 74 20 61 74 20 61 20 6c 61 74 65 72 20 74 69  | ntinue.the.request.at.a.later.ti | 
| 46d20 |  6d 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20    28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 3b 3b  | me."...(declare.(indent.1))...;; | 
| 46d40 |  20 54 4f 44 4f 20 52 65 6d 6f 76 65 20 74 68 69    73 20 63 68 65 63 6b 20 69 6e 20 76 65 72 73 69  | .TODO.Remove.this.check.in.versi | 
| 46d60 |  6f 6e 20 31 2e 30 0a 20 20 28 67 70 74 65 6c 2d    2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29  | on.1.0...(gptel--sanitize-model) | 
| 46d80 |  0a 20 20 28 6c 65 74 2a 20 28 28 73 74 61 72 74    2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20  | ...(let*.((start-marker......... | 
| 46da0 |  20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20    20 20 20 28 28 6e 75 6c 6c 20 70 6f 73 69 74 69  | ..(cond............((null.positi | 
| 46dc0 |  6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d  | on).............(if.(use-region- | 
| 46de0 |  70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 28  | p).................(set-marker.( | 
| 46e00 |  6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 28 72 65    67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 20  | make-marker).(region-end))...... | 
| 46e20 |  20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    2d 61 74 2d 77 6f 72 64 2d 65 6e 64 20 28 70 6f  | .........(gptel--at-word-end.(po | 
| 46e40 |  69 6e 74 2d 6d 61 72 6b 65 72 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 28 28 6d 61 72 6b  | int-marker))))............((mark | 
| 46e60 |  65 72 70 20 70 6f 73 69 74 69 6f 6e 29 20 70 6f    73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20  | erp.position).position)......... | 
| 46e80 |  20 20 20 28 28 69 6e 74 65 67 65 72 70 20 70 6f    73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20  | ...((integerp.position)......... | 
| 46ea0 |  20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20    28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 70 6f  | ....(set-marker.(make-marker).po | 
| 46ec0 |  73 69 74 69 6f 6e 20 62 75 66 66 65 72 29 29 29    29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d  | sition.buffer))))..........(prom | 
| 46ee0 |  70 74 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 64 20 20 20 20 20 20 20  | pt-buffer...........(cond....... | 
| 46f00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 70 72 6f 6d 70 74 20 66 72 6f 6d 20 62 75 66  | ................;prompt.from.buf | 
| 46f20 |  66 65 72 20 6f 72 20 65 78 70 6c 69 63 69 74 6c    79 20 73 75 70 70 6c 69 65 64 0a 20 20 20 20 20  | fer.or.explicitly.supplied...... | 
| 46f40 |  20 20 20 20 20 20 28 28 6e 75 6c 6c 20 70 72 6f    6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ......((null.prompt)............ | 
| 46f60 |  20 28 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d    70 72 6f 6d 70 74 2d 62 75 66 66 65 72 20 73 74  | .(gptel--create-prompt-buffer.st | 
| 46f80 |  61 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67  | art-marker))............((string | 
| 46fa0 |  70 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 77 69  | p.prompt).............(gptel--wi | 
| 46fc0 |  74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79 20 62    75 66 66 65 72 20 6e 69 6c 20 6e 69 6c 0a 20 20  | th-buffer-copy.buffer.nil.nil... | 
| 46fe0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73    65 72 74 20 70 72 6f 6d 70 74 29 0a 20 20 20 20  | ............(insert.prompt)..... | 
| 47000 |  20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65    6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20  | ..........(current-buffer))).... | 
| 47020 |  20 20 20 20 20 20 20 20 28 28 63 6f 6e 73 70 20    70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20  | ........((consp.prompt)......... | 
| 47040 |  20 20 20 20 3b 3b 20 28 67 70 74 65 6c 2d 2d 70    61 72 73 65 2d 6c 69 73 74 20 67 70 74 65 6c 2d  | ....;;.(gptel--parse-list.gptel- | 
| 47060 |  62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 74 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74  | backend.prompt).............(gpt | 
| 47080 |  65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 2d    63 6f 70 79 20 62 75 66 66 65 72 20 6e 69 6c 20  | el--with-buffer-copy.buffer.nil. | 
| 470a0 |  6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 54 45 4d 50 20 44 65 63 69 64 65  | nil...............;;.TEMP.Decide | 
| 470c0 |  20 6f 6e 20 74 68 65 20 61 6e 6e 6f 61 74 65 64    20 70 72 6f 6d 70 74 2d 6c 69 73 74 20 66 6f 72  | .on.the.annoated.prompt-list.for | 
| 470e0 |  6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d  | mat...............(gptel--parse- | 
| 47100 |  6c 69 73 74 2d 61 6e 64 2d 69 6e 73 65 72 74 20    70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20  | list-and-insert.prompt)......... | 
| 47120 |  20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62    75 66 66 65 72 29 29 29 29 29 0a 20 20 20 20 20  | ......(current-buffer)))))...... | 
| 47140 |  20 20 20 20 28 69 6e 66 6f 20 28 6c 69 73 74 20    3a 64 61 74 61 20 70 72 6f 6d 70 74 2d 62 75 66  | ....(info.(list.:data.prompt-buf | 
| 47160 |  66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 62 75 66 66 65 72  | fer......................:buffer | 
| 47180 |  20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 6f  | .buffer......................:po | 
| 471a0 |  73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72    6b 65 72 29 29 29 0a 20 20 20 20 28 77 68 65 6e  | sition.start-marker))).....(when | 
| 471c0 |  20 74 72 61 6e 73 66 6f 72 6d 73 20 28 70 6c 69    73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72 61  | .transforms.(plist-put.info.:tra | 
| 471e0 |  6e 73 66 6f 72 6d 73 20 74 72 61 6e 73 66 6f 72    6d 73 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63  | nsforms.transforms)).....(with-c | 
| 47200 |  75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 70 72    6f 6d 70 74 2d 62 75 66 66 65 72 20 28 73 65 74  | urrent-buffer.prompt-buffer.(set | 
| 47220 |  71 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d    6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 29 29  | q.gptel--system-message.system)) | 
| 47240 |  0a 20 20 20 20 28 77 68 65 6e 20 73 74 72 65 61    6d 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66  | .....(when.stream.(plist-put.inf | 
| 47260 |  6f 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d    29 29 0a 20 20 20 20 3b 3b 20 54 68 69 73 20 63  | o.:stream.stream)).....;;.This.c | 
| 47280 |  6f 6e 74 65 78 74 20 73 68 6f 75 6c 64 20 6e 6f    74 20 62 65 20 63 6f 6e 66 75 73 65 64 20 77 69  | ontext.should.not.be.confused.wi | 
| 472a0 |  74 68 20 74 68 65 20 63 6f 6e 74 65 78 74 20 61    67 67 72 65 67 61 74 69 6f 6e 20 63 6f 6e 74 65  | th.the.context.aggregation.conte | 
| 472c0 |  78 74 21 0a 20 20 20 20 28 77 68 65 6e 20 63 61    6c 6c 62 61 63 6b 20 28 70 6c 69 73 74 2d 70 75  | xt!.....(when.callback.(plist-pu | 
| 472e0 |  74 20 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b    20 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20  | t.info.:callback.callback))..... | 
| 47300 |  28 77 68 65 6e 20 63 6f 6e 74 65 78 74 20 28 70    6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63  | (when.context.(plist-put.info.:c | 
| 47320 |  6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 29 29    0a 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c  | ontext.context)).....(when.in-pl | 
| 47340 |  61 63 65 20 28 70 6c 69 73 74 2d 70 75 74 20 69    6e 66 6f 20 3a 69 6e 2d 70 6c 61 63 65 20 69 6e  | ace.(plist-put.info.:in-place.in | 
| 47360 |  2d 70 6c 61 63 65 29 29 0a 20 20 20 20 3b 3b 20    41 64 64 20 69 6e 66 6f 20 74 6f 20 73 74 61 74  | -place)).....;;.Add.info.to.stat | 
| 47380 |  65 20 6d 61 63 68 69 6e 65 20 63 6f 6e 74 65 78    74 0a 20 20 20 20 28 77 68 65 6e 20 64 72 79 2d  | e.machine.context.....(when.dry- | 
| 473a0 |  72 75 6e 20 28 70 6c 69 73 74 2d 70 75 74 20 69    6e 66 6f 20 3a 64 72 79 2d 72 75 6e 20 64 72 79  | run.(plist-put.info.:dry-run.dry | 
| 473c0 |  2d 72 75 6e 29 29 0a 20 20 20 20 28 73 65 74 66    20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f  | -run)).....(setf.(gptel-fsm-info | 
| 473e0 |  20 66 73 6d 29 20 69 6e 66 6f 29 29 0a 0a 20 20    3b 3b 20 54 45 4d 50 3a 20 41 75 67 6d 65 6e 74  | .fsm).info))....;;.TEMP:.Augment | 
| 47400 |  20 69 6e 20 73 65 70 61 72 61 74 65 20 6c 65 74    20 62 6c 6f 63 6b 20 66 6f 72 20 6e 6f 77 2e 20  | .in.separate.let.block.for.now.. | 
| 47420 |  20 41 72 65 20 77 65 20 6f 76 65 72 63 61 70 74    75 72 69 6e 67 3f 0a 20 20 3b 3b 20 46 49 58 4d  | .Are.we.overcapturing?...;;.FIXM | 
| 47440 |  45 28 61 75 67 6d 65 6e 74 29 3a 20 43 61 6c 6c    20 61 75 67 6d 65 6e 74 6f 72 73 20 77 69 74 68  | E(augment):.Call.augmentors.with | 
| 47460 |  20 49 4e 46 4f 2c 20 6e 6f 74 20 46 53 4d 0a 20    20 28 6c 65 74 20 28 28 69 6e 66 6f 20 28 67 70  | .INFO,.not.FSM...(let.((info.(gp | 
| 47480 |  74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73 6d    29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75  | tel-fsm-info.fsm))).....(with-cu | 
| 474a0 |  72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c    69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61  | rrent-buffer.(plist-get.info.:da | 
| 474c0 |  74 61 29 0a 20 20 20 20 20 20 28 73 65 74 71 2d    6c 6f 63 61 6c 20 67 70 74 65 6c 2d 70 72 6f 6d  | ta).......(setq-local.gptel-prom | 
| 474e0 |  70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e    63 74 69 6f 6e 73 20 28 70 6c 69 73 74 2d 67 65  | pt-transform-functions.(plist-ge | 
| 47500 |  74 20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72    6d 73 29 29 0a 20 20 20 20 20 20 3b 3b 20 50 72  | t.info.:transforms)).......;;.Pr | 
| 47520 |  65 73 65 74 20 68 61 73 20 68 69 67 68 65 73 74    20 70 72 69 6f 72 69 74 79 20 62 65 63 61 75 73  | eset.has.highest.priority.becaus | 
| 47540 |  65 20 69 74 20 63 61 6e 20 63 68 61 6e 67 65 20    70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d  | e.it.can.change.prompt-transform | 
| 47560 |  2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20    20 28 77 68 65 6e 20 28 6d 65 6d 71 20 27 67 70  | -functions.......(when.(memq.'gp | 
| 47580 |  74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d 61    70 70 6c 79 2d 70 72 65 73 65 74 20 67 70 74 65  | tel--transform-apply-preset.gpte | 
| 475a0 |  6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f    72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20  | l-prompt-transform-functions)... | 
| 475c0 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 74 72    61 6e 73 66 6f 72 6d 2d 61 70 70 6c 79 2d 70 72  | ......(gptel--transform-apply-pr | 
| 475e0 |  65 73 65 74 20 66 73 6d 29 0a 20 20 20 20 20 20    20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 70 72  | eset.fsm).........(setq.gptel-pr | 
| 47600 |  6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66    75 6e 63 74 69 6f 6e 73 20 3b 61 76 6f 69 64 20  | ompt-transform-functions.;avoid. | 
| 47620 |  6d 75 74 61 74 69 6f 6e 2c 20 63 6f 70 79 20 74    72 61 6e 73 66 6f 72 6d 73 0a 20 20 20 20 20 20  | mutation,.copy.transforms....... | 
| 47640 |  20 20 20 20 20 20 20 20 28 72 65 6d 71 20 27 67    70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d  | ........(remq.'gptel--transform- | 
| 47660 |  61 70 70 6c 79 2d 70 72 65 73 65 74 20 67 70 74    65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66  | apply-preset.gptel-prompt-transf | 
| 47680 |  6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 29 29    0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 75  | orm-functions))).......(let.((au | 
| 476a0 |  67 6d 65 6e 74 2d 74 6f 74 61 6c 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3b 61 63 74 20 6c 69  | gment-total..............;act.li | 
| 476c0 |  6b 65 20 61 20 68 6f 6f 6b 2c 20 63 6f 75 6e 74    20 74 6f 74 61 6c 0a 20 20 20 20 20 20 20 20 20  | ke.a.hook,.count.total.......... | 
| 476e0 |  20 20 20 20 28 69 66 20 28 6d 65 6d 71 20 74 20    67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61  | ....(if.(memq.t.gptel-prompt-tra | 
| 47700 |  6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nsform-functions)............... | 
| 47720 |  20 20 20 28 6c 65 6e 67 74 68 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65  | ...(length...................(se | 
| 47740 |  74 71 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d    74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69  | tq.gptel-prompt-transform-functi | 
| 47760 |  6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f  | ons.........................(nco | 
| 47780 |  6e 63 20 28 72 65 6d 71 20 74 20 67 70 74 65 6c    2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72  | nc.(remq.t.gptel-prompt-transfor | 
| 477a0 |  6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | m-functions).................... | 
| 477c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66    61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65  | ............(default-value.'gpte | 
| 477e0 |  6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f    72 6d 2d 66 75 6e 63 74 69 6f 6e 73 29 29 29 29  | l-prompt-transform-functions)))) | 
| 47800 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d 70 72  | ................(length.gptel-pr | 
| 47820 |  6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66    75 6e 63 74 69 6f 6e 73 29 29 29 0a 20 20 20 20  | ompt-transform-functions)))..... | 
| 47840 |  20 20 20 20 20 20 20 20 28 61 75 67 6d 65 6e 74    2d 69 64 78 20 30 29 29 0a 20 20 20 20 20 20 20  | ........(augment-idx.0))........ | 
| 47860 |  20 28 69 66 20 28 6e 75 6c 6c 20 67 70 74 65 6c    2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73 66 6f 72  | .(if.(null.gptel-prompt-transfor | 
| 47880 |  6d 2d 66 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d  | m-functions).............(gptel- | 
| 478a0 |  2d 72 65 61 6c 69 7a 65 2d 71 75 65 72 79 20 66    73 6d 29 0a 20 20 20 20 20 20 20 20 20 20 28 77  | -realize-query.fsm)...........(w | 
| 478c0 |  69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66    65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e  | ith-current-buffer.(plist-get.in | 
| 478e0 |  66 6f 20 3a 62 75 66 66 65 72 29 20 3b 41 70 70    6c 79 20 70 72 6f 6d 70 74 20 74 72 61 6e 73 66  | fo.:buffer).;Apply.prompt.transf | 
| 47900 |  6f 72 6d 61 74 69 6f 6e 73 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70  | ormations.............(gptel--up | 
| 47920 |  64 61 74 65 2d 73 74 61 74 75 73 20 22 20 41 75    67 6d 65 6e 74 69 6e 67 2e 2e 2e 22 20 27 6d 6f  | date-status.".Augmenting...".'mo | 
| 47940 |  64 65 2d 6c 69 6e 65 2d 65 6d 70 68 61 73 69 73    29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | de-line-emphasis))...........;;. | 
| 47960 |  46 49 58 4d 45 28 61 75 67 6d 65 6e 74 29 3a 20    54 68 69 73 20 6e 65 65 64 73 20 74 6f 20 62 65  | FIXME(augment):.This.needs.to.be | 
| 47980 |  20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20    61 20 6c 69 6e 65 61 72 20 63 61 6c 6c 62 61 63  | .converted.into.a.linear.callbac | 
| 479a0 |  6b 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63    68 61 69 6e 20 74 6f 20 61 76 6f 69 64 20 72 61  | k...........;;.chain.to.avoid.ra | 
| 479c0 |  63 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 77 69    74 68 20 6d 75 6c 74 69 70 6c 65 20 61 73 79 6e  | ce.conditions.with.multiple.asyn | 
| 479e0 |  63 20 61 75 67 6d 65 6e 74 6f 72 73 2e 0a 20 20    20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f  | c.augmentors............(run-hoo | 
| 47a00 |  6b 2d 77 72 61 70 70 65 64 0a 20 20 20 20 20 20    20 20 20 20 20 27 67 70 74 65 6c 2d 70 72 6f 6d  | k-wrapped............'gptel-prom | 
| 47a20 |  70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75 6e    63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20  | pt-transform-functions.......... | 
| 47a40 |  20 20 28 6c 61 6d 62 64 61 20 28 66 75 6e 63 20    66 73 6d 2d 61 72 67 29 0a 20 20 20 20 20 20 20  | ..(lambda.(func.fsm-arg)........ | 
| 47a60 |  20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72    65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73  | ......(with-current-buffer.(plis | 
| 47a80 |  74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-get.info.:data)............... | 
| 47aa0 |  20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69    6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20  | .(goto-char.(point-max))........ | 
| 47ac0 |  20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 28    63 61 72 20 28 66 75 6e 63 2d 61 72 69 74 79 20  | ........(if.(=.(car.(func-arity. | 
| 47ae0 |  66 75 6e 63 29 29 20 32 29 20 3b 61 73 79 6e 63    20 61 75 67 6d 65 6e 74 6f 72 0a 20 20 20 20 20  | func)).2).;async.augmentor...... | 
| 47b00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66    75 6e 63 61 6c 6c 20 66 75 6e 63 20 28 6c 61 6d  | ..............(funcall.func.(lam | 
| 47b20 |  62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | bda.().......................... | 
| 47b40 |  20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 69 6e    63 66 20 61 75 67 6d 65 6e 74 2d 69 64 78 29 0a  | ..........(cl-incf.augment-idx). | 
| 47b60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 47b80 |  20 20 20 28 77 68 65 6e 20 28 3e 3d 20 61 75 67    6d 65 6e 74 2d 69 64 78 20 61 75 67 6d 65 6e 74  | ...(when.(>=.augment-idx.augment | 
| 47ba0 |  2d 74 6f 74 61 6c 29 20 3b 41 6c 6c 20 61 75 67    6d 65 6e 74 6f 72 73 20 68 61 76 65 20 72 75 6e  | -total).;All.augmentors.have.run | 
| 47bc0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 47be0 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65    61 6c 69 7a 65 2d 71 75 65 72 79 20 66 73 6d 2d  | ......(gptel--realize-query.fsm- | 
| 47c00 |  61 72 67 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | arg))).......................... | 
| 47c20 |  20 20 20 66 73 6d 2d 61 72 67 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66  | ...fsm-arg)..................(if | 
| 47c40 |  20 28 3d 20 28 63 61 72 20 28 66 75 6e 63 2d 61    72 69 74 79 20 66 75 6e 63 29 29 20 30 29 0a 20  | .(=.(car.(func-arity.func)).0).. | 
| 47c60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e  | ....................(funcall.fun | 
| 47c80 |  63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66  | c)....................(funcall.f | 
| 47ca0 |  75 6e 63 20 66 73 6d 2d 61 72 67 29 29 20 3b 73    79 6e 63 20 61 75 67 6d 65 6e 74 6f 72 0a 20 20  | unc.fsm-arg)).;sync.augmentor... | 
| 47cc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    63 6c 2d 69 6e 63 66 20 61 75 67 6d 65 6e 74 2d  | ...............(cl-incf.augment- | 
| 47ce0 |  69 64 78 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 3d 20  | idx)..................(when.(>=. | 
| 47d00 |  61 75 67 6d 65 6e 74 2d 69 64 78 20 61 75 67 6d    65 6e 74 2d 74 6f 74 61 6c 29 20 3b 41 6c 6c 20  | augment-idx.augment-total).;All. | 
| 47d20 |  61 75 67 6d 65 6e 74 6f 72 73 20 68 61 76 65 20    72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  | augmentors.have.run............. | 
| 47d40 |  20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72    65 61 6c 69 7a 65 2d 71 75 65 72 79 20 66 73 6d  | .......(gptel--realize-query.fsm | 
| 47d60 |  2d 61 72 67 29 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 6e 69 6c 29 20 20 20 20 20 20  | -arg))))..............nil)...... | 
| 47d80 |  20 20 20 20 20 3b 61 6c 77 61 79 73 20 72 65 74    75 72 6e 20 6e 69 6c 20 73 6f 20 72 75 6e 2d 68  | .....;always.return.nil.so.run-h | 
| 47da0 |  6f 6f 6b 2d 77 72 61 70 70 65 64 20 64 6f 65 73    6e 27 74 20 61 62 6f 72 74 0a 20 20 20 20 20 20  | ook-wrapped.doesn't.abort....... | 
| 47dc0 |  20 20 20 20 20 66 73 6d 29 29 29 29 29 0a 20 20    66 73 6d 29 0a 0a 28 64 65 66 75 6e 20 67 70 74  | .....fsm)))))...fsm)..(defun.gpt | 
| 47de0 |  65 6c 2d 2d 72 65 61 6c 69 7a 65 2d 71 75 65 72    79 20 28 66 73 6d 29 0a 20 20 22 52 65 61 6c 69  | el--realize-query.(fsm)..."Reali | 
| 47e00 |  7a 65 20 74 68 65 20 71 75 65 72 79 20 70 61 79    6c 6f 61 64 20 66 6f 72 20 46 53 4d 20 66 72 6f  | ze.the.query.payload.for.FSM.fro | 
| 47e20 |  6d 20 69 74 73 20 70 72 6f 6d 70 74 20 62 75 66    66 65 72 2e 0a 0a 49 6e 69 74 69 61 74 65 20 74  | m.its.prompt.buffer...Initiate.t | 
| 47e40 |  68 65 20 72 65 71 75 65 73 74 20 77 68 65 6e 20    64 6f 6e 65 2e 22 0a 20 20 28 6c 65 74 20 28 28  | he.request.when.done."...(let.(( | 
| 47e60 |  69 6e 66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d    69 6e 66 6f 20 66 73 6d 29 29 29 0a 20 20 20 20  | info.(gptel-fsm-info.fsm)))..... | 
| 47e80 |  28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75    66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20  | (with-current-buffer.(plist-get. | 
| 47ea0 |  69 6e 66 6f 20 3a 64 61 74 61 29 0a 20 20 20 20    20 20 28 6c 65 74 2a 20 28 28 64 69 72 65 63 74  | info.:data).......(let*.((direct | 
| 47ec0 |  69 76 65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73    65 2d 64 69 72 65 63 74 69 76 65 20 67 70 74 65  | ive.(gptel--parse-directive.gpte | 
| 47ee0 |  6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67    65 20 27 72 61 77 29 29 0a 20 20 20 20 20 20 20  | l--system-message.'raw))........ | 
| 47f00 |  20 20 20 20 20 20 3b 3b 20 44 49 52 45 43 54 49    56 45 20 63 6f 6e 74 61 69 6e 73 20 62 6f 74 68  | ......;;.DIRECTIVE.contains.both | 
| 47f20 |  20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73    61 67 65 20 61 6e 64 20 74 68 65 20 74 65 6d 70  | .the.system.message.and.the.temp | 
| 47f40 |  6c 61 74 65 20 70 72 6f 6d 70 74 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c  | late.prompts..............(gptel | 
| 47f60 |  2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | --system-message...............( | 
| 47f80 |  75 6e 6c 65 73 73 20 28 67 70 74 65 6c 2d 2d 6d    6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27  | unless.(gptel--model-capable-p.' | 
| 47fa0 |  6e 6f 73 79 73 74 65 6d 29 20 28 63 61 72 20 64    69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20  | nosystem).(car.directive)))..... | 
| 47fc0 |  20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f    28 74 6f 6f 6c 29 20 4c 69 6d 69 74 20 74 6f 6f  | .........;;.TODO(tool).Limit.too | 
| 47fe0 |  6c 20 75 73 65 20 74 6f 20 63 61 70 61 62 6c 65    20 6d 6f 64 65 6c 73 20 61 66 74 65 72 20 64 6f  | l.use.to.capable.models.after.do | 
| 48000 |  63 75 6d 65 6e 74 69 6e 67 20 3a 63 61 70 61 62    69 6c 69 74 69 65 73 0a 20 20 20 20 20 20 20 20  | cumenting.:capabilities......... | 
| 48020 |  20 20 20 20 20 3b 3b 20 28 67 70 74 65 6c 2d 75    73 65 2d 74 6f 6f 6c 73 20 28 61 6e 64 20 28 67  | .....;;.(gptel-use-tools.(and.(g | 
| 48040 |  70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61    62 6c 65 2d 70 20 27 74 6f 6f 6c 2d 75 73 65 29  | ptel--model-capable-p.'tool-use) | 
| 48060 |  20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .gptel-use-tools)).............. | 
| 48080 |  28 73 74 72 65 61 6d 20 28 61 6e 64 20 28 70 6c    69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74  | (stream.(and.(plist-get.info.:st | 
| 480a0 |  72 65 61 6d 29 20 67 70 74 65 6c 2d 75 73 65 2d    63 75 72 6c 20 67 70 74 65 6c 2d 73 74 72 65 61  | ream).gptel-use-curl.gptel-strea | 
| 480c0 |  6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48  | m...........................;;.H | 
| 480e0 |  41 43 4b 28 74 6f 6f 6c 29 3a 20 6e 6f 20 73 74    72 65 61 6d 20 69 66 20 4f 6c 6c 61 6d 61 20 2b  | ACK(tool):.no.stream.if.Ollama.+ | 
| 48100 |  20 74 6f 6f 6c 73 2e 20 20 4e 65 65 64 20 74 6f    20 66 69 6e 64 20 61 20 62 65 74 74 65 72 20 77  | .tools...Need.to.find.a.better.w | 
| 48120 |  61 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f  | ay...........................(no | 
| 48140 |  74 20 28 61 6e 64 20 28 65 71 20 28 74 79 70 65    2d 6f 66 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e  | t.(and.(eq.(type-of.gptel-backen | 
| 48160 |  64 29 20 27 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | d).'gptel-ollama)............... | 
| 48180 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 67 70 74 65 6c 2d 74 6f 6f 6c  | ......................gptel-tool | 
| 481a0 |  73 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c    73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | s.gptel-use-tools))............. | 
| 481c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 43 68 65 63 6b 20 6d 6f 64 65 6c 2d 73 70 65  | ..............;;.Check.model-spe | 
| 481e0 |  63 69 66 69 63 20 72 65 71 75 65 73 74 2d 70 61    72 61 6d 73 20 66 6f 72 20 73 74 72 65 61 6d 69  | cific.request-params.for.streami | 
| 48200 |  6e 67 20 70 72 65 66 65 72 65 6e 63 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ng.preference................... | 
| 48220 |  20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28    6d 6f 64 65 6c 2d 70 61 72 61 6d 73 20 28 67 70  | ........(let*.((model-params.(gp | 
| 48240 |  74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65    73 74 2d 70 61 72 61 6d 73 20 67 70 74 65 6c 2d  | tel--model-request-params.gptel- | 
| 48260 |  6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | model))......................... | 
| 48280 |  20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d    2d 73 70 65 63 20 28 70 6c 69 73 74 2d 67 65 74  | .........(stream-spec.(plist-get | 
| 482a0 |  20 6d 6f 64 65 6c 2d 70 61 72 61 6d 73 20 3a 73    74 72 65 61 6d 29 29 29 0a 20 20 20 20 20 20 20  | .model-params.:stream)))........ | 
| 482c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 49 66 20 6e 6f 74 20 70  | .....................;;.If.not.p | 
| 482e0 |  72 65 73 65 6e 74 2c 20 74 68 65 72 65 20 69 73    20 6e 6f 20 6d 6f 64 65 6c 2d 73 70 65 63 69 66  | resent,.there.is.no.model-specif | 
| 48300 |  69 63 20 70 72 65 66 65 72 65 6e 63 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ic.preference................... | 
| 48320 |  20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6e    6f 74 20 28 6d 65 6d 71 20 3a 73 74 72 65 61 6d  | ..........(or.(not.(memq.:stream | 
| 48340 |  20 6d 6f 64 65 6c 2d 70 61 72 61 6d 73 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .model-params))................. | 
| 48360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 49 66 20 70 72 65 73 65 6e 74 2c 20 69  | ................;;.If.present,.i | 
| 48380 |  74 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 3a 6a    73 6f 6e 2d 66 61 6c 73 65 20 6f 72 20 6e 69 6c  | t.must.not.be.:json-false.or.nil | 
| 483a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 483c0 |  20 28 61 6e 64 20 73 74 72 65 61 6d 2d 73 70 65    63 20 28 6e 6f 74 20 28 65 71 20 73 74 72 65 61  | .(and.stream-spec.(not.(eq.strea | 
| 483e0 |  6d 2d 73 70 65 63 20 3a 6a 73 6f 6e 2d 66 61 6c    73 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20  | m-spec.:json-false)))))......... | 
| 48400 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 43 68 65 63 6b 20 62 61 63 6b 65  | ..................;;.Check.backe | 
| 48420 |  6e 64 2d 73 70 65 63 69 66 69 63 20 73 74 72 65    61 6d 69 6e 67 20 73 65 74 74 69 6e 67 73 0a 20  | nd-specific.streaming.settings.. | 
| 48440 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d  | .........................(gptel- | 
| 48460 |  62 61 63 6b 65 6e 64 2d 73 74 72 65 61 6d 20 67    70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a  | backend-stream.gptel-backend))). | 
| 48480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 73 74 72 65 61 6d 20 73 74 72 65 61  | .............(gptel-stream.strea | 
| 484a0 |  6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20  | m)..............(full-prompt)).. | 
| 484c0 |  20 20 20 20 20 20 20 28 77 68 65 6e 20 28 63 64    72 20 64 69 72 65 63 74 69 76 65 29 20 20 20 20  | .......(when.(cdr.directive).... | 
| 484e0 |  20 20 20 3b 20 70 72 6f 6d 70 74 20 63 6f 6e 73    74 72 75 63 74 65 64 20 66 72 6f 6d 20 64 69 72  | ...;.prompt.constructed.from.dir | 
| 48500 |  65 63 74 69 76 65 2f 74 65 6d 70 6c 61 74 65 0a    20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d  | ective/template...........(save- | 
| 48520 |  65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f 2d    63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29  | excursion.(goto-char.(point-min) | 
| 48540 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74  | )...........................(gpt | 
| 48560 |  65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 2d 61    6e 64 2d 69 6e 73 65 72 74 20 28 63 64 72 20 64  | el--parse-list-and-insert.(cdr.d | 
| 48580 |  69 72 65 63 74 69 76 65 29 29 29 29 0a 20 20 20    20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20  | irective)))).........(goto-char. | 
| 485a0 |  28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20    20 20 20 20 20 28 73 65 74 71 20 66 75 6c 6c 2d  | (point-max)).........(setq.full- | 
| 485c0 |  70 72 6f 6d 70 74 20 28 67 70 74 65 6c 2d 2d 70    61 72 73 65 2d 62 75 66 66 65 72 20 3b 70 72 6f  | prompt.(gptel--parse-buffer.;pro | 
| 485e0 |  6d 70 74 20 66 72 6f 6d 20 62 75 66 66 65 72 20    6f 72 20 65 78 70 6c 69 63 69 74 6c 79 20 73 75  | mpt.from.buffer.or.explicitly.su | 
| 48600 |  70 70 6c 69 65 64 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | pplied.......................... | 
| 48620 |  20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20    28 61 6e 64 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d  | ..gptel-backend.(and.gptel--num- | 
| 48640 |  6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | messages-to-send................ | 
| 48660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| 48680 |  2a 20 32 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d    65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29  | *.2.gptel--num-messages-to-send) | 
| 486a0 |  29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49    6e 6a 65 63 74 20 6d 65 64 69 61 20 63 68 75 6e  | ))).........;;.Inject.media.chun | 
| 486c0 |  6b 73 20 69 6e 74 6f 20 74 68 65 20 66 69 72 73    74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 69 66  | ks.into.the.first.user.prompt.if | 
| 486e0 |  20 72 65 71 75 69 72 65 64 2e 20 20 4d 65 64 69    61 0a 20 20 20 20 20 20 20 20 3b 3b 20 63 68 75  | .required...Media.........;;.chu | 
| 48700 |  6e 6b 73 20 61 72 65 20 61 6c 77 61 79 73 20 69    6e 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65  | nks.are.always.included.with.the | 
| 48720 |  20 66 69 72 73 74 20 75 73 65 72 20 6d 65 73 73    61 67 65 2c 0a 20 20 20 20 20 20 20 20 3b 3b 20  | .first.user.message,.........;;. | 
| 48740 |  69 72 72 65 73 70 65 63 74 69 76 65 20 6f 66 20    74 68 65 20 70 72 65 66 65 72 65 6e 63 65 20 69  | irrespective.of.the.preference.i | 
| 48760 |  6e 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e    74 65 78 74 27 2e 20 20 54 68 69 73 20 69 73 0a  | n.`gptel-use-context'...This.is. | 
| 48780 |  20 20 20 20 20 20 20 20 3b 3b 20 62 65 63 61 75    73 65 20 6d 65 64 69 61 20 63 61 6e 6e 6f 74 20  | ........;;.because.media.cannot. | 
| 487a0 |  62 65 20 69 6e 63 6c 75 64 65 64 20 28 69 6e 20    67 65 6e 65 72 61 6c 29 20 77 69 74 68 20 73 79  | be.included.(in.general).with.sy | 
| 487c0 |  73 74 65 6d 20 6d 65 73 73 61 67 65 73 2e 0a 20    20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 61  | stem.messages..........;;.TODO(a | 
| 487e0 |  75 67 6d 65 6e 74 29 3a 20 46 69 6e 64 20 61 20    77 61 79 20 74 6f 20 64 6f 20 74 68 69 73 20 69  | ugment):.Find.a.way.to.do.this.i | 
| 48800 |  6e 20 74 68 65 20 70 72 6f 6d 70 74 2d 62 75 66    66 65 72 3f 0a 20 20 20 20 20 20 20 20 28 77 68  | n.the.prompt-buffer?.........(wh | 
| 48820 |  65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 63 6f    6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 67 70 74  | en.(and.gptel-context--alist.gpt | 
| 48840 |  65 6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | el-use-context.................. | 
| 48860 |  20 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d 65    64 69 61 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65  | ..gptel-track-media.(gptel--mode | 
| 48880 |  6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65 64    69 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 28  | l-capable-p.'media))...........( | 
| 488a0 |  67 70 74 65 6c 2d 2d 77 72 61 70 2d 75 73 65 72    2d 70 72 6f 6d 70 74 20 67 70 74 65 6c 2d 62 61  | gptel--wrap-user-prompt.gptel-ba | 
| 488c0 |  63 6b 65 6e 64 20 66 75 6c 6c 2d 70 72 6f 6d 70    74 20 27 6d 65 64 69 61 29 29 0a 20 20 20 20 20  | ckend.full-prompt.'media))...... | 
| 488e0 |  20 20 20 28 75 6e 6c 65 73 73 20 73 74 72 65 61    6d 20 28 63 6c 2d 72 65 6d 66 20 69 6e 66 6f 20  | ...(unless.stream.(cl-remf.info. | 
| 48900 |  3a 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20 20    20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66  | :stream)).........(plist-put.inf | 
| 48920 |  6f 20 3a 62 61 63 6b 65 6e 64 20 67 70 74 65 6c    2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20  | o.:backend.gptel-backend)....... | 
| 48940 |  20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 69 6e    63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 20  | ..(when.gptel-include-reasoning. | 
| 48960 |  20 20 3b 52 65 71 75 69 72 65 64 20 66 6f 72 20    6e 65 78 74 2d 72 65 71 75 65 73 74 2d 6f 6e 6c  | ..;Required.for.next-request-onl | 
| 48980 |  79 20 73 63 6f 70 65 0a 20 20 20 20 20 20 20 20    20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66  | y.scope...........(plist-put.inf | 
| 489a0 |  6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f    6e 69 6e 67 20 67 70 74 65 6c 2d 69 6e 63 6c 75  | o.:include-reasoning.gptel-inclu | 
| 489c0 |  64 65 2d 72 65 61 73 6f 6e 69 6e 67 29 29 0a 20    20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e  | de-reasoning)).........(when.(an | 
| 489e0 |  64 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c    73 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a 20  | d.gptel-use-tools.gptel-tools).. | 
| 48a00 |  20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d    70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 20  | .........(plist-put.info.:tools. | 
| 48a20 |  67 70 74 65 6c 2d 74 6f 6f 6c 73 29 29 0a 20 20    20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74  | gptel-tools)).........(plist-put | 
| 48a40 |  20 69 6e 66 6f 20 3a 64 61 74 61 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | .info.:data....................( | 
| 48a60 |  67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64    61 74 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e  | gptel--request-data.gptel-backen | 
| 48a80 |  64 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a    20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f  | d.full-prompt)).........(run-hoo | 
| 48aa0 |  6b 73 20 27 67 70 74 65 6c 2d 61 75 67 6d 65 6e    74 2d 70 6f 73 74 2d 6d 6f 64 69 66 79 2d 68 6f  | ks.'gptel-augment-post-modify-ho | 
| 48ac0 |  6f 6b 29 29 0a 20 20 20 20 20 20 28 6b 69 6c 6c    2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74  | ok)).......(kill-buffer.(current | 
| 48ae0 |  2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 3b    3b 20 49 4e 49 54 20 2d 3e 20 57 41 49 54 0a 20  | -buffer))).....;;.INIT.->.WAIT.. | 
| 48b00 |  20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73    74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 72 79 2d  | ...(unless.(plist-get.info.:dry- | 
| 48b20 |  72 75 6e 29 20 28 67 70 74 65 6c 2d 2d 66 73 6d    2d 74 72 61 6e 73 69 74 69 6f 6e 20 66 73 6d 29  | run).(gptel--fsm-transition.fsm) | 
| 48b40 |  29 0a 20 20 20 20 66 73 6d 29 29 0a 0a 28 64 65    66 75 6e 20 67 70 74 65 6c 2d 61 62 6f 72 74 20  | ).....fsm))..(defun.gptel-abort. | 
| 48b60 |  28 62 75 66 29 0a 20 20 22 53 74 6f 70 20 61 6e    79 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 70  | (buf)..."Stop.any.active.gptel.p | 
| 48b80 |  72 6f 63 65 73 73 20 61 73 73 6f 63 69 61 74 65    64 20 77 69 74 68 20 62 75 66 66 65 72 20 42 55  | rocess.associated.with.buffer.BU | 
| 48ba0 |  46 2e 0a 0a 42 55 46 20 64 65 66 61 75 6c 74 73    20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20  | F...BUF.defaults.to.the.current. | 
| 48bc0 |  62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e 74 65    72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 63  | buffer."...(interactive.(list.(c | 
| 48be0 |  75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29    0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28  | urrent-buffer)))...(when-let*.(( | 
| 48c00 |  70 72 6f 63 2d 61 74 74 72 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 66 69  | proc-attrs................(cl-fi | 
| 48c20 |  6e 64 2d 69 66 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 65  | nd-if.................(lambda.(e | 
| 48c40 |  6e 74 72 79 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3b 3b 20 65 61 63 68 20  | ntry)...................;;.each. | 
| 48c60 |  65 6e 74 72 79 20 68 61 73 20 74 68 65 20 66 6f    72 6d 20 28 50 52 4f 43 20 2e 20 28 46 53 4d 20  | entry.has.the.form.(PROC...(FSM. | 
| 48c80 |  41 42 4f 52 54 2d 46 4e 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71  | ABORT-FN))...................(eq | 
| 48ca0 |  20 28 74 68 72 65 61 64 2d 66 69 72 73 74 20 28    63 61 64 72 20 65 6e 74 72 79 29 20 3b 20 46 53  | .(thread-first.(cadr.entry).;.FS | 
| 48cc0 |  4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | M............................... | 
| 48ce0 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 66 73 6d    2d 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20  | ......(gptel-fsm-info).......... | 
| 48d00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73  | ...........................(plis | 
| 48d20 |  74 2d 67 65 74 20 3a 62 75 66 66 65 72 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-get.:buffer))................. | 
| 48d40 |  20 20 20 20 20 20 62 75 66 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65  | ......buf)).................gpte | 
| 48d60 |  6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | l--request-alist)).............. | 
| 48d80 |  20 28 70 72 6f 63 20 28 63 61 72 20 70 72 6f 63    2d 61 74 74 72 73 29 29 0a 20 20 20 20 20 20 20  | .(proc.(car.proc-attrs))........ | 
| 48da0 |  20 20 20 20 20 20 20 28 66 73 6d 20 28 63 61 64    72 20 70 72 6f 63 2d 61 74 74 72 73 29 29 0a 20  | .......(fsm.(cadr.proc-attrs)).. | 
| 48dc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e    66 6f 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e  | .............(info.(gptel-fsm-in | 
| 48de0 |  66 6f 20 66 73 6d 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 61 62 6f 72 74 2d 66 6e  | fo.fsm))...............(abort-fn | 
| 48e00 |  20 28 63 64 64 72 20 70 72 6f 63 2d 61 74 74 72    73 29 29 29 0a 20 20 20 20 3b 3b 20 52 75 6e 20  | .(cddr.proc-attrs))).....;;.Run. | 
| 48e20 |  3a 63 61 6c 6c 62 61 63 6b 20 77 69 74 68 20 61    62 6f 72 74 20 73 69 67 6e 61 6c 0a 20 20 20 20  | :callback.with.abort.signal..... | 
| 48e40 |  28 77 69 74 68 2d 64 65 6d 6f 74 65 64 2d 65 72    72 6f 72 73 20 22 43 61 6c 6c 62 61 63 6b 20 65  | (with-demoted-errors."Callback.e | 
| 48e60 |  72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20 20 20    28 61 6e 64 2d 6c 65 74 2a 20 28 28 63 62 20 28  | rror:.%S".......(and-let*.((cb.( | 
| 48e80 |  70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a    63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20 20  | plist-get.info.:callback))...... | 
| 48ea0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 28 66 75    6e 63 74 69 6f 6e 70 20 63 62 29 29 29 0a 20 20  | ............((functionp.cb)))... | 
| 48ec0 |  20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63    62 20 27 61 62 6f 72 74 20 69 6e 66 6f 29 29 29  | ......(funcall.cb.'abort.info))) | 
| 48ee0 |  0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 61 62    6f 72 74 2d 66 6e 29 0a 20 20 20 20 28 73 65 74  | .....(funcall.abort-fn).....(set | 
| 48f00 |  66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f    63 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74  | f.(alist-get.proc.gptel--request | 
| 48f20 |  2d 61 6c 69 73 74 20 6e 69 6c 20 27 72 65 6d 6f    76 65 29 20 6e 69 6c 29 0a 20 20 20 20 28 77 69  | -alist.nil.'remove).nil).....(wi | 
| 48f40 |  74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65    72 20 62 75 66 0a 20 20 20 20 20 20 28 77 68 65  | th-current-buffer.buf.......(whe | 
| 48f60 |  6e 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28 67 70    74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74  | n.gptel-mode.(gptel--update-stat | 
| 48f80 |  75 73 20 20 22 20 41 62 6f 72 74 22 20 27 65 72    72 6f 72 29 29 29 0a 20 20 20 20 28 6d 65 73 73  | us..".Abort".'error))).....(mess | 
| 48fa0 |  61 67 65 20 22 53 74 6f 70 70 65 64 20 67 70 74    65 6c 20 72 65 71 75 65 73 74 20 69 6e 20 62 75  | age."Stopped.gptel.request.in.bu | 
| 48fc0 |  66 66 65 72 20 25 53 22 20 28 62 75 66 66 65 72    2d 6e 61 6d 65 20 62 75 66 29 29 29 29 0a 0a 3b  | ffer.%S".(buffer-name.buf))))..; | 
| 48fe0 |  3b 20 54 4f 44 4f 3a 20 48 61 6e 64 6c 65 20 6d    75 6c 74 69 70 6c 65 20 72 65 71 75 65 73 74 73  | ;.TODO:.Handle.multiple.requests | 
| 49000 |  28 23 31 35 29 2e 20 28 4f 6e 6c 79 20 6f 6e 65    20 72 65 71 75 65 73 74 20 66 72 6f 6d 20 6f 6e  | (#15)..(Only.one.request.from.on | 
| 49020 |  65 20 62 75 66 66 65 72 20 61 74 20 61 20 74 69    6d 65 3f 29 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c  | e.buffer.at.a.time?).;;;###autol | 
| 49040 |  6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 6c    2d 73 65 6e 64 20 28 26 6f 70 74 69 6f 6e 61 6c  | oad.(defun.gptel-send.(&optional | 
| 49060 |  20 61 72 67 29 0a 20 20 22 53 75 62 6d 69 74 20    74 68 69 73 20 70 72 6f 6d 70 74 20 74 6f 20 74  | .arg)..."Submit.this.prompt.to.t | 
| 49080 |  68 65 20 63 75 72 72 65 6e 74 20 4c 4c 4d 20 62    61 63 6b 65 6e 64 2e 0a 0a 42 79 20 64 65 66 61  | he.current.LLM.backend...By.defa | 
| 490a0 |  75 6c 74 2c 20 74 68 65 20 63 6f 6e 74 65 6e 74    73 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20  | ult,.the.contents.of.the.buffer. | 
| 490c0 |  75 70 20 74 6f 20 74 68 65 20 63 75 72 73 6f 72    20 70 6f 73 69 74 69 6f 6e 0a 61 72 65 20 73 65  | up.to.the.cursor.position.are.se | 
| 490e0 |  6e 74 2e 20 20 49 66 20 74 68 65 20 72 65 67 69    6f 6e 20 69 73 20 61 63 74 69 76 65 2c 20 69 74  | nt...If.the.region.is.active,.it | 
| 49100 |  73 20 63 6f 6e 74 65 6e 74 73 20 61 72 65 20 73    65 6e 74 0a 69 6e 73 74 65 61 64 2e 0a 0a 54 68  | s.contents.are.sent.instead...Th | 
| 49120 |  65 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20    74 68 65 20 4c 4c 4d 20 69 73 20 69 6e 73 65 72  | e.response.from.the.LLM.is.inser | 
| 49140 |  74 65 64 20 62 65 6c 6f 77 20 74 68 65 20 63 75    72 73 6f 72 20 70 6f 73 69 74 69 6f 6e 0a 61 74  | ted.below.the.cursor.position.at | 
| 49160 |  20 74 68 65 20 74 69 6d 65 20 6f 66 20 73 65 6e    64 69 6e 67 2e 20 20 54 6f 20 63 68 61 6e 67 65  | .the.time.of.sending...To.change | 
| 49180 |  20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 6f    72 20 6d 6f 64 65 6c 0a 70 61 72 61 6d 65 74 65  | .this.behavior.or.model.paramete | 
| 491a0 |  72 73 2c 20 75 73 65 20 70 72 65 66 69 78 20 61    72 67 20 41 52 47 20 61 63 74 69 76 61 74 65 20  | rs,.use.prefix.arg.ARG.activate. | 
| 491c0 |  61 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75    20 77 69 74 68 0a 6d 6f 72 65 20 6f 70 74 69 6f  | a.transient.menu.with.more.optio | 
| 491e0 |  6e 73 20 69 6e 73 74 65 61 64 2e 0a 0a 54 68 69    73 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 73 79  | ns.instead...This.command.is.asy | 
| 49200 |  6e 63 68 72 6f 6e 6f 75 73 2c 20 79 6f 75 20 63    61 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 75  | nchronous,.you.can.continue.to.u | 
| 49220 |  73 65 20 45 6d 61 63 73 20 77 68 69 6c 65 0a 77    61 69 74 69 6e 67 20 66 6f 72 20 74 68 65 20 72  | se.Emacs.while.waiting.for.the.r | 
| 49240 |  65 73 70 6f 6e 73 65 2e 22 0a 20 20 28 69 6e 74    65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20  | esponse."...(interactive."P")... | 
| 49260 |  28 69 66 20 28 61 6e 64 20 61 72 67 20 28 72 65    71 75 69 72 65 20 27 67 70 74 65 6c 2d 74 72 61  | (if.(and.arg.(require.'gptel-tra | 
| 49280 |  6e 73 69 65 6e 74 20 6e 69 6c 20 74 29 29 0a 20    20 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72  | nsient.nil.t)).......(call-inter | 
| 492a0 |  61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c    2d 6d 65 6e 75 29 0a 20 20 20 20 28 67 70 74 65  | actively.#'gptel-menu).....(gpte | 
| 492c0 |  6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65    6c 29 0a 20 20 20 20 28 6c 65 74 20 28 28 66 73  | l--sanitize-model).....(let.((fs | 
| 492e0 |  6d 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 66 73    6d 20 3a 68 61 6e 64 6c 65 72 73 20 67 70 74 65  | m.(gptel-make-fsm.:handlers.gpte | 
| 49300 |  6c 2d 73 65 6e 64 2d 2d 68 61 6e 64 6c 65 72 73    29 29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c  | l-send--handlers))).......(gptel | 
| 49320 |  2d 72 65 71 75 65 73 74 20 6e 69 6c 0a 20 20 20    20 20 20 20 20 3a 73 74 72 65 61 6d 20 67 70 74  | -request.nil.........:stream.gpt | 
| 49340 |  65 6c 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 20    20 20 3a 74 72 61 6e 73 66 6f 72 6d 73 20 67 70  | el-stream.........:transforms.gp | 
| 49360 |  74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73    66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 0a 20  | tel-prompt-transform-functions.. | 
| 49380 |  20 20 20 20 20 20 20 3a 66 73 6d 20 66 73 6d 29    0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20  | .......:fsm.fsm).......(message. | 
| 493a0 |  22 51 75 65 72 79 69 6e 67 20 25 73 2e 2e 2e 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "Querying.%s..."................ | 
| 493c0 |  28 74 68 72 65 61 64 2d 66 69 72 73 74 20 28 67    70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20 66 73  | (thread-first.(gptel-fsm-info.fs | 
| 493e0 |  6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | m).............................. | 
| 49400 |  28 70 6c 69 73 74 2d 67 65 74 20 3a 62 61 63 6b    65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  | (plist-get.:backend)............ | 
| 49420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64  | ..................(gptel-backend | 
| 49440 |  2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 28 67    70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61  | -name)))).....(gptel--update-sta | 
| 49460 |  74 75 73 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e    22 20 27 77 61 72 6e 69 6e 67 29 29 29 0a 0a 28  | tus.".Waiting...".'warning)))..( | 
| 49480 |  64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e    20 6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69  | declare-function.json-pretty-pri | 
| 494a0 |  6e 74 2d 62 75 66 66 65 72 20 22 6a 73 6f 6e 22    29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d  | nt-buffer."json").(defun.gptel-- | 
| 494c0 |  69 6e 73 70 65 63 74 2d 71 75 65 72 79 20 28 26    6f 70 74 69 6f 6e 61 6c 20 72 65 71 75 65 73 74  | inspect-query.(&optional.request | 
| 494e0 |  2d 66 73 6d 20 66 6f 72 6d 61 74 29 0a 20 20 22    53 68 6f 77 20 74 68 65 20 66 75 6c 6c 20 4c 4c  | -fsm.format)..."Show.the.full.LL | 
| 49500 |  4d 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c    6c 20 62 65 20 73 65 6e 74 20 69 6e 20 61 20 62  | M.query.that.will.be.sent.in.a.b | 
| 49520 |  75 66 66 65 72 2e 0a 0a 54 68 69 73 20 66 75 6e    63 74 69 6f 6e 73 20 61 73 20 61 20 64 72 79 20  | uffer...This.functions.as.a.dry. | 
| 49540 |  72 75 6e 20 6f 66 20 60 67 70 74 65 6c 2d 73 65    6e 64 27 2e 20 20 54 68 65 20 72 65 71 75 65 73  | run.of.`gptel-send'...The.reques | 
| 49560 |  74 20 64 61 74 61 0a 6d 61 79 20 62 65 20 65 64    69 74 65 64 20 61 6e 64 20 74 68 65 20 71 75 65  | t.data.may.be.edited.and.the.que | 
| 49580 |  72 79 20 63 6f 6e 74 69 6e 75 65 64 20 66 72 6f    6d 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a  | ry.continued.from.this.buffer... | 
| 495a0 |  52 45 51 55 45 53 54 2d 46 53 4d 20 69 73 20 74    68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20  | REQUEST-FSM.is.the.state.of.the. | 
| 495c0 |  72 65 71 75 65 73 74 2c 20 61 73 20 72 65 74 75    72 6e 65 64 20 62 79 0a 60 67 70 74 65 6c 2d 72  | request,.as.returned.by.`gptel-r | 
| 495e0 |  65 71 75 65 73 74 27 2e 20 20 49 66 20 46 4f 52    4d 41 54 20 69 73 20 74 68 65 20 73 79 6d 62 6f  | equest'...If.FORMAT.is.the.symbo | 
| 49600 |  6c 20 6a 73 6f 6e 2c 20 73 68 6f 77 20 74 68 65    20 65 6e 63 6f 64 65 64 0a 4a 53 4f 4e 20 71 75  | l.json,.show.the.encoded.JSON.qu | 
| 49620 |  65 72 79 20 69 6e 73 74 65 61 64 20 6f 66 20 74    68 65 20 4c 69 73 70 20 73 74 72 75 63 74 75 72  | ery.instead.of.the.Lisp.structur | 
| 49640 |  65 20 67 70 74 65 6c 20 75 73 65 73 2e 22 0a 20    20 28 75 6e 6c 65 73 73 20 72 65 71 75 65 73 74  | e.gptel.uses."...(unless.request | 
| 49660 |  2d 66 73 6d 20 28 73 65 74 71 20 72 65 71 75 65    73 74 2d 66 73 6d 20 67 70 74 65 6c 2d 2d 66 73  | -fsm.(setq.request-fsm.gptel--fs | 
| 49680 |  6d 2d 6c 61 73 74 29 29 0a 20 20 28 69 66 20 28    62 75 66 66 65 72 70 20 28 70 6c 69 73 74 2d 67  | m-last))...(if.(bufferp.(plist-g | 
| 496a0 |  65 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e    66 6f 20 72 65 71 75 65 73 74 2d 66 73 6d 29 20  | et.(gptel-fsm-info.request-fsm). | 
| 496c0 |  3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 28 6c    65 74 72 65 63 20 28 28 64 72 79 2d 72 75 6e 2d  | :data)).......(letrec.((dry-run- | 
| 496e0 |  70 6f 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 72 75 6e 2d 77 69 74 68 2d 74  | poll.................(run-with-t | 
| 49700 |  69 6d 65 72 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 30 20 31 20 28 6c 61 6d 62 64  | imer..................0.1.(lambd | 
| 49720 |  61 20 28 66 73 6d 20 66 6f 72 6d 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | a.(fsm.form).................... | 
| 49740 |  20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 75 66    66 65 72 70 20 28 70 6c 69 73 74 2d 67 65 74 20  | ....(unless.(bufferp.(plist-get. | 
| 49760 |  28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f 20    66 73 6d 29 20 3a 64 61 74 61 29 29 0a 20 20 20  | (gptel-fsm-info.fsm).:data)).... | 
| 49780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 63 61 6e 63 65 6c 2d 74 69  | ......................(cancel-ti | 
| 497a0 |  6d 65 72 20 64 72 79 2d 72 75 6e 2d 70 6f 6c 6c    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | mer.dry-run-poll)............... | 
| 497c0 |  20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65    6c 2d 2d 69 6e 73 70 65 63 74 2d 71 75 65 72 79  | ...........(gptel--inspect-query | 
| 497e0 |  20 66 73 6d 20 66 6f 72 6d 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65  | .fsm.form)))..................re | 
| 49800 |  71 75 65 73 74 2d 66 73 6d 20 66 6f 72 6d 61 74    29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63  | quest-fsm.format)))).....(with-c | 
| 49820 |  75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70    6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c 2d  | urrent-buffer.(plist-get.(gptel- | 
| 49840 |  66 73 6d 2d 69 6e 66 6f 20 72 65 71 75 65 73 74    2d 66 73 6d 29 20 3a 62 75 66 66 65 72 29 0a 20  | fsm-info.request-fsm).:buffer).. | 
| 49860 |  20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64    61 74 65 2d 73 74 61 74 75 73 20 22 20 52 65 61  | .....(gptel--update-status.".Rea | 
| 49880 |  64 79 22 20 27 73 75 63 63 65 73 73 29 29 0a 20    20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74  | dy".'success)).....(with-current | 
| 498a0 |  2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66    66 65 72 2d 63 72 65 61 74 65 20 22 2a 67 70 74  | -buffer.(get-buffer-create."*gpt | 
| 498c0 |  65 6c 2d 71 75 65 72 79 2a 22 29 0a 20 20 20 20    20 20 28 6c 65 74 2a 20 28 28 73 74 61 6e 64 61  | el-query*").......(let*.((standa | 
| 498e0 |  72 64 2d 6f 75 74 70 75 74 20 28 63 75 72 72 65    6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20  | rd-output.(current-buffer))..... | 
| 49900 |  20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62 69    74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 0a 20  | .........(inhibit-read-only.t).. | 
| 49920 |  20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 71    75 65 73 74 2d 64 61 74 61 0a 20 20 20 20 20 20  | ............(request-data....... | 
| 49940 |  20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67    65 74 20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e  | ........(plist-get.(gptel-fsm-in | 
| 49960 |  66 6f 20 72 65 71 75 65 73 74 2d 66 73 6d 29 20    3a 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20  | fo.request-fsm).:data)))........ | 
| 49980 |  20 28 62 75 66 66 65 72 2d 64 69 73 61 62 6c 65    2d 75 6e 64 6f 29 0a 20 20 20 20 20 20 20 20 28  | .(buffer-disable-undo).........( | 
| 499a0 |  65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20    20 20 20 20 20 20 28 69 66 20 28 65 71 20 66 6f  | erase-buffer).........(if.(eq.fo | 
| 499c0 |  72 6d 61 74 20 27 6a 73 6f 6e 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28  | rmat.'json).............(progn.( | 
| 499e0 |  66 75 6e 64 61 6d 65 6e 74 61 6c 2d 6d 6f 64 65    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fundamental-mode)............... | 
| 49a00 |  20 20 20 20 20 28 69 6e 73 65 72 74 20 28 67 70    74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65  | .....(insert.(gptel--json-encode | 
| 49a20 |  20 72 65 71 75 65 73 74 2d 64 61 74 61 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .request-data))................. | 
| 49a40 |  20 20 20 28 6a 73 6f 6e 2d 70 72 65 74 74 79 2d    70 72 69 6e 74 2d 62 75 66 66 65 72 29 29 0a 20  | ...(json-pretty-print-buffer)).. | 
| 49a60 |  20 20 20 20 20 20 20 20 20 28 6c 69 73 70 2d 64    61 74 61 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20  | .........(lisp-data-mode)....... | 
| 49a80 |  20 20 20 20 28 70 72 69 6e 31 20 72 65 71 75 65    73 74 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20  | ....(prin1.request-data)........ | 
| 49aa0 |  20 20 20 28 70 70 2d 62 75 66 66 65 72 29 29 0a    20 20 20 20 20 20 20 20 28 73 65 74 71 2d 6c 6f  | ...(pp-buffer)).........(setq-lo | 
| 49ac0 |  63 61 6c 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c    61 73 74 20 72 65 71 75 65 73 74 2d 66 73 6d 29  | cal.gptel--fsm-last.request-fsm) | 
| 49ae0 |  0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63    68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29  | .........(goto-char.(point-min)) | 
| 49b00 |  0a 20 20 20 20 20 20 20 20 28 76 69 65 77 2d 6d    6f 64 65 20 31 29 0a 20 20 20 20 20 20 20 20 28  | .........(view-mode.1).........( | 
| 49b20 |  73 65 74 71 20 62 75 66 66 65 72 2d 75 6e 64 6f    2d 6c 69 73 74 20 6e 69 6c 29 0a 20 20 20 20 20  | setq.buffer-undo-list.nil)...... | 
| 49b40 |  20 20 20 28 75 73 65 2d 6c 6f 63 61 6c 2d 6d 61    70 0a 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65  | ...(use-local-map..........(make | 
| 49b60 |  2d 63 6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70    0a 20 20 20 20 20 20 20 20 20 20 28 64 65 66 69  | -composed-keymap...........(defi | 
| 49b80 |  6e 65 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20 20    20 20 20 20 20 20 22 43 2d 63 20 43 2d 63 22 20  | ne-keymap............."C-c.C-c". | 
| 49ba0 |  23 27 67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75    65 2d 71 75 65 72 79 0a 20 20 20 20 20 20 20 20  | #'gptel--continue-query......... | 
| 49bc0 |  20 20 20 20 22 43 2d 63 20 43 2d 6b 22 20 23 27    71 75 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20  | ...."C-c.C-k".#'quit-window).... | 
| 49be0 |  20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d    6c 6f 63 61 6c 2d 6d 61 70 29 29 29 0a 20 20 20  | .......(current-local-map))).... | 
| 49c00 |  20 20 20 20 20 28 75 6e 6c 65 73 73 20 68 65 61    64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a  | .....(unless.header-line-format. | 
| 49c20 |  20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20    68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d  | ..........(setq.header-line-form | 
| 49c40 |  61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63  | at.................(substitute-c | 
| 49c60 |  6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f  | ommand-keys..................(co | 
| 49c80 |  6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 22 45 64 69 74 20 72 65 71  | ncat..................."Edit.req | 
| 49ca0 |  75 65 73 74 3a 20 5c 5c 5b 72 65 61 64 2d 6f 6e    6c 79 2d 6d 6f 64 65 5d 2c 22 0a 20 20 20 20 20  | uest:.\\[read-only-mode],"...... | 
| 49cc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 53    65 6e 64 20 72 65 71 75 65 73 74 3a 20 5c 5c 5b  | .............".Send.request:.\\[ | 
| 49ce0 |  67 70 74 65 6c 2d 2d 63 6f 6e 74 69 6e 75 65 2d    71 75 65 72 79 5d 2c 22 0a 20 20 20 20 20 20 20  | gptel--continue-query],"........ | 
| 49d00 |  20 20 20 20 20 20 20 20 20 20 20 22 20 51 75 69    74 3a 20 5c 5c 5b 71 75 69 74 2d 77 69 6e 64 6f  | ...........".Quit:.\\[quit-windo | 
| 49d20 |  77 5d 22 29 29 29 29 0a 20 20 20 20 20 20 20 20    28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20  | w]")))).........(display-buffer. | 
| 49d40 |  28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29    20 67 70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62  | (current-buffer).gptel-display-b | 
| 49d60 |  75 66 66 65 72 2d 61 63 74 69 6f 6e 29 29 29 29    29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d  | uffer-action)))))..(defun.gptel- | 
| 49d80 |  2d 63 6f 6e 74 69 6e 75 65 2d 71 75 65 72 79 20    28 29 0a 20 20 22 43 6f 6e 74 69 6e 75 65 20 73  | -continue-query.()..."Continue.s | 
| 49da0 |  65 6e 64 69 6e 67 20 74 68 65 20 67 70 74 65 6c    20 71 75 65 72 79 20 64 69 73 70 6c 61 79 65 64  | ending.the.gptel.query.displayed | 
| 49dc0 |  20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 2e    0a 0a 54 68 65 20 72 65 71 75 65 73 74 20 69 73  | .in.this.buffer...The.request.is | 
| 49de0 |  20 63 6f 6e 74 69 6e 75 65 64 20 77 69 74 68 20    74 68 65 20 73 61 6d 65 20 70 61 72 61 6d 65 74  | .continued.with.the.same.paramet | 
| 49e00 |  65 72 73 20 61 73 20 6f 72 69 67 69 6e 61 6c 6c    79 0a 73 70 65 63 69 66 69 65 64 2e 22 0a 20 20  | ers.as.originally.specified."... | 
| 49e20 |  28 69 6e 74 65 72 61 63 74 69 76 65 20 6e 69 6c    20 6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 20  | (interactive.nil.lisp-data-mode. | 
| 49e40 |  66 75 6e 64 61 6d 65 6e 74 61 6c 2d 6d 6f 64 65    29 0a 20 20 28 75 6e 6c 65 73 73 20 28 65 71 75  | fundamental-mode)...(unless.(equ | 
| 49e60 |  61 6c 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29    20 22 2a 67 70 74 65 6c 2d 71 75 65 72 79 2a 22  | al.(buffer-name)."*gptel-query*" | 
| 49e80 |  29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f    72 20 22 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20  | ).....(user-error."This.command. | 
| 49ea0 |  69 73 20 6d 65 61 6e 74 20 66 6f 72 20 75 73 65    20 69 6e 20 61 20 67 70 74 65 6c 20 64 72 79 2d  | is.meant.for.use.in.a.gptel.dry- | 
| 49ec0 |  72 75 6e 20 62 75 66 66 65 72 2e 22 29 29 0a 20    20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e  | run.buffer."))...(save-excursion | 
| 49ee0 |  0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20    28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20  | .....(goto-char.(point-min)).... | 
| 49f00 |  20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65    2d 75 6e 6c 65 73 73 2d 64 65 62 75 67 20 6e 69  | .(condition-case-unless-debug.ni | 
| 49f20 |  6c 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d    6c 65 74 2a 20 28 28 64 61 74 61 20 28 69 66 20  | l.........(when-let*.((data.(if. | 
| 49f40 |  28 65 71 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27    6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 29 0a  | (eq.major-mode.'lisp-data-mode). | 
| 49f60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72  | ..............................(r | 
| 49f80 |  65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66    66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20  | ead.(current-buffer))........... | 
| 49fa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72  | ..................(gptel--json-r | 
| 49fc0 |  65 61 64 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 63 6c  | ead))))...........(cl-assert.(cl | 
| 49fe0 |  2d 74 79 70 65 70 20 67 70 74 65 6c 2d 2d 66 73    6d 2d 6c 61 73 74 20 27 67 70 74 65 6c 2d 66 73  | -typep.gptel--fsm-last.'gptel-fs | 
| 4a000 |  6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70    6c 69 73 74 2d 70 75 74 20 28 67 70 74 65 6c 2d  | m))...........(plist-put.(gptel- | 
| 4a020 |  66 73 6d 2d 69 6e 66 6f 20 67 70 74 65 6c 2d 2d    66 73 6d 2d 6c 61 73 74 29 20 3a 64 61 74 61 20  | fsm-info.gptel--fsm-last).:data. | 
| 4a040 |  64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20    28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e  | data)...........(gptel--fsm-tran | 
| 4a060 |  73 69 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 66 73    6d 2d 6c 61 73 74 29 20 20 20 3b 49 4e 49 54 20  | sition.gptel--fsm-last)...;INIT. | 
| 4a080 |  2d 3e 20 57 41 49 54 0a 20 20 20 20 20 20 20 20    20 20 28 71 75 69 74 2d 77 69 6e 64 6f 77 29 29  | ->.WAIT...........(quit-window)) | 
| 4a0a0 |  0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20    20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72  | .......(error........(user-error | 
| 4a0c0 |  20 22 43 61 6e 20 6e 6f 74 20 72 65 73 75 6d 65    20 72 65 71 75 65 73 74 3a 20 63 6f 75 6c 64 20  | ."Can.not.resume.request:.could. | 
| 4a0e0 |  6e 6f 74 20 72 65 61 64 20 64 61 74 61 20 66 72    6f 6d 20 62 75 66 66 65 72 21 22 29 29 29 29 29  | not.read.data.from.buffer!"))))) | 
| 4a100 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d    69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20  | ..(defun.gptel--insert-response. | 
| 4a120 |  28 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 20 26    6f 70 74 69 6f 6e 61 6c 20 72 61 77 29 0a 20 20  | (response.info.&optional.raw)... | 
| 4a140 |  22 49 6e 73 65 72 74 20 74 68 65 20 4c 4c 4d 20    52 45 53 50 4f 4e 53 45 20 69 6e 74 6f 20 74 68  | "Insert.the.LLM.RESPONSE.into.th | 
| 4a160 |  65 20 67 70 74 65 6c 20 62 75 66 66 65 72 2e 0a    0a 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74  | e.gptel.buffer...INFO.is.a.plist | 
| 4a180 |  20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f    72 6d 61 74 69 6f 6e 20 72 65 6c 65 76 61 6e 74  | .containing.information.relevant | 
| 4a1a0 |  20 74 6f 20 74 68 69 73 20 62 75 66 66 65 72 2e    0a 53 65 65 20 60 67 70 74 65 6c 2d 2d 75 72 6c  | .to.this.buffer..See.`gptel--url | 
| 4a1c0 |  2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66    6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 4f 70 74  | -get-response'.for.details...Opt | 
| 4a1e0 |  69 6f 6e 61 6c 20 52 41 57 20 64 69 73 61 62 6c    65 73 20 74 65 78 74 20 70 72 6f 70 65 72 74 69  | ional.RAW.disables.text.properti | 
| 4a200 |  65 73 20 61 6e 64 20 74 72 61 6e 73 66 6f 72 6d    61 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 2a 20  | es.and.transformation."...(let*. | 
| 4a220 |  28 28 67 70 74 65 6c 2d 62 75 66 66 65 72 20 28    70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a  | ((gptel-buffer.(plist-get.info.: | 
| 4a240 |  62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20    20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20  | buffer))..........(start-marker. | 
| 4a260 |  28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20    3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20  | (plist-get.info.:position))..... | 
| 4a280 |  20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d    61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74  | .....(tracking-marker.(plist-get | 
| 4a2a0 |  20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d    6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 28 70  | .info.:tracking-marker))).....(p | 
| 4a2c0 |  63 61 73 65 20 72 65 73 70 6f 6e 73 65 0a 20 20    20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e  | case.response.......((pred.strin | 
| 4a2e0 |  67 70 29 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 52 65 73 70 6f 6e 73 65 20 74 65 78  | gp)................;Response.tex | 
| 4a300 |  74 0a 20 20 20 20 20 20 20 28 77 69 74 68 2d 63    75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70  | t........(with-current-buffer.gp | 
| 4a320 |  74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 20    20 20 20 20 28 77 68 65 6e 20 74 72 61 63 6b 69  | tel-buffer..........(when.tracki | 
| 4a340 |  6e 67 2d 6d 61 72 6b 65 72 20 20 20 20 20 20 20    20 20 20 20 3b 73 65 70 61 72 61 74 65 20 66 72  | ng-marker...........;separate.fr | 
| 4a360 |  6f 6d 20 70 72 65 76 69 6f 75 73 20 72 65 73 70    6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20  | om.previous.response............ | 
| 4a380 |  28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 20 28    63 6f 6e 63 61 74 20 67 70 74 65 6c 2d 72 65 73  | (setq.response.(concat.gptel-res | 
| 4a3a0 |  70 6f 6e 73 65 2d 73 65 70 61 72 61 74 6f 72 20    72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20  | ponse-separator.response)))..... | 
| 4a3c0 |  20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72    73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20  | .....(save-excursion............ | 
| 4a3e0 |  28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75    66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66  | (with-current-buffer.(marker-buf | 
| 4a400 |  66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | fer.start-marker)..............( | 
| 4a420 |  67 6f 74 6f 2d 63 68 61 72 20 28 6f 72 20 74 72    61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 73 74  | goto-char.(or.tracking-marker.st | 
| 4a440 |  61 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 72 75  | art-marker))..............;;.(ru | 
| 4a460 |  6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70    72 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b  | n-hooks.'gptel-pre-response-hook | 
| 4a480 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28    75 6e 6c 65 73 73 20 28 6f 72 20 28 62 6f 62 70  | )..............(unless.(or.(bobp | 
| 4a4a0 |  29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66    6f 20 3a 69 6e 2d 70 6c 61 63 65 29 0a 20 20 20  | ).(plist-get.info.:in-place).... | 
| 4a4c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 74 72 61 63 6b 69 6e 67 2d 6d  | ......................tracking-m | 
| 4a4e0 |  61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 69 6e 73 65 72 74 20 67 70  | arker)................(insert.gp | 
| 4a500 |  74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65 70    61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20  | tel-response-separator)......... | 
| 4a520 |  20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74    65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20  | .......(when.gptel-mode......... | 
| 4a540 |  20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74    20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65  | .........(insert.(gptel-response | 
| 4a560 |  2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -prefix-string)))............... | 
| 4a580 |  20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 73 74    61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6f 69 6e  | .(move-marker.start-marker.(poin | 
| 4a5a0 |  74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 28 75 6e 6c 65 73 73 20 72 61 77 0a 20 20  | t)))..............(unless.raw... | 
| 4a5c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68    65 6e 2d 6c 65 74 2a 20 28 28 74 72 61 6e 73 66  | .............(when-let*.((transf | 
| 4a5e0 |  6f 72 6d 65 72 20 28 70 6c 69 73 74 2d 67 65 74    20 69 6e 66 6f 20 3a 74 72 61 6e 73 66 6f 72 6d  | ormer.(plist-get.info.:transform | 
| 4a600 |  65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73  | er)))..................(setq.res | 
| 4a620 |  70 6f 6e 73 65 20 28 66 75 6e 63 61 6c 6c 20 74    72 61 6e 73 66 6f 72 6d 65 72 20 72 65 73 70 6f  | ponse.(funcall.transformer.respo | 
| 4a640 |  6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d  | nse)))................(add-text- | 
| 4a660 |  70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 30 20 28 6c 65  | properties.................0.(le | 
| 4a680 |  6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 20 27    28 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20  | ngth.response).'(gptel.response. | 
| 4a6a0 |  66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70    74 65 6c 29 29 20 72 65 73 70 6f 6e 73 65 29 29  | front-sticky.(gptel)).response)) | 
| 4a6c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69    6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 29 0a  | ..............(insert.response). | 
| 4a6e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c    69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 72  | .............(plist-put.info.:tr | 
| 4a700 |  61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 73    65 74 71 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72  | acking-marker.(setq.tracking-mar | 
| 4a720 |  6b 65 72 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65    72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ker.(point-marker)))............ | 
| 4a740 |  20 20 3b 3b 20 66 6f 72 20 75 6e 69 66 6f 72 6d    69 74 79 20 77 69 74 68 20 73 74 72 65 61 6d 69  | ..;;.for.uniformity.with.streami | 
| 4a760 |  6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d  | ng.responses..............(set-m | 
| 4a780 |  61 72 6b 65 72 2d 69 6e 73 65 72 74 69 6f 6e 2d    74 79 70 65 20 74 72 61 63 6b 69 6e 67 2d 6d 61  | arker-insertion-type.tracking-ma | 
| 4a7a0 |  72 6b 65 72 20 74 29 29 29 29 29 0a 20 20 20 20    20 20 28 60 28 72 65 61 73 6f 6e 69 6e 67 20 2e  | rker.t))))).......(`(reasoning.. | 
| 4a7c0 |  20 2c 74 65 78 74 29 0a 20 20 20 20 20 20 20 28    77 68 65 6e 2d 6c 65 74 2a 20 28 28 69 6e 63 6c  | .,text)........(when-let*.((incl | 
| 4a7e0 |  75 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69    6e 66 6f 20 3a 69 6e 63 6c 75 64 65 2d 72 65 61  | ude.(plist-get.info.:include-rea | 
| 4a800 |  73 6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20    20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20  | soning)))..........(if.(stringp. | 
| 4a820 |  69 6e 63 6c 75 64 65 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72  | include)..............(with-curr | 
| 4a840 |  65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d    62 75 66 66 65 72 2d 63 72 65 61 74 65 0a 20 20  | ent-buffer.(get-buffer-create... | 
| 4a860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 4a880 |  20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f    20 3a 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e  | .(plist-get.info.:include-reason | 
| 4a8a0 |  69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72  | ing))................(save-excur | 
| 4a8c0 |  73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20    28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 28 69 6e  | sion.(goto-char.(point-max)).(in | 
| 4a8e0 |  73 65 72 74 20 74 65 78 74 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75  | sert.text)))............(with-cu | 
| 4a900 |  72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61    72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72  | rrent-buffer.(marker-buffer.star | 
| 4a920 |  74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 65  | t-marker)..............(let.((se | 
| 4a940 |  70 61 72 61 74 6f 72 20 20 20 20 20 20 20 20 20    3b 53 65 70 61 72 61 74 65 20 66 72 6f 6d 20 72  | parator.........;Separate.from.r | 
| 4a960 |  65 73 70 6f 6e 73 65 20 70 72 65 66 69 78 20 69    66 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20  | esponse.prefix.if.required...... | 
| 4a980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    61 6e 64 20 28 6e 6f 74 20 74 72 61 63 6b 69 6e  | ...............(and.(not.trackin | 
| 4a9a0 |  67 2d 6d 61 72 6b 65 72 29 20 67 70 74 65 6c 2d    6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20  | g-marker).gptel-mode............ | 
| 4a9c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e    6f 74 20 28 73 74 72 69 6e 67 2d 73 75 66 66 69  | ..............(not.(string-suffi | 
| 4a9e0 |  78 2d 70 20 22 5c 6e 22 20 28 67 70 74 65 6c 2d    72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d  | x-p."\n".(gptel-response-prefix- | 
| 4aa00 |  73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | string)))....................... | 
| 4aa20 |  20 20 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6c  | ..."\n"))....................(bl | 
| 4aa40 |  6f 63 6b 73 20 28 69 66 20 28 64 65 72 69 76 65    64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f  | ocks.(if.(derived-mode-p.'org-mo | 
| 4aa60 |  64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | de)............................. | 
| 4aa80 |  20 20 20 60 28 22 23 2b 62 65 67 69 6e 5f 72 65    61 73 6f 6e 69 6e 67 5c 6e 22 20 2e 20 2c 28 63  | ...`("#+begin_reasoning\n"...,(c | 
| 4aaa0 |  6f 6e 63 61 74 20 22 5c 6e 23 2b 65 6e 64 5f 72    65 61 73 6f 6e 69 6e 67 22 0a 20 20 20 20 20 20  | oncat."\n#+end_reasoning"....... | 
| 4aac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 4aae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 67 70 74 65 6c 2d 72 65 73 70 6f  | .....................gptel-respo | 
| 4ab00 |  6e 73 65 2d 73 65 70 61 72 61 74 6f 72 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nse-separator))................. | 
| 4ab20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    54 4f 44 4f 28 72 65 61 73 6f 6e 69 6e 67 29 20  | .............;;.TODO(reasoning). | 
| 4ab40 |  72 65 6d 6f 76 65 20 70 72 6f 70 65 72 74 69 65    73 20 61 6e 64 20 73 74 72 69 70 20 69 6e 73 74  | remove.properties.and.strip.inst | 
| 4ab60 |  65 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ead............................. | 
| 4ab80 |  20 28 63 6f 6e 73 20 28 70 72 6f 70 65 72 74 69    7a 65 20 22 60 60 60 20 72 65 61 73 6f 6e 69 6e  | .(cons.(propertize."```.reasonin | 
| 4aba0 |  67 5c 6e 22 20 27 67 70 74 65 6c 20 27 69 67 6e    6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20  | g\n".'gptel.'ignore)............ | 
| 4abc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20  | ........................(concat. | 
| 4abe0 |  28 70 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 60    60 60 22 20 27 67 70 74 65 6c 20 27 69 67 6e 6f  | (propertize."\n```".'gptel.'igno | 
| 4ac00 |  72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | re)............................. | 
| 4ac20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67    70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65  | ...............gptel-response-se | 
| 4ac40 |  70 61 72 61 74 6f 72 29 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20  | parator)))))................(if. | 
| 4ac60 |  28 65 71 20 69 6e 63 6c 75 64 65 20 27 69 67 6e    6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20  | (eq.include.'ignore)............ | 
| 4ac80 |  20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........(progn.................. | 
| 4aca0 |  20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72    6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20  | ....(add-text-properties........ | 
| 4acc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30    20 28 6c 65 6e 67 74 68 20 74 65 78 74 29 20 27  | ...............0.(length.text).' | 
| 4ace0 |  28 67 70 74 65 6c 20 69 67 6e 6f 72 65 20 66 72    6f 6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65  | (gptel.ignore.front-sticky.(gpte | 
| 4ad00 |  6c 29 29 20 74 65 78 74 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | l)).text)......................( | 
| 4ad20 |  67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65    73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20  | gptel--insert-response.......... | 
| 4ad40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 63 61 74 20 28 63 61 72 20 62 6c 6f 63 6b 73  | .............(concat.(car.blocks | 
| 4ad60 |  29 20 74 65 78 74 20 28 63 64 72 20 62 6c 6f 63    6b 73 29 29 20 69 6e 66 6f 20 74 29 29 0a 20 20  | ).text.(cdr.blocks)).info.t))... | 
| 4ad80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65  | ...............(gptel--insert-re | 
| 4ada0 |  73 70 6f 6e 73 65 20 28 63 6f 6e 63 61 74 20 73    65 70 61 72 61 74 6f 72 20 28 63 61 72 20 62 6c  | sponse.(concat.separator.(car.bl | 
| 4adc0 |  6f 63 6b 73 29 29 20 69 6e 66 6f 20 74 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ocks)).info.t).................. | 
| 4ade0 |  28 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72    65 73 70 6f 6e 73 65 20 74 65 78 74 20 69 6e 66  | (gptel--insert-response.text.inf | 
| 4ae00 |  6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65  | o)..................(gptel--inse | 
| 4ae20 |  72 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 64 72    20 62 6c 6f 63 6b 73 29 20 69 6e 66 6f 20 74 29  | rt-response.(cdr.blocks).info.t) | 
| 4ae40 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 77 68 65 6e 20 28 64 65 72 69 76 65 64 2d  | )................(when.(derived- | 
| 4ae60 |  6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65    29 20 3b 66 6f 6c 64 20 62 6c 6f 63 6b 0a 20 20  | mode-p.'org-mode).;fold.block... | 
| 4ae80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20  | ...............(save-excursion.. | 
| 4aea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6c  | ..................(goto-char.(pl | 
| 4aec0 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72    61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a  | ist-get.info.:tracking-marker)). | 
| 4aee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 65 61 72 63 68 2d 62 61 63 6b 77  | ...................(search-backw | 
| 4af00 |  61 72 64 20 22 23 2b 65 6e 64 5f 72 65 61 73 6f    6e 69 6e 67 22 20 73 74 61 72 74 2d 6d 61 72 6b  | ard."#+end_reasoning".start-mark | 
| 4af20 |  65 72 20 74 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28  | er.t)....................(when.( | 
| 4af40 |  6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5e 23 5c 5c    2b 65 6e 64 5f 72 65 61 73 6f 6e 69 6e 67 22 29  | looking-at."^#\\+end_reasoning") | 
| 4af60 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6f 72 67 2d 63 79 63 6c 65  | ......................(org-cycle | 
| 4af80 |  29 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20    28 60 28 74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c  | ))))))))).......(`(tool-call..., | 
| 4afa0 |  74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20 20    20 20 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c  | tool-calls)........(gptel--displ | 
| 4afc0 |  61 79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f    6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 29 29 0a  | ay-tool-calls.tool-calls.info)). | 
| 4afe0 |  20 20 20 20 20 20 28 60 28 74 6f 6f 6c 2d 72 65    73 75 6c 74 20 2e 20 2c 74 6f 6f 6c 2d 72 65 73  | ......(`(tool-result...,tool-res | 
| 4b000 |  75 6c 74 73 29 0a 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f  | ults)........(gptel--display-too | 
| 4b020 |  6c 2d 72 65 73 75 6c 74 73 20 74 6f 6f 6c 2d 72    65 73 75 6c 74 73 20 69 6e 66 6f 29 29 29 29 29  | l-results.tool-results.info))))) | 
| 4b040 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d    63 72 65 61 74 65 2d 70 72 6f 6d 70 74 2d 62 75  | ..(defun.gptel--create-prompt-bu | 
| 4b060 |  66 66 65 72 20 28 26 6f 70 74 69 6f 6e 61 6c 20    70 72 6f 6d 70 74 2d 65 6e 64 29 0a 20 20 22 52  | ffer.(&optional.prompt-end)..."R | 
| 4b080 |  65 74 75 72 6e 20 61 20 62 75 66 66 65 72 20 77    69 74 68 20 74 68 65 20 63 6f 6e 76 65 72 73 61  | eturn.a.buffer.with.the.conversa | 
| 4b0a0 |  74 69 6f 6e 20 70 72 6f 6d 70 74 20 74 6f 20 62    65 20 73 65 6e 74 2e 0a 0a 49 66 20 74 68 65 20  | tion.prompt.to.be.sent...If.the. | 
| 4b0c0 |  72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65    20 6c 69 6d 69 74 20 74 68 65 20 70 72 6f 6d 70  | region.is.active.limit.the.promp | 
| 4b0e0 |  74 20 74 65 78 74 20 74 6f 20 74 68 65 20 72 65    67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 2e 0a 4f  | t.text.to.the.region.contents..O | 
| 4b100 |  74 68 65 72 77 69 73 65 20 74 68 65 20 70 72 6f    6d 70 74 20 74 65 78 74 20 69 73 20 63 6f 6e 73  | therwise.the.prompt.text.is.cons | 
| 4b120 |  74 72 75 63 74 65 64 20 66 72 6f 6d 20 74 68 65    20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65  | tructed.from.the.contents.of.the | 
| 4b140 |  0a 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20    75 70 20 74 6f 20 70 6f 69 6e 74 2c 20 6f 72 20  | .current.buffer.up.to.point,.or. | 
| 4b160 |  50 52 4f 4d 50 54 2d 45 4e 44 20 69 66 20 70 72    6f 76 69 64 65 64 2e 22 0a 20 20 28 73 61 76 65  | PROMPT-END.if.provided."...(save | 
| 4b180 |  2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28    73 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e  | -excursion.....(save-restriction | 
| 4b1a0 |  0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75    66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65  | .......(let.((buf.(current-buffe | 
| 4b1c0 |  72 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f    6e 64 0a 20 20 20 20 20 20 20 20 20 28 28 64 65  | r))).........(cond..........((de | 
| 4b1e0 |  72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72    67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20  | rived-mode-p.'org-mode)......... | 
| 4b200 |  20 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65    6c 2d 6f 72 67 29 0a 20 20 20 20 20 20 20 20 20  | ..(require.'gptel-org).......... | 
| 4b220 |  20 3b 3b 20 41 6c 73 6f 20 68 61 6e 64 6c 65 73    20 72 65 67 69 6f 6e 73 20 69 6e 20 4f 72 67 20  | .;;.Also.handles.regions.in.Org. | 
| 4b240 |  6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 28    67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74  | mode...........(gptel-org--creat | 
| 4b260 |  65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65 72 20    70 72 6f 6d 70 74 2d 65 6e 64 29 29 0a 20 20 20  | e-prompt-buffer.prompt-end)).... | 
| 4b280 |  20 20 20 20 20 20 28 28 75 73 65 2d 72 65 67 69    6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20  | ......((use-region-p)........... | 
| 4b2a0 |  28 6c 65 74 20 28 28 72 62 20 28 72 65 67 69 6f    6e 2d 62 65 67 69 6e 6e 69 6e 67 29 29 20 28 72  | (let.((rb.(region-beginning)).(r | 
| 4b2c0 |  65 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70  | e.(region-end))).............(gp | 
| 4b2e0 |  74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72    2d 63 6f 70 79 20 62 75 66 20 72 62 20 72 65 0a  | tel--with-buffer-copy.buf.rb.re. | 
| 4b300 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63    75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29  | ..............(current-buffer))) | 
| 4b320 |  29 0a 20 20 20 20 20 20 20 20 20 28 74 20 28 75    6e 6c 65 73 73 20 70 72 6f 6d 70 74 2d 65 6e 64  | )..........(t.(unless.prompt-end | 
| 4b340 |  20 28 73 65 74 71 20 70 72 6f 6d 70 74 2d 65 6e    64 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20  | .(setq.prompt-end.(point)))..... | 
| 4b360 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d    77 69 74 68 2d 62 75 66 66 65 72 2d 63 6f 70 79  | ........(gptel--with-buffer-copy | 
| 4b380 |  20 62 75 66 20 28 70 6f 69 6e 74 2d 6d 69 6e 29    20 70 72 6f 6d 70 74 2d 65 6e 64 0a 20 20 20 20  | .buf.(point-min).prompt-end..... | 
| 4b3a0 |  20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65    6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 29 29  | ..........(current-buffer))))))) | 
| 4b3c0 |  29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d    2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 28  | )..(defun.gptel--create-prompt.( | 
| 4b3e0 |  26 6f 70 74 69 6f 6e 61 6c 20 70 72 6f 6d 70 74    2d 65 6e 64 29 0a 20 20 22 52 65 74 75 72 6e 20  | &optional.prompt-end)..."Return. | 
| 4b400 |  61 20 66 75 6c 6c 20 63 6f 6e 76 65 72 73 61 74    69 6f 6e 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20  | a.full.conversation.prompt.from. | 
| 4b420 |  74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20    74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a 49 66  | the.contents.of.this.buffer...If | 
| 4b440 |  20 60 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73    73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 27 20 69  | .`gptel--num-messages-to-send'.i | 
| 4b460 |  73 20 73 65 74 2c 20 6c 69 6d 69 74 20 74 6f 20    74 68 61 74 20 6d 61 6e 79 0a 72 65 63 65 6e 74  | s.set,.limit.to.that.many.recent | 
| 4b480 |  20 65 78 63 68 61 6e 67 65 73 2e 0a 0a 49 66 20    50 52 4f 4d 50 54 2d 45 4e 44 20 28 61 20 6d 61  | .exchanges...If.PROMPT-END.(a.ma | 
| 4b4a0 |  72 6b 65 72 29 20 69 73 20 70 72 6f 76 69 64 65    64 2c 20 65 6e 64 20 74 68 65 20 70 72 6f 6d 70  | rker).is.provided,.end.the.promp | 
| 4b4c0 |  74 20 63 6f 6e 74 65 6e 74 73 0a 74 68 65 72 65    2e 20 20 54 68 69 73 20 64 65 66 61 75 6c 74 73  | t.contents.there...This.defaults | 
| 4b4e0 |  20 74 6f 20 28 70 6f 69 6e 74 29 2e 22 0a 20 20    28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75  | .to.(point)."...(with-current-bu | 
| 4b500 |  66 66 65 72 20 28 67 70 74 65 6c 2d 2d 63 72 65    61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65  | ffer.(gptel--create-prompt-buffe | 
| 4b520 |  72 20 70 72 6f 6d 70 74 2d 65 6e 64 29 0a 20 20    20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63  | r.prompt-end).....(unwind-protec | 
| 4b540 |  74 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c    2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 0a 20  | t.........(gptel--parse-buffer.. | 
| 4b560 |  20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62 61    63 6b 65 6e 64 20 28 61 6e 64 20 67 70 74 65 6c  | ........gptel-backend.(and.gptel | 
| 4b580 |  2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74    6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20  | --num-messages-to-send.......... | 
| 4b5a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 2a 20 32 20 67 70 74 65 6c 2d 2d 6e  | ...................(*.2.gptel--n | 
| 4b5c0 |  75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73    65 6e 64 29 29 29 0a 20 20 20 20 20 20 28 6b 69  | um-messages-to-send))).......(ki | 
| 4b5e0 |  6c 6c 2d 62 75 66 66 65 72 20 28 63 75 72 72 65    6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 0a 0a  | ll-buffer.(current-buffer))))).. | 
| 4b600 |  28 6d 61 6b 65 2d 6f 62 73 6f 6c 65 74 65 20 27    67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72  | (make-obsolete.'gptel--create-pr | 
| 4b620 |  6f 6d 70 74 20 27 67 70 74 65 6c 2d 2d 63 72 65    61 74 65 2d 70 72 6f 6d 70 74 2d 62 75 66 66 65  | ompt.'gptel--create-prompt-buffe | 
| 4b640 |  72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 30 2e 39 2e 39 22 29 0a 0a 28 63 6c 2d 64  | r................"0.9.9")..(cl-d | 
| 4b660 |  65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d    2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 62  | efgeneric.gptel--parse-buffer.(b | 
| 4b680 |  61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69    65 73 29 0a 20 20 22 50 61 72 73 65 20 63 75 72  | ackend.max-entries)..."Parse.cur | 
| 4b6a0 |  72 65 6e 74 20 62 75 66 66 65 72 20 62 61 63 6b    77 61 72 64 73 20 66 72 6f 6d 20 70 6f 69 6e 74  | rent.buffer.backwards.from.point | 
| 4b6c0 |  20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69    73 74 20 6f 66 20 70 72 6f 6d 70 74 73 2e 0a 0a  | .and.return.a.list.of.prompts... | 
| 4b6e0 |  42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 4c    4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73  | BACKEND.is.the.LLM.backend.in.us | 
| 4b700 |  65 2e 0a 0a 4d 41 58 2d 45 4e 54 52 49 45 53 20    69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  | e...MAX-ENTRIES.is.the.number.of | 
| 4b720 |  20 71 75 65 72 69 65 73 2f 72 65 73 70 6f 6e 73    65 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 6f  | .queries/responses.to.include.fo | 
| 4b740 |  72 0a 63 6f 6e 74 65 78 62 74 2e 22 29 0a 0a 28    64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 61 72  | r.contexbt.")..(defun.gptel--par | 
| 4b760 |  73 65 2d 6c 69 73 74 2d 61 6e 64 2d 69 6e 73 65    72 74 20 28 70 72 6f 6d 70 74 73 29 0a 20 20 22  | se-list-and-insert.(prompts)..." | 
| 4b780 |  49 6e 73 65 72 74 20 50 52 4f 4d 50 54 53 2c 20    61 20 6c 69 73 74 20 6f 66 20 6d 65 73 73 61 67  | Insert.PROMPTS,.a.list.of.messag | 
| 4b7a0 |  65 73 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72    65 6e 74 20 62 75 66 66 65 72 2e 0a 0a 50 72 6f  | es.into.the.current.buffer...Pro | 
| 4b7c0 |  70 65 72 74 69 7a 65 20 74 68 65 20 69 6e 73 65    72 74 69 6f 6e 73 20 69 6e 20 61 20 66 6f 72 6d  | pertize.the.insertions.in.a.form | 
| 4b7e0 |  61 74 20 67 70 74 65 6c 20 63 61 6e 20 70 61 72    73 65 20 69 6e 74 6f 20 61 0a 63 6f 6e 76 65 72  | at.gptel.can.parse.into.a.conver | 
| 4b800 |  73 61 74 69 6f 6e 2e 0a 0a 50 52 4f 4d 50 54 53    20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 74 68  | sation...PROMPTS.is.typically.th | 
| 4b820 |  65 20 69 6e 70 75 74 20 74 6f 20 60 67 70 74 65    6c 2d 72 65 71 75 65 73 74 27 2c 20 65 69 74 68  | e.input.to.`gptel-request',.eith | 
| 4b840 |  65 72 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72    69 6e 67 73 0a 72 65 70 72 65 73 65 6e 74 69 6e  | er.a.list.of.strings.representin | 
| 4b860 |  67 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e    20 77 69 74 68 20 61 6c 74 65 72 6e 61 74 65 20  | g.a.conversation.with.alternate. | 
| 4b880 |  70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 20    74 75 72 6e 73 2c 20 6f 72 20 61 20 6c 69 73 74  | prompt/response.turns,.or.a.list | 
| 4b8a0 |  20 6f 66 0a 6c 69 73 74 73 20 77 69 74 68 20 65    78 70 6c 69 63 69 74 20 72 6f 6c 65 73 20 28 70  | .of.lists.with.explicit.roles.(p | 
| 4b8c0 |  72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65 2f 74    6f 6f 6c 29 2e 20 20 53 65 65 20 74 68 65 20 64  | rompt/response/tool)...See.the.d | 
| 4b8e0 |  6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 0a    60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 20  | ocumentation.of.`gptel-request'. | 
| 4b900 |  66 6f 72 20 74 68 65 20 6c 61 74 74 65 72 2e 22    0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20  | for.the.latter."...(if.(stringp. | 
| 4b920 |  28 63 61 72 20 70 72 6f 6d 70 74 73 29 29 20 20    20 20 20 20 20 20 20 3b 20 53 69 6d 70 6c 65 20  | (car.prompts)).........;.Simple. | 
| 4b940 |  66 6f 72 6d 61 74 2c 20 6c 69 73 74 20 6f 66 20    73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 28 63  | format,.list.of.strings.......(c | 
| 4b960 |  6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 20    69 6e 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20  | l-loop.for.text.in.prompts...... | 
| 4b980 |  20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 65    73 70 6f 6e 73 65 20 3d 20 6e 69 6c 20 74 68 65  | ..........for.response.=.nil.the | 
| 4b9a0 |  6e 20 28 6e 6f 74 20 72 65 73 70 6f 6e 73 65 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n.(not.response)................ | 
| 4b9c0 |  77 68 65 6e 20 74 65 78 74 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 69 66 20 72 65 73 70  | when.text................if.resp | 
| 4b9e0 |  6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 64 6f 20 28 69 6e 73 65 72 74 20 67  | onse................do.(insert.g | 
| 4ba00 |  70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65    70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20  | ptel-response-separator......... | 
| 4ba20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 74 65  | ..................(propertize.te | 
| 4ba40 |  78 74 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f    6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20  | xt.'gptel.'response)............ | 
| 4ba60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67    70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65  | ...............gptel-response-se | 
| 4ba80 |  70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 65 6c 73 65 20 64 6f 20  | parator)................else.do. | 
| 4baa0 |  28 69 6e 73 65 72 74 20 74 65 78 74 29 29 0a 20    20 20 20 28 64 6f 6c 69 73 74 20 28 65 6e 74 72  | (insert.text)).....(dolist.(entr | 
| 4bac0 |  79 20 70 72 6f 6d 70 74 73 29 20 20 20 20 20 20    20 20 20 20 20 20 20 3b 20 41 64 76 61 6e 63 65  | y.prompts).............;.Advance | 
| 4bae0 |  64 20 66 6f 72 6d 61 74 2c 20 6c 69 73 74 20 6f    66 20 6c 69 73 74 73 0a 20 20 20 20 20 20 28 70  | d.format,.list.of.lists.......(p | 
| 4bb00 |  63 61 73 65 20 65 6e 74 72 79 0a 20 20 20 20 20    20 20 20 28 60 28 70 72 6f 6d 70 74 20 2e 20 2c  | case.entry.........(`(prompt..., | 
| 4bb20 |  6d 73 67 29 20 28 69 6e 73 65 72 74 20 28 6f 72    20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29 20  | msg).(insert.(or.(car-safe.msg). | 
| 4bb40 |  6d 73 67 29 29 29 0a 20 20 20 20 20 20 20 20 28    60 28 72 65 73 70 6f 6e 73 65 20 2e 20 2c 6d 73  | msg))).........(`(response...,ms | 
| 4bb60 |  67 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 73    65 72 74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e  | g)..........(insert.gptel-respon | 
| 4bb80 |  73 65 2d 73 65 70 61 72 61 74 6f 72 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | se-separator..................(p | 
| 4bba0 |  72 6f 70 65 72 74 69 7a 65 20 28 6f 72 20 28 63    61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67  | ropertize.(or.(car-safe.msg).msg | 
| 4bbc0 |  29 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e    73 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 60  | ).'gptel.'response))).........(` | 
| 4bbe0 |  28 74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20    20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20  | (tool...,call)..........(insert. | 
| 4bc00 |  67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73    65 70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20  | gptel-response-separator........ | 
| 4bc20 |  20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65    72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20  | ..........(propertize........... | 
| 4bc40 |  20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........(concat................. | 
| 4bc60 |  20 20 20 22 28 3a 6e 61 6d 65 20 22 20 28 70 6c    69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 6e 61  | ..."(:name.".(plist-get.call.:na | 
| 4bc80 |  6d 65 29 20 22 20 3a 61 72 67 73 20 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | me).".:args."................... | 
| 4bca0 |  20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e    67 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c  | .(prin1-to-string.(plist-get.cal | 
| 4bcc0 |  6c 20 3a 61 72 67 73 29 29 20 22 29 5c 6e 5c 6e    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l.:args)).")\n\n"............... | 
| 4bce0 |  20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20    63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 0a 20  | .....(plist-get.call.:result)).. | 
| 4bd00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 27 67 70 74 65 6c 20 60 28 74 6f 6f 6c 20 2e  | .................'gptel.`(tool.. | 
| 4bd20 |  20 2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c    6c 20 3a 69 64 29 29 29 29 29 29 29 29 29 0a 0a  | .,(plist-get.call.:id))))))))).. | 
| 4bd40 |  28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67    70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74  | (cl-defgeneric.gptel--parse-list | 
| 4bd60 |  20 28 62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 74    2d 6c 69 73 74 29 0a 20 20 22 50 61 72 73 65 20  | .(backend.prompt-list)..."Parse. | 
| 4bd80 |  50 52 4f 4d 50 54 2d 4c 49 53 54 20 61 6e 64 20    72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66  | PROMPT-LIST.and.return.a.list.of | 
| 4bda0 |  20 70 72 6f 6d 70 74 73 20 73 75 69 74 61 62 6c    65 20 66 6f 72 0a 42 41 43 4b 45 4e 44 2e 0a 0a  | .prompts.suitable.for.BACKEND... | 
| 4bdc0 |  50 52 4f 4d 50 54 2d 4c 49 53 54 20 69 73 20 69    6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20  | PROMPT-LIST.is.interpreted.as.a. | 
| 4bde0 |  63 6f 6e 76 65 72 73 61 74 69 6f 6e 2c 20 69 2e    65 2e 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 6e  | conversation,.i.e..an.alternatin | 
| 4be00 |  67 0a 73 65 72 69 65 73 20 6f 66 20 75 73 65 72    20 70 72 6f 6d 70 74 73 20 61 6e 64 20 4c 4c 4d  | g.series.of.user.prompts.and.LLM | 
| 4be20 |  20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 68 65    20 72 65 74 75 72 6e 65 64 20 73 74 72 75 63 74  | .responses...The.returned.struct | 
| 4be40 |  75 72 65 0a 69 73 20 73 75 69 74 61 62 6c 65 20    66 6f 72 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e  | ure.is.suitable.for.including.in | 
| 4be60 |  20 74 68 65 20 72 65 71 75 65 73 74 20 70 61 79    6c 6f 61 64 2e 0a 0a 42 41 43 4b 45 4e 44 20 69  | .the.request.payload...BACKEND.i | 
| 4be80 |  73 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e    64 20 69 6e 20 75 73 65 2e 22 29 0a 0a 28 63 6c  | s.the.LLM.backend.in.use.")..(cl | 
| 4bea0 |  2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 65    6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c  | -defgeneric.gptel--parse-media-l | 
| 4bec0 |  69 6e 6b 73 20 28 6d 6f 64 65 20 62 65 67 20 65    6e 64 29 0a 20 20 22 46 69 6e 64 20 6d 65 64 69  | inks.(mode.beg.end)..."Find.medi | 
| 4bee0 |  61 20 6c 69 6e 6b 73 20 62 65 74 77 65 65 6e 20    42 45 47 20 61 6e 64 20 45 4e 44 2e 0a 0a 4d 4f  | a.links.between.BEG.and.END...MO | 
| 4bf00 |  44 45 20 69 73 20 74 68 65 20 6d 61 6a 6f 72 2d    6d 6f 64 65 20 6f 66 20 74 68 65 20 62 75 66 66  | DE.is.the.major-mode.of.the.buff | 
| 4bf20 |  65 72 2e 0a 0a 52 65 74 75 72 6e 73 20 61 20 70    6c 69 73 74 20 77 68 65 72 65 20 65 61 63 68 20  | er...Returns.a.plist.where.each. | 
| 4bf40 |  65 6e 74 72 79 20 69 73 20 6f 66 20 74 68 65 20    66 6f 72 6d 0a 20 20 28 3a 74 65 78 74 20 5c 22  | entry.is.of.the.form...(:text.\" | 
| 4bf60 |  73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 6f 72 0a    20 20 28 3a 6d 65 64 69 61 20 5c 22 6d 65 64 69  | some.text\").or...(:media.\"medi | 
| 4bf80 |  61 20 75 72 69 20 6f 72 20 66 69 6c 65 20 70 61    74 68 5c 22 29 2e 22 0a 20 20 28 69 67 6e 6f 72  | a.uri.or.file.path\")."...(ignor | 
| 4bfa0 |  65 20 6d 6f 64 65 29 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.mode)......................... | 
| 4bfc0 |  3b 62 79 74 65 2d 63 6f 6d 70 69 6c 65 72 0a 20    20 28 6c 69 73 74 20 60 28 3a 74 65 78 74 20 2c  | ;byte-compiler...(list.`(:text., | 
| 4bfe0 |  28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e    67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a  | (buffer-substring-no-properties. | 
| 4c000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 62 65 67 20 65 6e 64 29 29 29 29 0a 0a 28  | ..................beg.end))))..( | 
| 4c020 |  64 65 66 76 61 72 20 6d 61 72 6b 64 6f 77 6e 2d    72 65 67 65 78 2d 6c 69 6e 6b 2d 69 6e 6c 69 6e  | defvar.markdown-regex-link-inlin | 
| 4c040 |  65 29 0a 28 64 65 66 76 61 72 20 6d 61 72 6b 64    6f 77 6e 2d 72 65 67 65 78 2d 61 6e 67 6c 65 2d  | e).(defvar.markdown-regex-angle- | 
| 4c060 |  75 72 69 29 0a 28 64 65 63 6c 61 72 65 2d 66 75    6e 63 74 69 6f 6e 20 6d 61 72 6b 64 6f 77 6e 2d  | uri).(declare-function.markdown- | 
| 4c080 |  6c 69 6e 6b 2d 61 74 2d 70 6f 73 20 22 6d 61 72    6b 64 6f 77 6e 2d 6d 6f 64 65 22 29 0a 28 64 65  | link-at-pos."markdown-mode").(de | 
| 4c0a0 |  63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d    61 69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65  | clare-function.mailcap-file-name | 
| 4c0c0 |  2d 74 6f 2d 6d 69 6d 65 2d 74 79 70 65 20 22 6d    61 69 6c 63 61 70 22 29 0a 0a 28 63 6c 2d 64 65  | -to-mime-type."mailcap")..(cl-de | 
| 4c0e0 |  66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70    61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e 6b 73  | fmethod.gptel--parse-media-links | 
| 4c100 |  20 28 28 5f 6d 6f 64 65 20 28 65 71 6c 20 27 6d    61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 29 29 20 62  | .((_mode.(eql.'markdown-mode)).b | 
| 4c120 |  65 67 20 65 6e 64 29 0a 20 20 22 50 61 72 73 65    20 74 65 78 74 20 61 6e 64 20 61 63 74 69 6f 6e  | eg.end)..."Parse.text.and.action | 
| 4c140 |  61 62 6c 65 20 6c 69 6e 6b 73 20 62 65 74 77 65    65 6e 20 42 45 47 20 61 6e 64 20 45 4e 44 2e 0a  | able.links.between.BEG.and.END.. | 
| 4c160 |  0a 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f    66 20 74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74  | .Return.a.list.of.the.form..((:t | 
| 4c180 |  65 78 74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c    22 29 0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f  | ext.\"some.text\")...(:media.\"/ | 
| 4c1a0 |  70 61 74 68 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e    67 5c 22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67  | path/to/media.png\".:mime.\"imag | 
| 4c1c0 |  65 2f 70 6e 67 5c 22 29 0a 20 20 28 3a 74 65 78    74 20 5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29  | e/png\")...(:text.\"More.text\") | 
| 4c1e0 |  29 0a 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20    69 6e 74 6f 20 74 68 65 20 75 73 65 72 20 70 72  | ).for.inclusion.into.the.user.pr | 
| 4c200 |  6f 6d 70 74 20 66 6f 72 20 74 68 65 20 67 70 74    65 6c 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28  | ompt.for.the.gptel.request."...( | 
| 4c220 |  72 65 71 75 69 72 65 20 27 6d 61 69 6c 63 61 70    29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | require.'mailcap)............... | 
| 4c240 |  20 20 20 20 20 3b 46 49 58 4d 45 20 41 76 6f 69    64 20 74 68 69 73 20 73 6f 6d 65 68 6f 77 0a 20  | .....;FIXME.Avoid.this.somehow.. | 
| 4c260 |  20 28 6c 65 74 20 28 28 70 61 72 74 73 29 20 28    66 72 6f 6d 2d 70 74 29 20 28 6d 69 6d 65 29 29  | .(let.((parts).(from-pt).(mime)) | 
| 4c280 |  0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72    73 69 6f 6e 0a 20 20 20 20 20 20 28 73 65 74 71  | .....(save-excursion.......(setq | 
| 4c2a0 |  20 66 72 6f 6d 2d 70 74 20 28 67 6f 74 6f 2d 63    68 61 72 20 62 65 67 29 29 0a 20 20 20 20 20 20  | .from-pt.(goto-char.beg))....... | 
| 4c2c0 |  28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 63    68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20  | (while.(re-search-forward....... | 
| 4c2e0 |  20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20    22 5c 5c 28 3f 3a 22 20 6d 61 72 6b 64 6f 77 6e  | ........(concat."\\(?:".markdown | 
| 4c300 |  2d 72 65 67 65 78 2d 6c 69 6e 6b 2d 69 6e 6c 69    6e 65 20 22 5c 5c 7c 22 0a 20 20 20 20 20 20 20  | -regex-link-inline."\\|"........ | 
| 4c320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d    61 72 6b 64 6f 77 6e 2d 72 65 67 65 78 2d 61 6e  | ...............markdown-regex-an | 
| 4c340 |  67 6c 65 2d 75 72 69 20 22 5c 5c 29 22 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64  | gle-uri."\\)")...............end | 
| 4c360 |  20 74 29 0a 20 20 20 20 20 20 20 20 28 73 65 74    71 20 6d 69 6d 65 20 6e 69 6c 29 0a 20 20 20 20  | .t).........(setq.mime.nil)..... | 
| 4c380 |  20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28    28 6c 69 6e 6b 2d 61 74 2d 70 74 20 28 6d 61 72  | ....(when-let*.((link-at-pt.(mar | 
| 4c3a0 |  6b 64 6f 77 6e 2d 6c 69 6e 6b 2d 61 74 2d 70 6f    73 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20  | kdown-link-at-pos.(point)))..... | 
| 4c3c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 28 67 70 74 65 6c 2d 2d 6c 69 6e 6b 2d 73 74  | ................((gptel--link-st | 
| 4c3e0 |  61 6e 64 61 6c 6f 6e 65 2d 70 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | andalone-p...................... | 
| 4c400 |  20 28 63 61 72 20 6c 69 6e 6b 2d 61 74 2d 70 74    29 20 28 63 61 64 72 20 6c 69 6e 6b 2d 61 74 2d  | .(car.link-at-pt).(cadr.link-at- | 
| 4c420 |  70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 61 74 68 20  | pt))).....................(path. | 
| 4c440 |  28 6e 74 68 20 33 20 6c 69 6e 6b 2d 61 74 2d 70    74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | (nth.3.link-at-pt))............. | 
| 4c460 |  20 20 20 20 20 20 20 20 28 70 61 74 68 20 28 73    74 72 69 6e 67 2d 72 65 6d 6f 76 65 2d 70 72 65  | ........(path.(string-remove-pre | 
| 4c480 |  66 69 78 20 22 66 69 6c 65 3a 2f 2f 22 20 70 61    74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | fix."file://".path)))........... | 
| 4c4a0 |  28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20    20 28 28 73 65 71 2d 73 6f 6d 65 20 28 6c 61 6d  | (cond............((seq-some.(lam | 
| 4c4c0 |  62 64 61 20 28 70 29 20 28 73 74 72 69 6e 67 2d    70 72 65 66 69 78 2d 70 20 70 20 70 61 74 68 29  | bda.(p).(string-prefix-p.p.path) | 
| 4c4e0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 27 28 22 68 74 74 70 73  | ).......................'("https | 
| 4c500 |  3a 22 20 22 68 74 74 70 3a 22 20 22 66 74 70 3a    22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | :"."http:"."ftp:"))............. | 
| 4c520 |  3b 3b 20 43 6f 6c 6c 65 63 74 20 74 65 78 74 20    75 70 20 74 6f 20 74 68 69 73 20 69 6d 61 67 65  | ;;.Collect.text.up.to.this.image | 
| 4c540 |  2c 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74 68    69 73 20 69 6d 61 67 65 20 75 72 6c 0a 20 20 20  | ,.and.collect.this.image.url.... | 
| 4c560 |  20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28    67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70  | .........(when.(gptel--model-cap | 
| 4c580 |  61 62 6c 65 2d 70 20 27 75 72 6c 29 20 3b 20 46    49 58 4d 45 20 54 68 69 73 20 69 73 20 6e 6f 74  | able-p.'url).;.FIXME.This.is.not | 
| 4c5a0 |  20 61 20 67 6f 6f 64 20 70 6c 61 63 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .a.good.place................... | 
| 4c5c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 20 74 6f 20 63 68 65 63 6b  | ......................;.to.check | 
| 4c5e0 |  20 66 6f 72 20 75 72 6c 20 63 61 70 61 62 69 6c    69 74 79 21 0a 20 20 20 20 20 20 20 20 20 20 20  | .for.url.capability!............ | 
| 4c600 |  20 20 20 28 6c 65 74 20 28 28 74 65 78 74 20 28    62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67  | ...(let.((text.(buffer-substring | 
| 4c620 |  2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 66    72 6f 6d 2d 70 74 20 28 63 61 72 20 6c 69 6e 6b  | -no-properties.from-pt.(car.link | 
| 4c640 |  2d 61 74 2d 70 74 29 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65  | -at-pt)))).................(unle | 
| 4c660 |  73 73 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e 6b    2d 70 20 74 65 78 74 29 20 28 70 75 73 68 20 28  | ss.(string-blank-p.text).(push.( | 
| 4c680 |  6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 29    20 70 61 72 74 73 29 29 0a 20 20 20 20 20 20 20  | list.:text.text).parts))........ | 
| 4c6a0 |  20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28    6c 69 73 74 20 3a 75 72 6c 20 70 61 74 68 20 3a  | .........(push.(list.:url.path.: | 
| 4c6c0 |  6d 69 6d 65 20 6d 69 6d 65 29 20 70 61 72 74 73    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | mime.mime).parts)............... | 
| 4c6e0 |  20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70 74 20    28 63 61 64 72 20 6c 69 6e 6b 2d 61 74 2d 70 74  | ..(setq.from-pt.(cadr.link-at-pt | 
| 4c700 |  29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 28 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65  | )))))............((file-readable | 
| 4c720 |  2d 70 20 70 61 74 68 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e 6f  | -p.path).............(if.(or.(no | 
| 4c740 |  74 20 28 67 70 74 65 6c 2d 2d 66 69 6c 65 2d 62    69 6e 61 72 79 2d 70 20 70 61 74 68 29 29 0a 20  | t.(gptel--file-binary-p.path)).. | 
| 4c760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 61 6e 64 20 28 73 65 74 71 20 6d 69  | ...................(and.(setq.mi | 
| 4c780 |  6d 65 20 28 6d 61 69 6c 63 61 70 2d 66 69 6c 65    2d 6e 61 6d 65 2d 74 6f 2d 6d 69 6d 65 2d 74 79  | me.(mailcap-file-name-to-mime-ty | 
| 4c7a0 |  70 65 20 70 61 74 68 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | pe.path))....................... | 
| 4c7c0 |  20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c    2d 6d 69 6d 65 2d 63 61 70 61 62 6c 65 2d 70 20  | ...(gptel--model-mime-capable-p. | 
| 4c7e0 |  6d 69 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3b 3b 20 43 6f 6c 6c 65  | mime))).................;;.Colle | 
| 4c800 |  63 74 20 74 65 78 74 20 75 70 20 74 6f 20 74 68    69 73 20 69 6d 61 67 65 2c 20 61 6e 64 20 63 6f  | ct.text.up.to.this.image,.and.co | 
| 4c820 |  6c 6c 65 63 74 20 74 68 69 73 20 69 6d 61 67 65    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | llect.this.image................ | 
| 4c840 |  20 28 6c 65 74 20 28 28 74 65 78 74 20 28 62 75    66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e  | .(let.((text.(buffer-substring-n | 
| 4c860 |  6f 2d 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f    6d 2d 70 74 20 28 63 61 72 20 6c 69 6e 6b 2d 61  | o-properties.from-pt.(car.link-a | 
| 4c880 |  74 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65  | t-pt))))...................(unle | 
| 4c8a0 |  73 73 20 28 73 74 72 69 6e 67 2d 62 6c 61 6e 6b    2d 70 20 74 65 78 74 29 20 28 70 75 73 68 20 28  | ss.(string-blank-p.text).(push.( | 
| 4c8c0 |  6c 69 73 74 20 3a 74 65 78 74 20 74 65 78 74 29    20 70 61 72 74 73 29 29 0a 20 20 20 20 20 20 20  | list.:text.text).parts))........ | 
| 4c8e0 |  20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68    20 28 69 66 20 6d 69 6d 65 20 28 6c 69 73 74 20  | ...........(push.(if.mime.(list. | 
| 4c900 |  3a 6d 65 64 69 61 20 70 61 74 68 20 3a 6d 69 6d    65 20 6d 69 6d 65 29 20 28 6c 69 73 74 20 3a 74  | :media.path.:mime.mime).(list.:t | 
| 4c920 |  65 78 74 66 69 6c 65 20 70 61 74 68 29 29 20 70    61 72 74 73 29 0a 20 20 20 20 20 20 20 20 20 20  | extfile.path)).parts)........... | 
| 4c940 |  20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 72    6f 6d 2d 70 74 20 28 63 61 64 72 20 6c 69 6e 6b  | ........(setq.from-pt.(cadr.link | 
| 4c960 |  2d 61 74 2d 70 74 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65  | -at-pt)))...............(message | 
| 4c980 |  20 22 49 67 6e 6f 72 69 6e 67 20 75 6e 73 75 70    70 6f 72 74 65 64 20 62 69 6e 61 72 79 20 66 69  | ."Ignoring.unsupported.binary.fi | 
| 4c9a0 |  6c 65 20 5c 22 25 73 5c 22 2e 22 20 70 61 74 68    29 29 29 29 29 29 29 0a 20 20 20 20 28 75 6e 6c  | le.\"%s\".".path))))))).....(unl | 
| 4c9c0 |  65 73 73 20 28 3d 20 66 72 6f 6d 2d 70 74 20 65    6e 64 29 0a 20 20 20 20 20 20 28 70 75 73 68 20  | ess.(=.from-pt.end).......(push. | 
| 4c9e0 |  28 6c 69 73 74 20 3a 74 65 78 74 20 28 62 75 66    66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f  | (list.:text.(buffer-substring-no | 
| 4ca00 |  2d 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d    2d 70 74 20 65 6e 64 29 29 20 70 61 72 74 73 29  | -properties.from-pt.end)).parts) | 
| 4ca20 |  29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20    70 61 72 74 73 29 29 29 0a 0a 28 63 6c 2d 64 65  | ).....(nreverse.parts)))..(cl-de | 
| 4ca40 |  66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d    77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d 70 74  | fgeneric.gptel--wrap-user-prompt | 
| 4ca60 |  20 28 62 61 63 6b 65 6e 64 20 5f 70 72 6f 6d 70    74 73 29 0a 20 20 22 57 72 61 70 20 74 68 65 20  | .(backend._prompts)..."Wrap.the. | 
| 4ca80 |  6c 61 73 74 20 70 72 6f 6d 70 74 20 69 6e 20 50    52 4f 4d 50 54 53 20 77 69 74 68 20 67 70 74 65  | last.prompt.in.PROMPTS.with.gpte | 
| 4caa0 |  6c 27 73 20 63 6f 6e 74 65 78 74 2e 0a 0a 50 52    4f 4d 50 54 53 20 69 73 20 61 20 73 74 72 75 63  | l's.context...PROMPTS.is.a.struc | 
| 4cac0 |  74 75 72 65 20 61 73 20 72 65 74 75 72 6e 65 64    20 62 79 20 60 67 70 74 65 6c 2d 2d 70 61 72 73  | ture.as.returned.by.`gptel--pars | 
| 4cae0 |  65 2d 62 75 66 66 65 72 27 2e 0a 54 79 70 69 63    61 6c 6c 79 20 74 68 69 73 20 69 73 20 61 20 6c  | e-buffer'..Typically.this.is.a.l | 
| 4cb00 |  69 73 74 20 6f 66 20 70 6c 69 73 74 73 2e 0a 0a    42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 67  | ist.of.plists...BACKEND.is.the.g | 
| 4cb20 |  70 74 65 6c 20 62 61 63 6b 65 6e 64 20 69 6e 20    75 73 65 2e 22 0a 20 20 28 64 69 73 70 6c 61 79  | ptel.backend.in.use."...(display | 
| 4cb40 |  2d 77 61 72 6e 69 6e 67 0a 20 20 20 27 28 67 70    74 65 6c 20 63 6f 6e 74 65 78 74 29 0a 20 20 20  | -warning....'(gptel.context).... | 
| 4cb60 |  28 66 6f 72 6d 61 74 20 22 43 6f 6e 74 65 78 74    20 73 75 70 70 6f 72 74 20 6e 6f 74 20 69 6d 70  | (format."Context.support.not.imp | 
| 4cb80 |  6c 65 6d 65 6e 74 65 64 20 66 6f 72 20 62 61 63    6b 65 6e 64 20 25 73 2c 20 69 67 6e 6f 72 69 6e  | lemented.for.backend.%s,.ignorin | 
| 4cba0 |  67 20 63 6f 6e 74 65 78 74 22 0a 20 20 20 20 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63  | g.context"............(gptel-bac | 
| 4cbc0 |  6b 65 6e 64 2d 6e 61 6d 65 20 62 61 63 6b 65 6e    64 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65  | kend-name.backend))))..(cl-defge | 
| 4cbe0 |  6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 72 65 71    75 65 73 74 2d 64 61 74 61 20 28 62 61 63 6b 65  | neric.gptel--request-data.(backe | 
| 4cc00 |  6e 64 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 47    65 6e 65 72 61 74 65 20 61 20 70 6c 69 73 74 20  | nd.prompts)..."Generate.a.plist. | 
| 4cc20 |  6f 66 20 61 6c 6c 20 64 61 74 61 20 66 6f 72 20    61 6e 20 4c 4c 4d 20 71 75 65 72 79 2e 0a 0a 42  | of.all.data.for.an.LLM.query...B | 
| 4cc40 |  41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 4c 4c    4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65  | ACKEND.is.the.LLM.backend.in.use | 
| 4cc60 |  2e 0a 0a 50 52 4f 4d 50 54 53 20 69 73 20 74 68    65 20 70 6c 69 73 74 20 6f 66 20 70 72 65 76 69  | ...PROMPTS.is.the.plist.of.previ | 
| 4cc80 |  6f 75 73 20 75 73 65 72 20 71 75 65 72 69 65 73    20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73  | ous.user.queries.and.LLM.respons | 
| 4cca0 |  65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70    74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73  | es.")..(defun.gptel--url-get-res | 
| 4ccc0 |  70 6f 6e 73 65 20 28 66 73 6d 29 0a 20 20 22 46    65 74 63 68 20 72 65 73 70 6f 6e 73 65 20 74 6f  | ponse.(fsm)..."Fetch.response.to | 
| 4cce0 |  20 70 72 6f 6d 70 74 20 69 6e 20 73 74 61 74 65    20 46 53 4d 20 66 72 6f 6d 20 74 68 65 20 4c 4c  | .prompt.in.state.FSM.from.the.LL | 
| 4cd00 |  4d 2e 0a 0a 46 53 4d 20 69 73 20 74 68 65 20 73    74 61 74 65 20 6d 61 63 68 69 6e 65 20 64 72 69  | M...FSM.is.the.state.machine.dri | 
| 4cd20 |  76 69 6e 67 20 74 68 69 73 20 72 65 71 75 65 73    74 2e 20 20 49 74 73 20 49 4e 46 4f 20 73 6c 6f  | ving.this.request...Its.INFO.slo | 
| 4cd40 |  74 0a 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 64    61 74 61 20 72 65 71 75 69 72 65 64 20 66 6f 72  | t.contains.the.data.required.for | 
| 4cd60 |  20 73 65 74 74 69 6e 67 20 75 70 20 74 68 65 20    72 65 71 75 65 73 74 2e 20 20 49 4e 46 4f 20 69  | .setting.up.the.request...INFO.i | 
| 4cd80 |  73 20 61 0a 70 6c 69 73 74 20 77 69 74 68 20 74    68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79  | s.a.plist.with.the.following.key | 
| 4cda0 |  73 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 73 3a    0a 2d 20 3a 64 61 74 61 20 20 20 20 20 28 74 68  | s,.among.others:.-.:data.....(th | 
| 4cdc0 |  65 20 64 61 74 61 20 62 65 69 6e 67 20 73 65 6e    74 29 0a 2d 20 3a 62 75 66 66 65 72 20 20 20 28  | e.data.being.sent).-.:buffer...( | 
| 4cde0 |  74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72    29 0a 2d 20 3a 70 6f 73 69 74 69 6f 6e 20 28 6d  | the.gptel.buffer).-.:position.(m | 
| 4ce00 |  61 72 6b 65 72 20 61 74 20 77 68 69 63 68 20 74    6f 20 69 6e 73 65 72 74 20 74 68 65 20 72 65 73  | arker.at.which.to.insert.the.res | 
| 4ce20 |  70 6f 6e 73 65 29 2e 0a 2d 20 3a 63 61 6c 6c 62    61 63 6b 20 28 6f 70 74 69 6f 6e 61 6c 2c 20 74  | ponse)..-.:callback.(optional,.t | 
| 4ce40 |  68 65 20 72 65 71 75 65 73 74 20 63 61 6c 6c 62    61 63 6b 29 0a 0a 43 61 6c 6c 20 43 41 4c 4c 42  | he.request.callback)..Call.CALLB | 
| 4ce60 |  41 43 4b 20 77 69 74 68 20 74 68 65 20 72 65 73    70 6f 6e 73 65 20 61 6e 64 20 49 4e 46 4f 20 61  | ACK.with.the.response.and.INFO.a | 
| 4ce80 |  66 74 65 72 77 61 72 64 73 2e 20 20 49 66 20 6f    6d 69 74 74 65 64 0a 74 68 65 20 72 65 73 70 6f  | fterwards...If.omitted.the.respo | 
| 4cea0 |  6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 20    69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  | nse.is.inserted.into.the.current | 
| 4cec0 |  20 62 75 66 66 65 72 20 61 66 74 65 72 20 70 6f    69 6e 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28  | .buffer.after.point."...(let*.(( | 
| 4cee0 |  69 6e 68 69 62 69 74 2d 6d 65 73 73 61 67 65 20    74 29 0a 20 20 20 20 20 20 20 20 20 28 6d 65 73  | inhibit-message.t)..........(mes | 
| 4cf00 |  73 61 67 65 2d 6c 6f 67 2d 6d 61 78 20 6e 69 6c    29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d  | sage-log-max.nil)..........(url- | 
| 4cf20 |  72 65 71 75 65 73 74 2d 6d 65 74 68 6f 64 20 22    50 4f 53 54 22 29 0a 20 20 20 20 20 20 20 20 20  | request-method."POST").......... | 
| 4cf40 |  28 75 72 6c 2d 72 65 71 75 65 73 74 2d 65 78 74    72 61 2d 68 65 61 64 65 72 73 0a 20 20 20 20 20  | (url-request-extra-headers...... | 
| 4cf60 |  20 20 20 20 20 28 61 70 70 65 6e 64 20 27 28 28    22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 2e  | .....(append.'(("Content-Type".. | 
| 4cf80 |  20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73    6f 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20  | ."application/json"))........... | 
| 4cfa0 |  20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65    74 2a 20 28 28 68 65 61 64 65 72 20 28 67 70 74  | ........(when-let*.((header.(gpt | 
| 4cfc0 |  65 6c 2d 62 61 63 6b 65 6e 64 2d 68 65 61 64 65    72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29  | el-backend-header.gptel-backend) | 
| 4cfe0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63  | )).....................(if.(func | 
| 4d000 |  74 69 6f 6e 70 20 68 65 61 64 65 72 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tionp.header)................... | 
| 4d020 |  20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68    65 61 64 65 72 29 20 68 65 61 64 65 72 29 29 29  | ......(funcall.header).header))) | 
| 4d040 |  29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f    20 28 67 70 74 65 6c 2d 66 73 6d 2d 69 6e 66 6f  | )..........(info.(gptel-fsm-info | 
| 4d060 |  20 66 73 6d 29 29 0a 20 20 20 20 20 20 20 20 20    28 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d  | .fsm))..........(backend.(plist- | 
| 4d080 |  67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e    64 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 61  | get.info.:backend))..........(ca | 
| 4d0a0 |  6c 6c 62 61 63 6b 20 28 6f 72 20 28 70 6c 69 73    74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 61 6c 6c  | llback.(or.(plist-get.info.:call | 
| 4d0c0 |  62 61 63 6b 29 20 3b 69 66 20 6e 6f 74 20 74 68    65 20 66 69 72 73 74 20 72 75 6e 0a 20 20 20 20  | back).;if.not.the.first.run..... | 
| 4d0e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 23 27 67 70 74 65 6c 2d 2d 69 6e 73 65  | ...................#'gptel--inse | 
| 4d100 |  72 74 2d 72 65 73 70 6f 6e 73 65 29 29 20 3b 64    65 66 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 0a  | rt-response)).;default.callback. | 
| 4d120 |  20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65    71 75 65 73 74 2d 64 61 74 61 0a 20 20 20 20 20  | .........(url-request-data...... | 
| 4d140 |  20 20 20 20 20 28 65 6e 63 6f 64 65 2d 63 6f 64    69 6e 67 2d 73 74 72 69 6e 67 0a 20 20 20 20 20  | .....(encode-coding-string...... | 
| 4d160 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73    6f 6e 2d 65 6e 63 6f 64 65 20 28 70 6c 69 73 74  | ......(gptel--json-encode.(plist | 
| 4d180 |  2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 27 75 74  | -get.info.:data))............'ut | 
| 4d1a0 |  66 2d 38 29 29 29 0a 20 20 20 20 28 77 68 65 6e    20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62  | f-8))).....(when.(with-current-b | 
| 4d1c0 |  75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74    20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20  | uffer.(plist-get.info.:buffer).. | 
| 4d1e0 |  20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20    28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20  | ...........(and.(derived-mode-p. | 
| 4d200 |  27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65  | 'org-mode)..................gpte | 
| 4d220 |  6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65    73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 28  | l-org-convert-response)).......( | 
| 4d240 |  70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a    74 72 61 6e 73 66 6f 72 6d 65 72 20 23 27 67 70  | plist-put.info.:transformer.#'gp | 
| 4d260 |  74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d 6d 61 72    6b 64 6f 77 6e 2d 3e 6f 72 67 29 29 0a 20 20 20  | tel--convert-markdown->org)).... | 
| 4d280 |  20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f    20 3a 63 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62  | .(plist-put.info.:callback.callb | 
| 4d2a0 |  61 63 6b 29 0a 20 20 20 20 28 77 68 65 6e 20 67    70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 20  | ack).....(when.gptel-log-level.. | 
| 4d2c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3b 6c 6f    67 67 69 6e 67 0a 20 20 20 20 20 20 28 77 68 65  | .............;logging.......(whe | 
| 4d2e0 |  6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f 67 2d    6c 65 76 65 6c 20 27 64 65 62 75 67 29 0a 20 20  | n.(eq.gptel-log-level.'debug)... | 
| 4d300 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f    67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65  | ......(gptel--log.(gptel--json-e | 
| 4d320 |  6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63  | ncode......................(mapc | 
| 4d340 |  61 72 20 28 6c 61 6d 62 64 61 20 28 70 61 69 72    29 20 28 63 6f 6e 73 20 28 69 6e 74 65 72 6e 20  | ar.(lambda.(pair).(cons.(intern. | 
| 4d360 |  28 63 61 72 20 70 61 69 72 29 29 20 28 63 64 72    20 70 61 69 72 29 29 29 0a 20 20 20 20 20 20 20  | (car.pair)).(cdr.pair)))........ | 
| 4d380 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 75 72 6c 2d 72 65 71 75 65 73  | ......................url-reques | 
| 4d3a0 |  74 2d 65 78 74 72 61 2d 68 65 61 64 65 72 73 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-extra-headers))............... | 
| 4d3c0 |  20 20 20 20 20 20 22 72 65 71 75 65 73 74 20 68    65 61 64 65 72 73 22 29 29 0a 20 20 20 20 20 20  | ......"request.headers"))....... | 
| 4d3e0 |  28 67 70 74 65 6c 2d 2d 6c 6f 67 20 75 72 6c 2d    72 65 71 75 65 73 74 2d 64 61 74 61 20 22 72 65  | (gptel--log.url-request-data."re | 
| 4d400 |  71 75 65 73 74 20 62 6f 64 79 22 29 29 0a 20 20    20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75  | quest.body")).....(let.((proc-bu | 
| 4d420 |  66 0a 20 20 20 20 20 20 20 20 20 20 20 28 75 72    6c 2d 72 65 74 72 69 65 76 65 20 28 6c 65 74 20  | f............(url-retrieve.(let. | 
| 4d440 |  28 28 62 61 63 6b 65 6e 64 2d 75 72 6c 20 28 67    70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 75 72 6c  | ((backend-url.(gptel-backend-url | 
| 4d460 |  20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .gptel-backend)))............... | 
| 4d480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66    20 28 66 75 6e 63 74 69 6f 6e 70 20 62 61 63 6b  | .............(if.(functionp.back | 
| 4d4a0 |  65 6e 64 2d 75 72 6c 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | end-url)........................ | 
| 4d4c0 |  20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75    72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c  | ........(with-current-buffer.(pl | 
| 4d4e0 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75    66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20  | ist-get.info.:buffer)........... | 
| 4d500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20  | .......................(funcall. | 
| 4d520 |  62 61 63 6b 65 6e 64 2d 75 72 6c 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | backend-url))................... | 
| 4d540 |  20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65    6e 64 2d 75 72 6c 29 29 0a 20 20 20 20 20 20 20  | ...........backend-url))........ | 
| 4d560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20 20  | ..................(lambda.(_)... | 
| 4d580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 73 65 74 2d 62 75  | .........................(set-bu | 
| 4d5a0 |  66 66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 74    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ffer-multibyte.t)............... | 
| 4d5c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65    74 2d 62 75 66 66 65 72 2d 66 69 6c 65 2d 63 6f  | .............(set-buffer-file-co | 
| 4d5e0 |  64 69 6e 67 2d 73 79 73 74 65 6d 20 27 75 74 66    2d 38 2d 75 6e 69 78 29 0a 20 20 20 20 20 20 20  | ding-system.'utf-8-unix)........ | 
| 4d600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28  | ....................(pcase-let.( | 
| 4d620 |  28 60 28 2c 72 65 73 70 6f 6e 73 65 20 2c 68 74    74 70 2d 73 74 61 74 75 73 20 2c 68 74 74 70 2d  | (`(,response.,http-status.,http- | 
| 4d640 |  6d 73 67 20 2c 65 72 72 6f 72 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | msg.,error)..................... | 
| 4d660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 67 70 74 65 6c 2d 2d 75 72 6c 2d  | ....................(gptel--url- | 
| 4d680 |  70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 62    61 63 6b 65 6e 64 20 69 6e 66 6f 29 29 0a 20 20  | parse-response.backend.info))... | 
| 4d6a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 4d6c0 |  20 20 20 20 20 28 62 75 66 20 28 63 75 72 72 65    6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20  | .....(buf.(current-buffer))).... | 
| 4d6e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | ..........................(plist | 
| 4d700 |  2d 70 75 74 20 69 6e 66 6f 20 3a 68 74 74 70 2d    73 74 61 74 75 73 20 68 74 74 70 2d 73 74 61 74  | -put.info.:http-status.http-stat | 
| 4d720 |  75 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | us)............................. | 
| 4d740 |  20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f    20 3a 73 74 61 74 75 73 20 68 74 74 70 2d 6d 73  | .(plist-put.info.:status.http-ms | 
| 4d760 |  67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | g).............................. | 
| 4d780 |  28 67 70 74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e    73 69 74 69 6f 6e 20 66 73 6d 29 20 3b 57 41 49  | (gptel--fsm-transition.fsm).;WAI | 
| 4d7a0 |  54 20 2d 3e 20 54 59 50 45 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | T.->.TYPE....................... | 
| 4d7c0 |  20 20 20 20 20 20 20 28 77 68 65 6e 20 65 72 72    6f 72 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e  | .......(when.error.(plist-put.in | 
| 4d7e0 |  66 6f 20 3a 65 72 72 6f 72 20 65 72 72 6f 72 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fo.:error.error))............... | 
| 4d800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    77 68 65 6e 20 72 65 73 70 6f 6e 73 65 20 3b 4c  | ...............(when.response.;L | 
| 4d820 |  6f 6f 6b 20 66 6f 72 20 61 20 72 65 61 73 6f 6e    69 6e 67 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20  | ook.for.a.reasoning.block....... | 
| 4d840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74  | .........................(if.(st | 
| 4d860 |  72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 20    2a 3c 74 68 69 6e 6b 3e 5c 6e 22 20 72 65 73 70  | ring-match-p."^.*<think>\n".resp | 
| 4d880 |  6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | onse)........................... | 
| 4d8a0 |  20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c    65 74 2a 20 28 28 69 64 78 20 28 73 74 72 69 6e  | .........(when-let*.((idx.(strin | 
| 4d8c0 |  67 2d 73 65 61 72 63 68 20 22 3c 2f 74 68 69 6e    6b 3e 5c 6e 22 20 72 65 73 70 6f 6e 73 65 29 29  | g-search."</think>\n".response)) | 
| 4d8e0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )............................... | 
| 4d900 |  20 20 20 20 20 20 20 28 77 69 74 68 2d 64 65 6d    6f 74 65 64 2d 65 72 72 6f 72 73 20 22 67 70 74  | .......(with-demoted-errors."gpt | 
| 4d920 |  65 6c 20 63 61 6c 6c 62 61 63 6b 20 65 72 72 6f    72 3a 20 25 53 22 0a 20 20 20 20 20 20 20 20 20  | el.callback.error:.%S".......... | 
| 4d940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66  | ..............................(f | 
| 4d960 |  75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | uncall.callback................. | 
| 4d980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 4d9a0 |  28 63 6f 6e 73 20 27 72 65 61 73 6f 6e 69 6e 67    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (cons.'reasoning................ | 
| 4d9c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 4d9e0 |  20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e    67 20 72 65 73 70 6f 6e 73 65 20 6e 69 6c 20 28  | .......(substring.response.nil.( | 
| 4da00 |  2b 20 69 64 78 20 38 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | +.idx.8)))...................... | 
| 4da20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 29  | ...........................info) | 
| 4da40 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )............................... | 
| 4da60 |  20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73    70 6f 6e 73 65 20 28 73 74 72 69 6e 67 2d 74 72  | .......(setq.response.(string-tr | 
| 4da80 |  69 6d 2d 6c 65 66 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | im-left......................... | 
| 4daa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75  | .............................(su | 
| 4dac0 |  62 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65    20 28 2b 20 69 64 78 20 38 29 29 29 29 29 0a 20  | bstring.response.(+.idx.8))))).. | 
| 4dae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 4db00 |  28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 61    73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d 67 65  | (when-let*.((reasoning.(plist-ge | 
| 4db20 |  74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e    67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | t.info.:reasoning))............. | 
| 4db40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 4db60 |  20 28 28 73 74 72 69 6e 67 70 20 72 65 61 73 6f    6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20  | .((stringp.reasoning)))......... | 
| 4db80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63  | ...........................(func | 
| 4dba0 |  61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 28 63 6f    6e 73 20 27 72 65 61 73 6f 6e 69 6e 67 20 72 65  | all.callback.(cons.'reasoning.re | 
| 4dbc0 |  61 73 6f 6e 69 6e 67 29 20 69 6e 66 6f 29 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | asoning).info))))............... | 
| 4dbe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    77 68 65 6e 20 28 6f 72 20 72 65 73 70 6f 6e 73  | ...............(when.(or.respons | 
| 4dc00 |  65 20 28 6e 6f 74 20 28 6d 65 6d 62 65 72 20 68    74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30  | e.(not.(member.http-status.'("20 | 
| 4dc20 |  30 22 20 22 31 30 30 22 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | 0"."100")))).................... | 
| 4dc40 |  20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74    68 2d 64 65 6d 6f 74 65 64 2d 65 72 72 6f 72 73  | ............(with-demoted-errors | 
| 4dc60 |  20 22 67 70 74 65 6c 20 63 61 6c 6c 62 61 63 6b    20 65 72 72 6f 72 3a 20 25 53 22 0a 20 20 20 20  | ."gptel.callback.error:.%S"..... | 
| 4dc80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75  | .............................(fu | 
| 4dca0 |  6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 72    65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 29 29 0a  | ncall.callback.response.info))). | 
| 4dcc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70  | .............................(gp | 
| 4dce0 |  74 65 6c 2d 2d 66 73 6d 2d 74 72 61 6e 73 69 74    69 6f 6e 20 66 73 6d 29 20 3b 54 59 50 45 20 2d  | tel--fsm-transition.fsm).;TYPE.- | 
| 4dd00 |  3e 20 6e 65 78 74 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | >.next.......................... | 
| 4dd20 |  20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74    2d 67 65 74 20 62 75 66 20 67 70 74 65 6c 2d 2d  | ....(setf.(alist-get.buf.gptel-- | 
| 4dd40 |  72 65 71 75 65 73 74 2d 61 6c 69 73 74 20 6e 69    6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a  | request-alist.nil.'remove).nil). | 
| 4dd60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69  | .............................(ki | 
| 4dd80 |  6c 6c 2d 62 75 66 66 65 72 20 62 75 66 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ll-buffer.buf)))................ | 
| 4dda0 |  20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 20    6e 69 6c 29 29 29 0a 20 20 20 20 20 20 3b 3b 20  | ..........nil.t.nil))).......;;. | 
| 4ddc0 |  54 4f 44 4f 3a 20 41 64 64 20 74 72 61 6e 73 66    6f 72 6d 65 72 20 68 65 72 65 2e 0a 20 20 20 20  | TODO:.Add.transformer.here...... | 
| 4dde0 |  20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67    65 74 20 70 72 6f 63 2d 62 75 66 20 67 70 74 65  | ..(setf.(alist-get.proc-buf.gpte | 
| 4de00 |  6c 2d 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | l--request-alist).............(c | 
| 4de20 |  6f 6e 73 20 66 73 6d 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 23 27 28 6c 61 6d  | ons.fsm...................#'(lam | 
| 4de40 |  62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c  | bda.().......................(pl | 
| 4de60 |  69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 61    6c 6c 62 61 63 6b 20 23 27 69 67 6e 6f 72 65 29  | ist-put.info.:callback.#'ignore) | 
| 4de80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 65 74 20 28 6b 69 6c  | .......................(let.(kil | 
| 4dea0 |  6c 2d 62 75 66 66 65 72 2d 71 75 65 72 79 2d 66    75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 20 20 20  | l-buffer-query-functions)....... | 
| 4dec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 43 61 6e 27 74 20 73 74 6f 70 20 75  | ..................;;Can't.stop.u | 
| 4dee0 |  72 6c 2d 72 65 74 72 69 65 76 65 20 70 72 6f 63    65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | rl-retrieve.process............. | 
| 4df00 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c    6c 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75  | ............(kill-buffer.proc-bu | 
| 4df20 |  66 29 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64    65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d  | f))))))))..(cl-defgeneric.gptel- | 
| 4df40 |  2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20    28 62 61 63 6b 65 6e 64 20 72 65 73 70 6f 6e 73  | -parse-response.(backend.respons | 
| 4df60 |  65 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22    52 65 73 70 6f 6e 73 65 20 65 78 74 72 61 63 74  | e.proc-info)..."Response.extract | 
| 4df80 |  6f 72 20 66 6f 72 20 4c 4c 4d 20 72 65 71 75 65    73 74 73 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 73  | or.for.LLM.requests...BACKEND.is | 
| 4dfa0 |  20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64    20 69 6e 20 75 73 65 2e 0a 0a 52 45 53 50 4f 4e  | .the.LLM.backend.in.use...RESPON | 
| 4dfc0 |  53 45 20 69 73 20 74 68 65 20 70 61 72 73 65 64    20 4a 53 4f 4e 20 6f 66 20 74 68 65 20 72 65 73  | SE.is.the.parsed.JSON.of.the.res | 
| 4dfe0 |  70 6f 6e 73 65 2c 20 61 73 20 61 20 70 6c 69 73    74 2e 0a 0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73  | ponse,.as.a.plist...PROC-INFO.is | 
| 4e000 |  20 61 20 70 6c 69 73 74 20 77 69 74 68 20 70 72    6f 63 65 73 73 20 69 6e 66 6f 72 6d 61 74 69 6f  | .a.plist.with.process.informatio | 
| 4e020 |  6e 20 61 6e 64 20 6f 74 68 65 72 20 63 6f 6e 74    65 78 74 2e 0a 53 65 65 20 60 67 70 74 65 6c 2d  | n.and.other.context..See.`gptel- | 
| 4e040 |  63 75 72 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e    73 65 27 20 66 6f 72 20 69 74 73 20 63 6f 6e 74  | curl--get-response'.for.its.cont | 
| 4e060 |  65 6e 74 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 2d 75 72 6c 2d 70 61 72 73 65  | ents.")..(defun.gptel--url-parse | 
| 4e080 |  2d 72 65 73 70 6f 6e 73 65 20 28 62 61 63 6b 65    6e 64 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20  | -response.(backend.proc-info)... | 
| 4e0a0 |  22 50 61 72 73 65 20 72 65 73 70 6f 6e 73 65 20    66 72 6f 6d 20 42 41 43 4b 45 4e 44 20 77 69 74  | "Parse.response.from.BACKEND.wit | 
| 4e0c0 |  68 20 50 52 4f 43 2d 49 4e 46 4f 2e 22 0a 20 20    28 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d  | h.PROC-INFO."...(when.gptel-log- | 
| 4e0e0 |  6c 65 76 65 6c 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 6c 6f 67 67 69 6e 67 0a 20  | level.................;logging.. | 
| 4e100 |  20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69    6f 6e 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63  | ...(save-excursion.......(goto-c | 
| 4e120 |  68 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64    2d 6f 66 2d 68 65 61 64 65 72 73 29 0a 20 20 20  | har.url-http-end-of-headers).... | 
| 4e140 |  20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74    65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65  | ...(when.(eq.gptel-log-level.'de | 
| 4e160 |  62 75 67 29 0a 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d  | bug).........(gptel--log.(gptel- | 
| 4e180 |  2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 62 75    66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e  | -json-encode.(buffer-substring-n | 
| 4e1a0 |  6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f    69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 29  | o-properties.(point-min).(point) | 
| 4e1c0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 22 72 65 73 70 6f 6e 73 65  | ))....................."response | 
| 4e1e0 |  20 68 65 61 64 65 72 73 22 29 29 0a 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 62  | .headers")).......(gptel--log.(b | 
| 4e200 |  75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d    6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70  | uffer-substring-no-properties.(p | 
| 4e220 |  6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | oint).(point-max)).............. | 
| 4e240 |  20 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 62    6f 64 79 22 29 29 29 0a 20 20 28 69 66 2d 6c 65  | ....."response.body")))...(if-le | 
| 4e260 |  74 2a 20 28 28 68 74 74 70 2d 6d 73 67 20 28 73    74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66 66  | t*.((http-msg.(string-trim.(buff | 
| 4e280 |  65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69    6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73  | er-substring.(line-beginning-pos | 
| 4e2a0 |  69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ition).......................... | 
| 4e2c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e  | ............................(lin | 
| 4e2e0 |  65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  | e-end-position)))).............( | 
| 4e300 |  68 74 74 70 2d 73 74 61 74 75 73 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d  | http-status..............(save-m | 
| 4e320 |  61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73  | atch-data................(and.(s | 
| 4e340 |  74 72 69 6e 67 2d 6d 61 74 63 68 20 22 48 54 54    50 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c 28 5b 30  | tring-match."HTTP/[.0-9]+.+\\([0 | 
| 4e360 |  2d 39 5d 2b 5c 5c 29 22 20 68 74 74 70 2d 6d 73    67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | -9]+\\)".http-msg).............. | 
| 4e380 |  20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74    72 69 6e 67 20 31 20 68 74 74 70 2d 6d 73 67 29  | .......(match-string.1.http-msg) | 
| 4e3a0 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 72 65 73 70 6f 6e 73 65 20 28 70 72 6f 67 6e  | ))).............(response.(progn | 
| 4e3c0 |  20 28 67 6f 74 6f 2d 63 68 61 72 20 75 72 6c 2d    68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65 61 64  | .(goto-char.url-http-end-of-head | 
| 4e3e0 |  65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ers)............................ | 
| 4e400 |  20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73    65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20  | ..(condition-case.nil........... | 
| 4e420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a  | .......................(gptel--j | 
| 4e440 |  73 6f 6e 2d 72 65 61 64 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | son-read)....................... | 
| 4e460 |  20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20    27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72  | .........(error.'json-read-error | 
| 4e480 |  29 29 29 29 29 0a 20 20 20 20 20 20 28 63 6f 6e    64 0a 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d  | ))))).......(cond........;;.FIXM | 
| 4e4a0 |  45 20 48 61 6e 64 6c 65 20 74 68 65 20 63 61 73    65 20 77 68 65 72 65 20 48 54 54 50 20 31 30 30  | E.Handle.the.case.where.HTTP.100 | 
| 4e4c0 |  20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20    48 54 54 50 20 28 6e 6f 74 20 32 30 30 29 20 42  | .is.followed.by.HTTP.(not.200).B | 
| 4e4e0 |  55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 28    28 6f 72 20 28 6d 65 6d 71 20 75 72 6c 2d 68 74  | UG.#194........((or.(memq.url-ht | 
| 4e500 |  74 70 2d 72 65 73 70 6f 6e 73 65 2d 73 74 61 74    75 73 20 27 28 32 30 30 20 31 30 30 29 29 0a 20  | tp-response-status.'(200.100)).. | 
| 4e520 |  20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69    6e 67 2d 6d 61 74 63 68 2d 70 20 22 5c 5c 28 3f  | ...........(string-match-p."\\(? | 
| 4e540 |  3a 31 5c 5c 7c 32 5c 5c 29 30 30 20 4f 4b 22 20    68 74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20  | :1\\|2\\)00.OK".http-msg))...... | 
| 4e560 |  20 20 20 28 6c 69 73 74 20 28 61 6e 64 2d 6c 65    74 2a 20 28 28 72 65 73 70 20 28 67 70 74 65 6c  | ...(list.(and-let*.((resp.(gptel | 
| 4e580 |  2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65    20 62 61 63 6b 65 6e 64 20 72 65 73 70 6f 6e 73  | --parse-response.backend.respons | 
| 4e5a0 |  65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.proc-info))................... | 
| 4e5c0 |  20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 73 74    72 69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 72 65 73  | .......((not.(string-blank-p.res | 
| 4e5e0 |  70 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72  | p)))).................(string-tr | 
| 4e600 |  69 6d 20 72 65 73 70 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 68 74 74 70 2d 73 74 61  | im.resp))...............http-sta | 
| 4e620 |  74 75 73 20 68 74 74 70 2d 6d 73 67 29 29 0a 20    20 20 20 20 20 20 28 28 70 6c 69 73 74 2d 67 65  | tus.http-msg))........((plist-ge | 
| 4e640 |  74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 72 6f    72 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74  | t.response.:error).........(list | 
| 4e660 |  20 6e 69 6c 20 68 74 74 70 2d 73 74 61 74 75 73    20 68 74 74 70 2d 6d 73 67 20 28 70 6c 69 73 74  | .nil.http-status.http-msg.(plist | 
| 4e680 |  2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 65    72 72 6f 72 29 29 29 0a 20 20 20 20 20 20 20 28  | -get.response.:error)))........( | 
| 4e6a0 |  28 65 71 20 72 65 73 70 6f 6e 73 65 20 27 6a 73    6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 0a 20  | (eq.response.'json-read-error).. | 
| 4e6c0 |  20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c    20 68 74 74 70 2d 73 74 61 74 75 73 20 28 63 6f  | .......(list.nil.http-status.(co | 
| 4e6e0 |  6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73    67 20 22 29 20 4d 61 6c 66 6f 72 6d 65 64 20 4a  | ncat."(".http-msg.").Malformed.J | 
| 4e700 |  53 4f 4e 20 69 6e 20 72 65 73 70 6f 6e 73 65 2e    22 29 20 22 6a 73 6f 6e 2d 72 65 61 64 2d 65 72  | SON.in.response.")."json-read-er | 
| 4e720 |  72 6f 72 22 29 29 0a 20 20 20 20 20 20 20 28 74    20 28 6c 69 73 74 20 6e 69 6c 20 68 74 74 70 2d  | ror"))........(t.(list.nil.http- | 
| 4e740 |  73 74 61 74 75 73 20 28 63 6f 6e 63 61 74 20 22    28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 43  | status.(concat."(".http-msg.").C | 
| 4e760 |  6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48    54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a  | ould.not.parse.HTTP.response."). | 
| 4e780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65  | ................"Could.not.parse | 
| 4e7a0 |  20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22    29 29 29 0a 20 20 20 20 28 6c 69 73 74 20 6e 69  | .HTTP.response."))).....(list.ni | 
| 4e7c0 |  6c 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74    74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20  | l.(concat."(".http-msg.").Could. | 
| 4e7e0 |  6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72    65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20  | not.parse.HTTP.response.")...... | 
| 4e800 |  20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20    70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f  | ....."Could.not.parse.HTTP.respo | 
| 4e820 |  6e 73 65 2e 22 29 29 29 0a 0a 28 63 6c 2d 64 65    66 75 6e 20 67 70 74 65 6c 2d 2d 73 61 6e 69 74  | nse.")))..(cl-defun.gptel--sanit | 
| 4e840 |  69 7a 65 2d 6d 6f 64 65 6c 20 28 26 6b 65 79 20    28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62  | ize-model.(&key.(backend.gptel-b | 
| 4e860 |  61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ackend)......................... | 
| 4e880 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d    6f 64 65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c  | ..............(model.gptel-model | 
| 4e8a0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )............................... | 
| 4e8c0 |  20 20 20 20 20 20 20 20 28 73 68 6f 6f 73 68 20    74 29 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20  | ........(shoosh.t))..."Check.if. | 
| 4e8e0 |  4d 4f 44 45 4c 20 69 73 20 61 76 61 69 6c 61 62    6c 65 20 69 6e 20 42 41 43 4b 45 4e 44 2c 20 61  | MODEL.is.available.in.BACKEND,.a | 
| 4e900 |  64 6a 75 73 74 20 61 63 63 6f 72 64 69 6e 67 6c    79 2e 0a 0a 49 66 20 53 48 4f 4f 53 48 20 69 73  | djust.accordingly...If.SHOOSH.is | 
| 4e920 |  20 74 72 75 65 2c 20 64 6f 6e 27 74 20 69 73 73    75 65 20 61 20 77 61 72 6e 69 6e 67 2e 22 0a 20  | .true,.don't.issue.a.warning.".. | 
| 4e940 |  20 28 6c 65 74 20 28 28 61 76 61 69 6c 61 62 6c    65 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64  | .(let.((available.(gptel-backend | 
| 4e960 |  2d 6d 6f 64 65 6c 73 20 62 61 63 6b 65 6e 64 29    29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 73 74  | -models.backend))).....(when.(st | 
| 4e980 |  72 69 6e 67 70 20 6d 6f 64 65 6c 29 0a 20 20 20    20 20 20 28 75 6e 6c 65 73 73 20 73 68 6f 6f 73  | ringp.model).......(unless.shoos | 
| 4e9a0 |  68 0a 20 20 20 20 20 20 20 20 28 64 69 73 70 6c    61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 20 20  | h.........(display-warning...... | 
| 4e9c0 |  20 20 20 20 27 67 70 74 65 6c 0a 20 20 20 20 20    20 20 20 20 28 66 6f 72 6d 61 74 20 22 60 67 70  | ....'gptel..........(format."`gp | 
| 4e9e0 |  74 65 6c 2d 6d 6f 64 65 6c 27 20 65 78 70 65 63    74 73 20 61 20 73 79 6d 62 6f 6c 2c 20 66 6f 75  | tel-model'.expects.a.symbol,.fou | 
| 4ea00 |  6e 64 20 73 74 72 69 6e 67 20 5c 22 25 73 5c 22    0a 20 20 20 52 65 73 65 74 74 69 6e 67 20 60 67  | nd.string.\"%s\"....Resetting.`g | 
| 4ea20 |  70 74 65 6c 2d 6d 6f 64 65 6c 27 20 74 6f 20 25    73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ptel-model'.to.%s".............. | 
| 4ea40 |  20 20 20 20 6d 6f 64 65 6c 20 6d 6f 64 65 6c 29    29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 67  | ....model.model))).......(setq.g | 
| 4ea60 |  70 74 65 6c 2d 6d 6f 64 65 6c 20 28 67 70 74 65    6c 2d 2d 69 6e 74 65 72 6e 20 6d 6f 64 65 6c 29  | ptel-model.(gptel--intern.model) | 
| 4ea80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64    65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29  | .............model.gptel-model)) | 
| 4eaa0 |  0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6d 65    6d 62 65 72 20 6d 6f 64 65 6c 20 61 76 61 69 6c  | .....(unless.(member.model.avail | 
| 4eac0 |  61 62 6c 65 29 0a 20 20 20 20 20 20 28 6c 65 74    20 28 28 66 61 6c 6c 62 61 63 6b 20 28 63 61 72  | able).......(let.((fallback.(car | 
| 4eae0 |  20 61 76 61 69 6c 61 62 6c 65 29 29 29 0a 20 20    20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 73 68  | .available))).........(unless.sh | 
| 4eb00 |  6f 6f 73 68 0a 20 20 20 20 20 20 20 20 20 20 28    64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a  | oosh...........(display-warning. | 
| 4eb20 |  20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65    6c 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 6f  | ...........'gptel............(fo | 
| 4eb40 |  72 6d 61 74 20 28 63 6f 6e 63 61 74 20 22 50 72    65 66 65 72 72 65 64 20 60 67 70 74 65 6c 2d 6d  | rmat.(concat."Preferred.`gptel-m | 
| 4eb60 |  6f 64 65 6c 27 20 5c 22 25 73 5c 22 20 6e 6f 74    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | odel'.\"%s\".not"............... | 
| 4eb80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 75    70 70 6f 72 74 65 64 20 69 6e 20 5c 22 25 73 5c  | ............."supported.in.\"%s\ | 
| 4eba0 |  22 2c 20 75 73 69 6e 67 20 5c 22 25 73 5c 22 20    69 6e 73 74 65 61 64 22 29 0a 20 20 20 20 20 20  | ",.using.\"%s\".instead")....... | 
| 4ebc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64    65 6c 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e  | .............model.(gptel-backen | 
| 4ebe0 |  64 2d 6e 61 6d 65 20 62 61 63 6b 65 6e 64 29 20    66 61 6c 6c 62 61 63 6b 29 29 29 0a 20 20 20 20  | d-name.backend).fallback)))..... | 
| 4ec00 |  20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20    67 70 74 65 6c 2d 6d 6f 64 65 6c 20 66 61 6c 6c  | ....(setq-local.gptel-model.fall | 
| 4ec20 |  62 61 63 6b 29 29 29 29 29 0a 0a 3b 3b 3b 23 23    23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e  | back)))))..;;;###autoload.(defun | 
| 4ec40 |  20 67 70 74 65 6c 20 28 6e 61 6d 65 20 26 6f 70    74 69 6f 6e 61 6c 20 5f 20 69 6e 69 74 69 61 6c  | .gptel.(name.&optional._.initial | 
| 4ec60 |  20 69 6e 74 65 72 61 63 74 69 76 65 70 29 0a 20    20 22 53 77 69 74 63 68 20 74 6f 20 6f 72 20 73  | .interactivep)..."Switch.to.or.s | 
| 4ec80 |  74 61 72 74 20 61 20 63 68 61 74 20 73 65 73 73    69 6f 6e 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a  | tart.a.chat.session.with.NAME... | 
| 4eca0 |  41 73 6b 20 66 6f 72 20 41 50 49 2d 4b 45 59 20    69 66 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65  | Ask.for.API-KEY.if.`gptel-api-ke | 
| 4ecc0 |  79 27 20 69 73 20 75 6e 73 65 74 2e 0a 0a 49 66    20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76  | y'.is.unset...If.region.is.activ | 
| 4ece0 |  65 2c 20 75 73 65 20 69 74 20 61 73 20 74 68 65    20 49 4e 49 54 49 41 4c 20 70 72 6f 6d 70 74 2e  | e,.use.it.as.the.INITIAL.prompt. | 
| 4ed00 |  20 20 52 65 74 75 72 6e 73 20 74 68 65 0a 62 75    66 66 65 72 20 63 72 65 61 74 65 64 20 6f 72 20  | ..Returns.the.buffer.created.or. | 
| 4ed20 |  73 77 69 74 63 68 65 64 20 74 6f 2e 0a 0a 49 4e    54 45 52 41 43 54 49 56 45 50 20 69 73 20 74 20  | switched.to...INTERACTIVEP.is.t. | 
| 4ed40 |  77 68 65 6e 20 67 70 74 65 6c 20 69 73 20 63 61    6c 6c 65 64 20 69 6e 74 65 72 61 63 74 69 76 65  | when.gptel.is.called.interactive | 
| 4ed60 |  6c 79 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74    69 76 65 0a 20 20 20 28 6c 65 74 2a 20 28 28 62  | ly."...(interactive....(let*.((b | 
| 4ed80 |  61 63 6b 65 6e 64 20 28 64 65 66 61 75 6c 74 2d    76 61 6c 75 65 20 27 67 70 74 65 6c 2d 62 61 63  | ackend.(default-value.'gptel-bac | 
| 4eda0 |  6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20    20 28 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20  | kend))...........(backend-name.. | 
| 4edc0 |  20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61    74 20 22 2a 25 73 2a 22 20 28 67 70 74 65 6c 2d  | ..........(format."*%s*".(gptel- | 
| 4ede0 |  62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 62 61 63    6b 65 6e 64 29 29 29 29 0a 20 20 20 20 20 28 6c  | backend-name.backend))))......(l | 
| 4ee00 |  69 73 74 20 28 72 65 61 64 2d 62 75 66 66 65 72    0a 20 20 20 20 20 20 20 20 20 20 20 20 22 43 72  | ist.(read-buffer............."Cr | 
| 4ee20 |  65 61 74 65 20 6f 72 20 63 68 6f 6f 73 65 20 67    70 74 65 6c 20 62 75 66 66 65 72 3a 20 22 0a 20  | eate.or.choose.gptel.buffer:.".. | 
| 4ee40 |  20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65    6e 64 2d 6e 61 6d 65 20 6e 69 6c 20 20 20 20 20  | ...........backend-name.nil..... | 
| 4ee60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3b 20 44 45 46 41 55 4c 54 20 61 6e  | ....................;.DEFAULT.an | 
| 4ee80 |  64 20 52 45 51 55 49 52 45 2d 4d 41 54 43 48 0a    20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d  | d.REQUIRE-MATCH.............(lam | 
| 4eea0 |  62 64 61 20 28 62 29 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | bda.(b)......................... | 
| 4eec0 |  20 20 20 20 20 20 20 20 20 20 3b 20 50 52 45 44    49 43 41 54 45 0a 20 20 20 20 20 20 20 20 20 20  | ..........;.PREDICATE........... | 
| 4eee0 |  20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 62 75 66    66 65 72 20 63 68 65 63 6b 20 69 73 20 72 65 71  | ....;;.NOTE:.buffer.check.is.req | 
| 4ef00 |  75 69 72 65 64 20 28 23 34 35 30 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 2d  | uired.(#450)...............(and- | 
| 4ef20 |  6c 65 74 2a 20 28 28 62 75 66 20 28 67 65 74 2d    62 75 66 66 65 72 20 28 6f 72 20 28 63 61 72 2d  | let*.((buf.(get-buffer.(or.(car- | 
| 4ef40 |  73 61 66 65 20 62 29 20 62 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62  | safe.b).b)))).................(b | 
| 4ef60 |  75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75    65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 20 62 75  | uffer-local-value.'gptel-mode.bu | 
| 4ef80 |  66 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65  | f))))............(condition-case | 
| 4efa0 |  20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d  | .nil................(gptel--get- | 
| 4efc0 |  61 70 69 2d 6b 65 79 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62  | api-key.................(gptel-b | 
| 4efe0 |  61 63 6b 65 6e 64 2d 6b 65 79 20 62 61 63 6b 65    6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ackend-key.backend))............ | 
| 4f000 |  20 20 28 28 65 72 72 6f 72 20 75 73 65 72 2d 65    72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20  | ..((error.user-error)........... | 
| 4f020 |  20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d    61 70 69 2d 6b 65 79 0a 20 20 20 20 20 20 20 20  | ....(setq.gptel-api-key......... | 
| 4f040 |  20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61    64 2d 70 61 73 73 77 64 0a 20 20 20 20 20 20 20  | ............(read-passwd........ | 
| 4f060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66    6f 72 6d 61 74 20 22 25 73 20 41 50 49 20 6b 65  | ..............(format."%s.API.ke | 
| 4f080 |  79 3a 20 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d    65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | y:.".backend-name))))).......... | 
| 4f0a0 |  20 20 28 61 6e 64 20 28 75 73 65 2d 72 65 67 69    6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20  | ..(and.(use-region-p)........... | 
| 4f0c0 |  20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75    62 73 74 72 69 6e 67 20 28 72 65 67 69 6f 6e 2d  | ......(buffer-substring.(region- | 
| 4f0e0 |  62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | beginning)...................... | 
| 4f100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65    67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20  | .............(region-end)))..... | 
| 4f120 |  20 20 20 20 20 20 20 74 29 29 29 0a 20 20 28 77    69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66  | .......t)))...(with-current-buff | 
| 4f140 |  65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63    72 65 61 74 65 20 6e 61 6d 65 29 0a 20 20 20 20  | er.(get-buffer-create.name)..... | 
| 4f160 |  28 63 6f 6e 64 20 3b 53 65 74 20 6d 61 6a 6f 72    20 6d 6f 64 65 0a 20 20 20 20 20 28 28 65 71 20  | (cond.;Set.major.mode......((eq. | 
| 4f180 |  6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c    2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 29 29 0a  | major-mode.gptel-default-mode)). | 
| 4f1a0 |  20 20 20 20 20 28 28 65 71 20 67 70 74 65 6c 2d    64 65 66 61 75 6c 74 2d 6d 6f 64 65 20 27 74 65  | .....((eq.gptel-default-mode.'te | 
| 4f1c0 |  78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28    74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20  | xt-mode).......(text-mode)...... | 
| 4f1e0 |  20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f    64 65 20 31 29 29 0a 20 20 20 20 20 28 74 20 28  | .(visual-line-mode.1))......(t.( | 
| 4f200 |  66 75 6e 63 61 6c 6c 20 67 70 74 65 6c 2d 64 65    66 61 75 6c 74 2d 6d 6f 64 65 29 29 29 0a 20 20  | funcall.gptel-default-mode)))... | 
| 4f220 |  20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69    7a 65 2d 6d 6f 64 65 6c 20 3a 62 61 63 6b 65 6e  | ..(gptel--sanitize-model.:backen | 
| 4f240 |  64 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65    20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29  | d.(default-value.'gptel-backend) | 
| 4f260 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64  | ............................:mod | 
| 4f280 |  65 6c 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75    65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a  | el.(default-value.'gptel-model). | 
| 4f2a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3a 73 68 6f 6f  | ...........................:shoo | 
| 4f2c0 |  73 68 20 6e 69 6c 29 0a 20 20 20 20 28 75 6e 6c    65 73 73 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28  | sh.nil).....(unless.gptel-mode.( | 
| 4f2e0 |  67 70 74 65 6c 2d 6d 6f 64 65 20 31 29 29 0a 20    20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70  | gptel-mode.1)).....(goto-char.(p | 
| 4f300 |  6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 28    73 6b 69 70 2d 63 68 61 72 73 2d 62 61 63 6b 77  | oint-max)).....(skip-chars-backw | 
| 4f320 |  61 72 64 20 22 5c 74 5c 72 5c 6e 22 29 0a 20 20    20 20 28 69 66 20 28 62 6f 62 70 29 20 28 69 6e  | ard."\t\r\n").....(if.(bobp).(in | 
| 4f340 |  73 65 72 74 20 28 6f 72 20 69 6e 69 74 69 61 6c    20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70  | sert.(or.initial.(gptel-prompt-p | 
| 4f360 |  72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29    0a 20 20 20 20 28 77 68 65 6e 20 69 6e 74 65 72  | refix-string)))).....(when.inter | 
| 4f380 |  61 63 74 69 76 65 70 0a 20 20 20 20 20 20 28 64    69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 28 63  | activep.......(display-buffer.(c | 
| 4f3a0 |  75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 67    70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66  | urrent-buffer).gptel-display-buf | 
| 4f3c0 |  66 65 72 2d 61 63 74 69 6f 6e 29 0a 20 20 20 20    20 20 28 6d 65 73 73 61 67 65 20 22 53 65 6e 64  | fer-action).......(message."Send | 
| 4f3e0 |  20 79 6f 75 72 20 71 75 65 72 79 20 77 69 74 68    20 25 73 21 22 0a 20 20 20 20 20 20 20 20 20 20  | .your.query.with.%s!"........... | 
| 4f400 |  20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65    2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 20 22 5c  | .....(substitute-command-keys."\ | 
| 4f420 |  5c 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 29 29    29 0a 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62  | \[gptel-send]"))).....(current-b | 
| 4f440 |  75 66 66 65 72 29 29 29 0a 0a 0c 0a 3b 3b 3b 20    52 65 61 73 6f 6e 69 6e 67 20 63 6f 6e 74 65 6e  | uffer)))....;;;.Reasoning.conten | 
| 4f460 |  74 20 55 49 0a 28 64 65 63 6c 61 72 65 2d 66 75    6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 75 72  | t.UI.(declare-function.gptel-cur | 
| 4f480 |  6c 2d 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74    2d 72 65 73 70 6f 6e 73 65 20 22 67 70 74 65 6c  | l--stream-insert-response."gptel | 
| 4f4a0 |  2d 63 75 72 6c 22 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 2d 64 69 73 70 6c 61 79 2d 72  | -curl")..(defun.gptel--display-r | 
| 4f4c0 |  65 61 73 6f 6e 69 6e 67 2d 73 74 72 65 61 6d 20    28 74 65 78 74 20 69 6e 66 6f 29 0a 20 20 22 53  | easoning-stream.(text.info)..."S | 
| 4f4e0 |  68 6f 77 20 72 65 61 73 6f 6e 69 6e 67 20 54 45    58 54 20 69 6e 20 61 6e 20 61 70 70 72 6f 70 72  | how.reasoning.TEXT.in.an.appropr | 
| 4f500 |  69 61 74 65 20 6c 6f 63 61 74 69 6f 6e 2e 0a 0a    49 4e 46 4f 20 69 73 20 74 68 65 20 72 65 71 75  | iate.location...INFO.is.the.requ | 
| 4f520 |  65 73 74 20 49 4e 46 4f 2c 20 73 65 65 20 60 67    70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65  | est.INFO,.see.`gptel--url-get-re | 
| 4f540 |  73 70 6f 6e 73 65 27 2e 20 20 54 68 69 73 20 69    73 0a 66 6f 72 20 73 74 72 65 61 6d 69 6e 67 20  | sponse'...This.is.for.streaming. | 
| 4f560 |  72 65 73 70 6f 6e 73 65 73 20 6f 6e 6c 79 2e 22    0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28  | responses.only."...(when-let*.(( | 
| 4f580 |  69 6e 63 6c 75 64 65 20 28 70 6c 69 73 74 2d 67    65 74 20 69 6e 66 6f 20 3a 69 6e 63 6c 75 64 65  | include.(plist-get.info.:include | 
| 4f5a0 |  2d 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20    20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 69  | -reasoning))).....(if.(stringp.i | 
| 4f5c0 |  6e 63 6c 75 64 65 29 0a 20 20 20 20 20 20 20 20    28 75 6e 6c 65 73 73 20 28 65 71 20 74 65 78 74  | nclude).........(unless.(eq.text | 
| 4f5e0 |  20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 77    69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66  | .t)...........(with-current-buff | 
| 4f600 |  65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63    72 65 61 74 65 20 69 6e 63 6c 75 64 65 29 0a 20  | er.(get-buffer-create.include).. | 
| 4f620 |  20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65    2d 65 78 63 75 72 73 69 6f 6e 20 28 67 6f 74 6f  | ...........(save-excursion.(goto | 
| 4f640 |  2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | -char.(point-max)).............. | 
| 4f660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    69 6e 73 65 72 74 20 74 65 78 74 29 29 29 29 0a  | ...............(insert.text)))). | 
| 4f680 |  20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 72 65    61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 20 28  | ......(let*.((reasoning-marker.( | 
| 4f6a0 |  70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a    72 65 61 73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72  | plist-get.info.:reasoning-marker | 
| 4f6c0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72  | ))..............(tracking-marker | 
| 4f6e0 |  20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f    20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65  | .(plist-get.info.:tracking-marke | 
| 4f700 |  72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28  | r))..............(start-marker.( | 
| 4f720 |  70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a    70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 20 20  | plist-get.info.:position)))..... | 
| 4f740 |  20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e    74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72  | ....(with-current-buffer.(marker | 
| 4f760 |  2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61    72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20  | -buffer.start-marker)........... | 
| 4f780 |  28 69 66 20 28 65 71 20 74 65 78 74 20 74 29 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 65  | (if.(eq.text.t)...............;e | 
| 4f7a0 |  6e 64 20 6f 66 20 73 74 72 65 61 6d 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67  | nd.of.stream...............(prog | 
| 4f7c0 |  6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73  | n.................(gptel-curl--s | 
| 4f7e0 |  74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73    70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20  | tream-insert-response........... | 
| 4f800 |  20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28    69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65  | .......(concat.(if.(derived-mode | 
| 4f820 |  2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -p.'org-mode)................... | 
| 4f840 |  20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 23 2b    65 6e 64 5f 72 65 61 73 6f 6e 69 6e 67 22 0a 20  | ..........."\n#+end_reasoning".. | 
| 4f860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44  | ..........................;;.TOD | 
| 4f880 |  4f 28 72 65 61 73 6f 6e 69 6e 67 29 20 72 65 6d    6f 76 65 20 70 72 6f 70 65 72 74 69 65 73 20 61  | O(reasoning).remove.properties.a | 
| 4f8a0 |  6e 64 20 73 74 72 69 70 20 69 6e 73 74 65 61 64    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nd.strip.instead................ | 
| 4f8c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f    70 65 72 74 69 7a 65 20 22 5c 6e 60 60 60 22 20  | ............(propertize."\n```". | 
| 4f8e0 |  27 67 70 74 65 6c 20 27 69 67 6e 6f 72 65 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | 'gptel.'ignore))................ | 
| 4f900 |  20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d    72 65 73 70 6f 6e 73 65 2d 73 65 70 61 72 61 74  | ..........gptel-response-separat | 
| 4f920 |  6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 69 6e 66 6f 20 74 29 0a 20 20 20  | or)..................info.t).... | 
| 4f940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68    65 6e 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65  | .............(when.(derived-mode | 
| 4f960 |  2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 20 3b 66    6f 6c 64 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20  | -p.'org-mode).;fold.block....... | 
| 4f980 |  20 20 20 20 20 20 20 20 20 20 20 20 28 69 67 6e    6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20  | ............(ignore-errors...... | 
| 4f9a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20  | ...............(save-excursion.. | 
| 4f9c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20  | .....................(goto-char. | 
| 4f9e0 |  74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tracking-marker)................ | 
| 4fa00 |  20 20 20 20 20 20 20 28 73 65 61 72 63 68 2d 62    61 63 6b 77 61 72 64 20 22 23 2b 65 6e 64 5f 72  | .......(search-backward."#+end_r | 
| 4fa20 |  65 61 73 6f 6e 69 6e 67 22 20 73 74 61 72 74 2d    6d 61 72 6b 65 72 20 74 29 0a 20 20 20 20 20 20  | easoning".start-marker.t)....... | 
| 4fa40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61  | ................(when.(looking-a | 
| 4fa60 |  74 20 22 5e 23 5c 5c 2b 65 6e 64 5f 72 65 61 73    6f 6e 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20  | t."^#\\+end_reasoning")......... | 
| 4fa80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6f 72 67 2d 63 79 63 6c 65 29 29 29 29 29 29  | ................(org-cycle)))))) | 
| 4faa0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e    6c 65 73 73 20 28 61 6e 64 20 72 65 61 73 6f 6e  | .............(unless.(and.reason | 
| 4fac0 |  69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b    69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20  | ing-marker.tracking-marker...... | 
| 4fae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 3d 20 72 65 61 73 6f 6e 69 6e 67  | ....................(=.reasoning | 
| 4fb00 |  2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67    2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20  | -marker.tracking-marker))....... | 
| 4fb20 |  20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73    65 70 61 72 61 74 6f 72 20 20 20 20 20 20 20 20  | ........(let.((separator........ | 
| 4fb40 |  3b 53 65 70 61 72 61 74 65 20 66 72 6f 6d 20 72    65 73 70 6f 6e 73 65 20 70 72 65 66 69 78 20 69  | ;Separate.from.response.prefix.i | 
| 4fb60 |  66 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | f.required...................... | 
| 4fb80 |  28 61 6e 64 20 28 6e 6f 74 20 74 72 61 63 6b 69    6e 67 2d 6d 61 72 6b 65 72 29 20 67 70 74 65 6c  | (and.(not.tracking-marker).gptel | 
| 4fba0 |  2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -mode........................... | 
| 4fbc0 |  28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 73 75 66    66 69 78 2d 70 0a 20 20 20 20 20 20 20 20 20 20  | (not.(string-suffix-p........... | 
| 4fbe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 22 5c 6e 22 20 28 67 70 74 65  | ......................"\n".(gpte | 
| 4fc00 |  6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69    78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20  | l-response-prefix-string)))..... | 
| 4fc20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 22 5c 6e 22 29 29 29 0a 20 20  | ......................"\n")))... | 
| 4fc40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67    70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61  | ..............(gptel-curl--strea | 
| 4fc60 |  6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | m-insert-response............... | 
| 4fc80 |  20 20 20 28 63 6f 6e 63 61 74 20 73 65 70 61 72    61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20  | ...(concat.separator............ | 
| 4fca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69    66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d  | ..............(if.(derived-mode- | 
| 4fcc0 |  70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | p.'org-mode).................... | 
| 4fce0 |  20 20 20 20 20 20 20 20 20 20 22 23 2b 62 65 67    69 6e 5f 72 65 61 73 6f 6e 69 6e 67 5c 6e 22 0a  | .........."#+begin_reasoning\n". | 
| 4fd00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f  | ...........................;;.TO | 
| 4fd20 |  44 4f 28 72 65 61 73 6f 6e 69 6e 67 29 20 72 65    6d 6f 76 65 20 70 72 6f 70 65 72 74 69 65 73 20  | DO(reasoning).remove.properties. | 
| 4fd40 |  61 6e 64 20 73 74 72 69 70 20 69 6e 73 74 65 61    64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | and.strip.instead............... | 
| 4fd60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72    6f 70 65 72 74 69 7a 65 20 22 60 60 60 20 72 65  | .............(propertize."```.re | 
| 4fd80 |  61 73 6f 6e 69 6e 67 5c 6e 22 20 27 67 70 74 65    6c 20 27 69 67 6e 6f 72 65 29 29 29 0a 20 20 20  | asoning\n".'gptel.'ignore))).... | 
| 4fda0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e    66 6f 20 74 29 29 29 0a 20 20 20 20 20 20 20 20  | ..............info.t)))......... | 
| 4fdc0 |  20 20 20 20 28 69 66 20 28 65 71 20 69 6e 63 6c    75 64 65 20 27 69 67 6e 6f 72 65 29 0a 20 20 20  | ....(if.(eq.include.'ignore).... | 
| 4fde0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72    6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .............(progn............. | 
| 4fe00 |  20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d    70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20  | ......(add-text-properties...... | 
| 4fe20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20    28 6c 65 6e 67 74 68 20 74 65 78 74 29 20 27 28  | ..............0.(length.text).'( | 
| 4fe40 |  67 70 74 65 6c 20 69 67 6e 6f 72 65 20 66 72 6f    6e 74 2d 73 74 69 63 6b 79 20 28 67 70 74 65 6c  | gptel.ignore.front-sticky.(gptel | 
| 4fe60 |  29 29 20 74 65 78 74 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65  | )).text)...................(gpte | 
| 4fe80 |  6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69    6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 74  | l-curl--stream-insert-response.t | 
| 4fea0 |  65 78 74 20 69 6e 66 6f 20 74 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65  | ext.info.t))...............(gpte | 
| 4fec0 |  6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69    6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 74  | l-curl--stream-insert-response.t | 
| 4fee0 |  65 78 74 20 69 6e 66 6f 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 28 73 65 74 71 20 74 72 61 63  | ext.info)))...........(setq.trac | 
| 4ff00 |  6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69    73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61  | king-marker.(plist-get.info.:tra | 
| 4ff20 |  63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20    20 20 20 20 20 20 20 20 20 28 69 66 20 72 65 61  | cking-marker))...........(if.rea | 
| 4ff40 |  73 6f 6e 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76  | soning-marker...............(mov | 
| 4ff60 |  65 2d 6d 61 72 6b 65 72 20 72 65 61 73 6f 6e 69    6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69  | e-marker.reasoning-marker.tracki | 
| 4ff80 |  6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75  | ng-marker).............(plist-pu | 
| 4ffa0 |  74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e    67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20  | t.info.:reasoning-marker........ | 
| 4ffc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 63 6f 70 79 2d 6d 61 72 6b 65 72 20 74 72 61  | ................(copy-marker.tra | 
| 4ffe0 |  63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 6e 69 6c    29 29 29 29 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20  | cking-marker.nil))))))))....;;;. | 
| 50000 |  54 6f 6f 6c 20 75 73 65 20 55 49 0a 28 64 65 66    75 6e 20 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61  | Tool.use.UI.(defun.gptel--displa | 
| 50020 |  79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28 74 6f    6f 6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 20 26 6f  | y-tool-calls.(tool-calls.info.&o | 
| 50040 |  70 74 69 6f 6e 61 6c 20 75 73 65 2d 6d 69 6e 69    62 75 66 66 65 72 29 0a 20 20 22 48 61 6e 64 6c  | ptional.use-minibuffer)..."Handl | 
| 50060 |  65 20 74 6f 6f 6c 20 63 61 6c 6c 20 63 6f 6e 66    69 72 6d 61 74 69 6f 6e 2e 0a 0a 54 4f 4f 4c 2d  | e.tool.call.confirmation...TOOL- | 
| 50080 |  43 41 4c 4c 53 20 73 68 6f 75 6c 64 20 62 65 20    61 20 6c 69 73 74 20 6f 66 20 74 6f 6f 6c 20 63  | CALLS.should.be.a.list.of.tool.c | 
| 500a0 |  61 6c 6c 20 73 70 65 63 69 66 69 63 61 74 69 6f    6e 73 20 6f 72 20 72 65 73 75 6c 74 73 2c 0a 73  | all.specifications.or.results,.s | 
| 500c0 |  74 72 75 63 74 75 72 65 64 20 61 73 3a 0a 0a 20    28 28 74 6f 6f 6c 20 61 72 67 73 20 63 61 6c 6c  | tructured.as:...((tool.args.call | 
| 500e0 |  62 61 63 6b 29 20 2e 2e 2e 29 0a 0a 66 6f 72 20    74 6f 6f 6c 20 63 61 6c 6c 20 73 70 65 63 69 66  | back)....)..for.tool.call.specif | 
| 50100 |  69 63 61 74 69 6f 6e 73 20 74 6f 20 62 65 20 63    6f 6e 66 69 72 6d 65 64 2e 20 20 49 4e 46 4f 20  | ications.to.be.confirmed...INFO. | 
| 50120 |  63 6f 6e 74 61 69 6e 73 20 74 68 65 0a 73 74 61    74 65 20 6f 66 20 74 68 65 20 72 65 71 75 65 73  | contains.the.state.of.the.reques | 
| 50140 |  74 2e 20 20 54 6f 20 70 72 6f 6d 70 74 20 66 6f    72 20 74 6f 6f 6c 20 63 61 6c 6c 20 63 6f 6e 66  | t...To.prompt.for.tool.call.conf | 
| 50160 |  69 72 6d 61 74 69 6f 6e 2c 20 75 73 65 0a 65 69    74 68 65 72 20 61 6e 20 6f 76 65 72 6c 61 79 20  | irmation,.use.either.an.overlay. | 
| 50180 |  69 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 62    75 66 66 65 72 20 6f 72 20 74 68 65 20 6d 69 6e  | in.the.request.buffer.or.the.min | 
| 501a0 |  69 62 75 66 66 65 72 20 28 69 66 0a 55 53 45 2d    4d 49 4e 49 42 55 46 46 45 52 20 69 73 20 6e 6f  | ibuffer.(if.USE-MINIBUFFER.is.no | 
| 501c0 |  6e 2d 6e 69 6c 29 2e 22 0a 20 20 28 6c 65 74 2a    20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20  | n-nil)."...(let*.((start-marker. | 
| 501e0 |  28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20    3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20  | (plist-get.info.:position))..... | 
| 50200 |  20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d    61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74  | .....(tracking-marker.(plist-get | 
| 50220 |  20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d    6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 3b 3b  | .info.:tracking-marker))).....;; | 
| 50240 |  20 70 65 6e 64 69 6e 67 20 74 6f 6f 6c 20 63 61    6c 6c 73 20 6c 6f 6f 6b 20 6c 69 6b 65 20 28 28  | .pending.tool.calls.look.like.(( | 
| 50260 |  74 6f 6f 6c 20 63 61 6c 6c 62 61 63 6b 20 61 72    67 73 29 20 2e 2e 2e 29 0a 20 20 20 20 28 77 69  | tool.callback.args)....).....(wi | 
| 50280 |  74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65    72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66  | th-current-buffer.(plist-get.inf | 
| 502a0 |  6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20    20 28 69 66 20 75 73 65 2d 6d 69 6e 69 62 75 66  | o.:buffer).......(if.use-minibuf | 
| 502c0 |  66 65 72 20 20 20 20 20 20 20 20 20 20 20 20 3b    70 72 6f 6d 70 74 20 66 6f 72 20 63 6f 6e 66 69  | fer............;prompt.for.confi | 
| 502e0 |  72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65    20 6d 69 6e 69 62 75 66 66 65 72 0a 20 20 20 20  | rmation.from.the.minibuffer..... | 
| 50300 |  20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6d 69    6e 69 62 75 66 66 65 72 2d 61 6c 6c 6f 77 2d 74  | ......(let*.((minibuffer-allow-t | 
| 50320 |  65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 20 74    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ext-properties.t)............... | 
| 50340 |  20 20 20 28 62 61 63 6b 65 6e 64 2d 6e 61 6d 65    20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d  | ...(backend-name.(gptel-backend- | 
| 50360 |  6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20    69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 29 29  | name.(plist-get.info.:backend))) | 
| 50380 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 6d 70 74 20 28 66 6f 72 6d 61  | ..................(prompt.(forma | 
| 503a0 |  74 20 22 25 73 20 77 61 6e 74 73 20 74 6f 20 72    75 6e 20 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d  | t."%s.wants.to.run.".backend-nam | 
| 503c0 |  65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 6d 61 70 2d 79 2d 6f 72 2d 6e 2d 70 0a 20  | e))).............(map-y-or-n-p.. | 
| 503e0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d    62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c 2d 73  | ............(lambda.(tool-call-s | 
| 50400 |  70 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 6d  | pec)................(concat.prom | 
| 50420 |  70 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28    67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20  | pt.(propertize.(gptel-tool-name. | 
| 50440 |  28 63 61 72 20 74 6f 6f 6c 2d 63 61 6c 6c 2d 73    70 65 63 29 29 0a 20 20 20 20 20 20 20 20 20 20  | (car.tool-call-spec))........... | 
| 50460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 50480 |  27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b    2d 6b 65 79 77 6f 72 64 2d 66 61 63 65 29 0a 20  | 'face.'font-lock-keyword-face).. | 
| 504a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 22 3a 20 22 29 29 0a 20 20 20  | ......................":.")).... | 
| 504c0 |  20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64    61 20 28 74 63 73 29 20 28 67 70 74 65 6c 2d 2d  | ..........(lambda.(tcs).(gptel-- | 
| 504e0 |  61 63 63 65 70 74 2d 74 6f 6f 6c 2d 63 61 6c 6c    73 20 28 6c 69 73 74 20 74 63 73 29 20 6e 69 6c  | accept-tool-calls.(list.tcs).nil | 
| 50500 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    74 6f 6f 6c 2d 63 61 6c 6c 73 20 27 28 22 74 6f  | ))..............tool-calls.'("to | 
| 50520 |  6f 6c 20 63 61 6c 6c 22 20 22 74 6f 6f 6c 20 63    61 6c 6c 73 22 20 22 72 75 6e 22 29 0a 20 20 20  | ol.call"."tool.calls"."run").... | 
| 50540 |  20 20 20 20 20 20 20 20 20 20 60 28 28 3f 69 20    2c 28 6c 61 6d 62 64 61 20 28 5f 29 20 28 73 61  | ..........`((?i.,(lambda.(_).(sa | 
| 50560 |  76 65 2d 77 69 6e 64 6f 77 2d 65 78 63 75 72 73    69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ve-window-excursion............. | 
| 50580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 77 69 74 68 2d 73 65 6c 65 63 74 65 64 2d  | .................(with-selected- | 
| 505a0 |  77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | window.......................... | 
| 505c0 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d    69 6e 73 70 65 63 74 2d 66 73 6d 20 67 70 74 65  | ........(gptel--inspect-fsm.gpte | 
| 505e0 |  6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l--fsm-last).................... | 
| 50600 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74    6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69  | ............(goto-char.(point-mi | 
| 50620 |  6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n))............................. | 
| 50640 |  20 20 20 28 77 68 65 6e 20 28 73 65 61 72 63 68    2d 66 6f 72 77 61 72 64 2d 72 65 67 65 78 70 20  | ...(when.(search-forward-regexp. | 
| 50660 |  22 5e 3a 74 6f 6f 6c 2d 75 73 65 22 20 6e 69 6c    20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | "^:tool-use".nil.t)............. | 
| 50680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69  | .....................(forward-li | 
| 506a0 |  6e 65 20 30 29 20 28 68 6c 2d 6c 69 6e 65 2d 68    69 67 68 6c 69 67 68 74 29 29 0a 20 20 20 20 20  | ne.0).(hl-line-highlight))...... | 
| 506c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 75 73 65 2d 6c  | ..........................(use-l | 
| 506e0 |  6f 63 61 6c 2d 6d 61 70 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ocal-map........................ | 
| 50700 |  20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 63    6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20  | .........(make-composed-keymap.. | 
| 50720 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 50740 |  28 64 65 66 69 6e 65 2d 6b 65 79 6d 61 70 20 22    71 22 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69  | (define-keymap."q".(lambda.().(i | 
| 50760 |  6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nteractive)..................... | 
| 50780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 507a0 |  20 20 28 71 75 69 74 2d 77 69 6e 64 6f 77 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(quit-window)................. | 
| 507c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 507e0 |  20 20 20 20 20 20 28 65 78 69 74 2d 72 65 63 75    72 73 69 76 65 2d 65 64 69 74 29 29 29 0a 20 20  | ......(exit-recursive-edit)))... | 
| 50800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| 50820 |  63 75 72 72 65 6e 74 2d 6c 6f 63 61 6c 2d 6d 61    70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | current-local-map)))............ | 
| 50840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 72 65 63 75 72 73 69 76 65 2d 65  | ....................(recursive-e | 
| 50860 |  64 69 74 29 20 6e 69 6c 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  | dit).nil)))...................." | 
| 50880 |  69 6e 73 70 65 63 74 20 63 61 6c 6c 28 73 29 22    29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20  | inspect.call(s)")))).........;;. | 
| 508a0 |  50 72 6f 6d 70 74 20 66 6f 72 20 63 6f 6e 66 69    72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65  | Prompt.for.confirmation.from.the | 
| 508c0 |  20 63 68 61 74 20 62 75 66 66 65 72 0a 20 20 20    20 20 20 20 20 28 6c 65 74 2a 20 28 28 62 61 63  | .chat.buffer.........(let*.((bac | 
| 508e0 |  6b 65 6e 64 2d 6e 61 6d 65 20 28 67 70 74 65 6c    2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 28 70  | kend-name.(gptel-backend-name.(p | 
| 50900 |  6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62    61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20  | list-get.info.:backend)))....... | 
| 50920 |  20 20 20 20 20 20 20 20 20 28 61 63 74 69 6f 6e    73 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20  | .........(actions-string........ | 
| 50940 |  20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74    20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 52 75  | .........(concat.(propertize."Ru | 
| 50960 |  6e 20 74 6f 6f 6c 73 3a 20 22 20 27 66 61 63 65    20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69  | n.tools:.".'face.'font-lock-stri | 
| 50980 |  6e 67 2d 66 61 63 65 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ng-face)........................ | 
| 509a0 |  20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 43 2d    63 20 43 2d 63 22 20 27 66 61 63 65 20 27 68 65  | .(propertize."C-c.C-c".'face.'he | 
| 509c0 |  6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lp-key-binding)................. | 
| 509e0 |  20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74    69 7a 65 20 22 2c 20 43 61 6e 63 65 6c 20 72 65  | ........(propertize.",.Cancel.re | 
| 50a00 |  71 75 65 73 74 3a 20 22 20 27 66 61 63 65 20 27    66 6f 6e 74 2d 6c 6f 63 6b 2d 73 74 72 69 6e 67  | quest:.".'face.'font-lock-string | 
| 50a20 |  2d 66 61 63 65 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | -face).........................( | 
| 50a40 |  70 72 6f 70 65 72 74 69 7a 65 20 22 43 2d 63 20    43 2d 6b 22 20 27 66 61 63 65 20 27 68 65 6c 70  | propertize."C-c.C-k".'face.'help | 
| 50a60 |  2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -key-binding)................... | 
| 50a80 |  20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a    65 20 22 2c 20 49 6e 73 70 65 63 74 3a 20 22 20  | ......(propertize.",.Inspect:.". | 
| 50aa0 |  27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b    2d 73 74 72 69 6e 67 2d 66 61 63 65 29 0a 20 20  | 'face.'font-lock-string-face)... | 
| 50ac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a  | ......................(propertiz | 
| 50ae0 |  65 20 22 43 2d 63 20 43 2d 69 22 20 27 66 61 63    65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64  | e."C-c.C-i".'face.'help-key-bind | 
| 50b00 |  69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 66 69 72 6d 2d 73  | ing)))................(confirm-s | 
| 50b20 |  74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 6f  | trings.................(list.(co | 
| 50b40 |  6e 63 61 74 20 22 5c 6e 22 20 61 63 74 69 6f 6e    73 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20  | ncat."\n".actions-string........ | 
| 50b60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69  | .......................(properti | 
| 50b80 |  7a 65 20 22 5c 6e 22 20 27 66 61 63 65 20 27 28    3a 69 6e 68 65 72 69 74 20 66 6f 6e 74 2d 6c 6f  | ze."\n".'face.'(:inherit.font-lo | 
| 50ba0 |  63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ck-string-face.................. | 
| 50bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 50be0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    75 6e 64 65 72 6c 69 6e 65 20 74 20 3a 65 78 74  | ...............:underline.t.:ext | 
| 50c00 |  65 6e 64 20 74 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | end.t))......................... | 
| 50c20 |  20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 28 70    72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 25 73 20  | ......(format.(propertize."\n%s. | 
| 50c40 |  77 61 6e 74 73 20 74 6f 20 72 75 6e 3a 5c 6e 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | wants.to.run:\n"................ | 
| 50c60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 50c80 |  20 20 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c    6f 63 6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 29  | ...'face.'font-lock-string-face) | 
| 50ca0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 50cc0 |  20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 6e    61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20  | .......backend-name))))......... | 
| 50ce0 |  20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 28    74 6f 6f 6c 29 20 75 73 65 20 61 20 77 72 61 70  | .......;;.FIXME(tool).use.a.wrap | 
| 50d00 |  70 65 72 20 69 6e 73 74 65 61 64 20 6f 66 20 61    20 6d 61 6e 75 61 6c 20 74 65 78 74 2d 70 72 6f  | per.instead.of.a.manual.text-pro | 
| 50d20 |  70 65 72 74 79 20 73 65 61 72 63 68 2c 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | perty.search,................;;. | 
| 50d40 |  74 68 69 73 20 69 73 20 66 72 61 67 69 6c 65 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | this.is.fragile................( | 
| 50d60 |  6f 76 2d 73 74 61 72 74 20 28 73 61 76 65 2d 65    78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20  | ov-start.(save-excursion........ | 
| 50d80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 73  | ....................(goto-char.s | 
| 50da0 |  74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tart-marker).................... | 
| 50dc0 |  20 20 20 20 20 20 20 20 28 74 65 78 74 2d 70 72    6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61  | ........(text-property-search-ba | 
| 50de0 |  63 6b 77 61 72 64 20 27 67 70 74 65 6c 20 27 72    65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20  | ckward.'gptel.'response)........ | 
| 50e00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 6f 69 6e 74 29 29 29 0a 20 20  | ....................(point)))... | 
| 50e20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76    20 28 6f 72 20 28 63 64 72 2d 73 61 66 65 20 28  | .............(ov.(or.(cdr-safe.( | 
| 50e40 |  67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74    79 2d 61 6e 64 2d 6f 76 65 72 6c 61 79 0a 20 20  | get-char-property-and-overlay... | 
| 50e60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 50e80 |  73 74 61 72 74 2d 6d 61 72 6b 65 72 20 27 67 70    74 65 6c 2d 74 6f 6f 6c 29 29 0a 20 20 20 20 20  | start-marker.'gptel-tool))...... | 
| 50ea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20  | ..................(make-overlay. | 
| 50ec0 |  6f 76 2d 73 74 61 72 74 20 28 6f 72 20 74 72 61    63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 73 74 61  | ov-start.(or.tracking-marker.sta | 
| 50ee0 |  72 74 2d 6d 61 72 6b 65 72 29 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74  | rt-marker)))))...........;;.If.t | 
| 50f00 |  68 65 20 63 75 72 73 6f 72 20 69 73 20 61 74 20    74 68 65 20 6f 76 65 72 6c 61 79 2d 65 6e 64 2c  | he.cursor.is.at.the.overlay-end, | 
| 50f20 |  20 69 74 20 65 6e 64 73 20 75 70 20 6f 75 74 73    69 64 65 2c 20 73 6f 20 6d 6f 76 65 20 69 74 20  | .it.ends.up.outside,.so.move.it. | 
| 50f40 |  62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 28    75 6e 6c 65 73 73 20 74 72 61 63 6b 69 6e 67 2d  | back...........(unless.tracking- | 
| 50f60 |  6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 77 68 65 6e 20 28 3d 20 28 70 6f 69  | marker.............(when.(=.(poi | 
| 50f80 |  6e 74 29 20 73 74 61 72 74 2d 6d 61 72 6b 65 72    29 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73  | nt).start-marker).(ignore-errors | 
| 50fa0 |  20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 29    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70  | .(backward-char))))...........(p | 
| 50fc0 |  63 61 73 65 2d 64 6f 6c 69 73 74 20 28 60 28 2c    74 6f 6f 6c 2d 73 70 65 63 20 2c 61 72 67 2d 76  | case-dolist.(`(,tool-spec.,arg-v | 
| 50fe0 |  61 6c 75 65 73 20 5f 29 20 74 6f 6f 6c 2d 63 61    6c 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  | alues._).tool-calls)............ | 
| 51000 |  20 28 70 75 73 68 20 28 67 70 74 65 6c 2d 2d 66    6f 72 6d 61 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 20  | .(push.(gptel--format-tool-call. | 
| 51020 |  28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65    20 74 6f 6f 6c 2d 73 70 65 63 29 20 61 72 67 2d  | (gptel-tool-name.tool-spec).arg- | 
| 51040 |  76 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 72  | values)...................confir | 
| 51060 |  6d 2d 73 74 72 69 6e 67 73 29 29 0a 20 20 20 20    20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e  | m-strings))...........(push.(con | 
| 51080 |  63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20    22 5c 6e 22 20 27 66 61 63 65 20 27 28 3a 69 6e  | cat.(propertize."\n".'face.'(:in | 
| 510a0 |  68 65 72 69 74 20 66 6f 6e 74 2d 6c 6f 63 6b 2d    73 74 72 69 6e 67 2d 66 61 63 65 0a 20 20 20 20  | herit.font-lock-string-face..... | 
| 510c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 510e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 75 6e 64 65 72 6c 69 6e 65  | ......................:underline | 
| 51100 |  20 74 20 3a 65 78 74 65 6e 64 20 74 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .t.:extend.t)))................. | 
| 51120 |  63 6f 6e 66 69 72 6d 2d 73 74 72 69 6e 67 73 29    0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 64  | confirm-strings)...........;;.Ad | 
| 51140 |  64 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 70    72 6f 6d 70 74 20 74 6f 20 74 68 65 20 6f 76 65  | d.confirmation.prompt.to.the.ove | 
| 51160 |  72 6c 61 79 0a 20 20 20 20 20 20 20 20 20 20 28    6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27  | rlay...........(overlay-put.ov.' | 
| 51180 |  61 66 74 65 72 2d 73 74 72 69 6e 67 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | after-string.................... | 
| 511a0 |  20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e    63 61 74 20 28 6e 72 65 76 65 72 73 65 20 63 6f  | ....(apply.#'concat.(nreverse.co | 
| 511c0 |  6e 66 69 72 6d 2d 73 74 72 69 6e 67 73 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72  | nfirm-strings)))...........(over | 
| 511e0 |  6c 61 79 2d 70 75 74 20 6f 76 20 27 6d 6f 75 73    65 2d 66 61 63 65 20 27 68 69 67 68 6c 69 67 68  | lay-put.ov.'mouse-face.'highligh | 
| 51200 |  74 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76    65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70  | t)...........(overlay-put.ov.'gp | 
| 51220 |  74 65 6c 2d 74 6f 6f 6c 20 74 6f 6f 6c 2d 63 61    6c 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 28  | tel-tool.tool-calls)...........( | 
| 51240 |  6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27    68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 20  | overlay-put.ov.'help-echo....... | 
| 51260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 63 61 74 20 22 54 6f 6f 6c 20 63  | .................(concat."Tool.c | 
| 51280 |  61 6c 6c 28 73 29 20 72 65 71 75 65 73 74 65 64    3a 20 22 20 61 63 74 69 6f 6e 73 2d 73 74 72 69  | all(s).requested:.".actions-stri | 
| 512a0 |  6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27  | ng))...........(overlay-put.ov.' | 
| 512c0 |  6b 65 79 6d 61 70 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64  | keymap........................(d | 
| 512e0 |  65 66 69 6e 65 2d 6b 65 79 6d 61 70 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | efine-keymap.................... | 
| 51300 |  20 20 20 20 20 20 22 3c 6d 6f 75 73 65 2d 31 3e    22 20 23 27 67 70 74 65 6c 2d 2d 64 69 73 70 61  | ......"<mouse-1>".#'gptel--dispa | 
| 51320 |  74 63 68 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tch-tool-calls.................. | 
| 51340 |  20 20 20 20 20 20 20 20 22 43 2d 63 20 43 2d 63    22 20 23 27 67 70 74 65 6c 2d 2d 61 63 63 65 70  | ........"C-c.C-c".#'gptel--accep | 
| 51360 |  74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-tool-calls.................... | 
| 51380 |  20 20 20 20 20 20 22 43 2d 63 20 43 2d 6b 22 20    23 27 67 70 74 65 6c 2d 2d 72 65 6a 65 63 74 2d  | ......"C-c.C-k".#'gptel--reject- | 
| 513a0 |  74 6f 6f 6c 2d 63 61 6c 6c 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tool-calls...................... | 
| 513c0 |  20 20 20 20 22 43 2d 63 20 43 2d 69 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...."C-c.C-i"................... | 
| 513e0 |  20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28    29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a  | .......(lambda.().(interactive). | 
| 51400 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68  | ...........................(with | 
| 51420 |  2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -selected-window................ | 
| 51440 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 63 74 2d  | ................(gptel--inspect- | 
| 51460 |  66 73 6d 20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c    61 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20  | fsm.gptel--fsm-last)............ | 
| 51480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f  | ..................(goto-char.(po | 
| 514a0 |  69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | int-min))....................... | 
| 514c0 |  20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 65    61 72 63 68 2d 66 6f 72 77 61 72 64 2d 72 65 67  | .......(when.(search-forward-reg | 
| 514e0 |  65 78 70 20 22 5e 3a 74 6f 6f 6c 2d 75 73 65 22    20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20  | exp."^:tool-use".nil.t)......... | 
| 51500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d  | .......................(forward- | 
| 51520 |  6c 69 6e 65 20 30 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | line.0)......................... | 
| 51540 |  20 20 20 20 20 20 20 28 68 6c 2d 6c 69 6e 65 2d    68 69 67 68 6c 69 67 68 74 29 29 29 29 29 29 29  | .......(hl-line-highlight))))))) | 
| 51560 |  29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74    65 6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c  | ))))..(defun.gptel--display-tool | 
| 51580 |  2d 72 65 73 75 6c 74 73 20 28 74 6f 6f 6c 2d 72    65 73 75 6c 74 73 20 69 6e 66 6f 29 0a 20 20 22  | -results.(tool-results.info)..." | 
| 515a0 |  49 6e 73 65 72 74 20 54 4f 4f 4c 2d 52 45 53 55    4c 54 53 20 69 6e 74 6f 20 62 75 66 66 65 72 2e  | Insert.TOOL-RESULTS.into.buffer. | 
| 515c0 |  0a 0a 54 4f 4f 4c 2d 52 45 53 55 4c 54 53 20 69    73 0a 0a 20 28 28 74 6f 6f 6c 20 61 72 67 73 20  | ..TOOL-RESULTS.is...((tool.args. | 
| 515e0 |  72 65 73 75 6c 74 29 20 2e 2e 2e 29 0a 0a 66 6f    72 20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75  | result)....)..for.tool.call.resu | 
| 51600 |  6c 74 73 2e 20 20 49 4e 46 4f 20 63 6f 6e 74 61    69 6e 73 20 74 68 65 20 73 74 61 74 65 20 6f 66  | lts...INFO.contains.the.state.of | 
| 51620 |  20 74 68 65 20 72 65 71 75 65 73 74 2e 22 0a 20    20 28 6c 65 74 2a 20 28 28 73 74 61 72 74 2d 6d  | .the.request."...(let*.((start-m | 
| 51640 |  61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74    20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29  | arker.(plist-get.info.:position) | 
| 51660 |  29 0a 20 20 20 20 20 20 20 20 20 28 74 6f 6f 6c    2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67  | )..........(tool-marker.(plist-g | 
| 51680 |  65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 6d 61    72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20  | et.info.:tool-marker)).......... | 
| 516a0 |  28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72    20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f  | (tracking-marker.(plist-get.info | 
| 516c0 |  20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65    72 29 29 29 0a 20 20 20 20 3b 3b 20 49 6e 73 65  | .:tracking-marker))).....;;.Inse | 
| 516e0 |  72 74 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 0a    20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d  | rt.tool.results.....(when.gptel- | 
| 51700 |  69 6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73    75 6c 74 73 0a 20 20 20 20 20 20 28 77 69 74 68  | include-tool-results.......(with | 
| 51720 |  2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20    28 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73  | -current-buffer.(marker-buffer.s | 
| 51740 |  74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20    20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20  | tart-marker).........(cl-loop... | 
| 51760 |  20 20 20 20 20 20 20 66 6f 72 20 28 74 6f 6f 6c    20 61 72 67 73 20 72 65 73 75 6c 74 29 20 69 6e  | .......for.(tool.args.result).in | 
| 51780 |  20 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 0a 20 20    20 20 20 20 20 20 20 77 69 74 68 20 69 6e 63 6c  | .tool-results..........with.incl | 
| 517a0 |  75 64 65 2d 6e 61 6d 65 73 20 3d 0a 20 20 20 20    20 20 20 20 20 28 6d 61 70 63 61 72 20 23 27 67  | ude-names.=..........(mapcar.#'g | 
| 517c0 |  70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ptel-tool-name.................. | 
| 517e0 |  28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f    74 20 23 27 67 70 74 65 6c 2d 74 6f 6f 6c 2d 69  | (cl-remove-if-not.#'gptel-tool-i | 
| 51800 |  6e 63 6c 75 64 65 20 28 70 6c 69 73 74 2d 67 65    74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 29 29 29  | nclude.(plist-get.info.:tools))) | 
| 51820 |  0a 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72    20 28 65 71 20 67 70 74 65 6c 2d 69 6e 63 6c 75  | ..........if.(or.(eq.gptel-inclu | 
| 51840 |  64 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20    74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | de-tool-results.t).............. | 
| 51860 |  20 20 20 28 6d 65 6d 62 65 72 20 28 67 70 74 65    6c 2d 74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c  | ...(member.(gptel-tool-name.tool | 
| 51880 |  29 20 69 6e 63 6c 75 64 65 2d 6e 61 6d 65 73 29    29 0a 20 20 20 20 20 20 20 20 20 64 6f 20 28 66  | ).include-names))..........do.(f | 
| 518a0 |  75 6e 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69  | uncall..............(plist-get.i | 
| 518c0 |  6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74  | nfo.:callback)..............(let | 
| 518e0 |  2a 20 28 28 6e 61 6d 65 20 28 67 70 74 65 6c 2d    74 6f 6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 29  | *.((name.(gptel-tool-name.tool)) | 
| 51900 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 73 65 70 61 72 61 74 6f 72 20  | .....................(separator. | 
| 51920 |  20 20 20 20 20 20 20 3b 53 65 70 61 72 61 74 65    20 66 72 6f 6d 20 72 65 73 70 6f 6e 73 65 20 70  | .......;Separate.from.response.p | 
| 51940 |  72 65 66 69 78 20 69 66 20 72 65 71 75 69 72 65    64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | refix.if.required............... | 
| 51960 |  20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 6e    6f 74 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b  | .......(cond.((not.tracking-mark | 
| 51980 |  65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | er)............................. | 
| 519a0 |  28 61 6e 64 20 67 70 74 65 6c 2d 6d 6f 64 65 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (and.gptel-mode................. | 
| 519c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 73 75  | .................(not.(string-su | 
| 519e0 |  66 66 69 78 2d 70 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ffix-p.......................... | 
| 51a00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c    6e 22 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e  | .............."\n".(gptel-respon | 
| 51a20 |  73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | se-prefix-string)))............. | 
| 51a40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 22 5c 6e 22 29 29 20 20 20 20 20  | ....................."\n"))..... | 
| 51a60 |  20 20 20 20 20 20 3b 73 74 61 72 74 20 6f 66 20    72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20  | ......;start.of.response........ | 
| 51a80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 28 6e 6f 74 20 28 61 6e 64 20 74  | ....................((not.(and.t | 
| 51aa0 |  6f 6f 6c 2d 6d 61 72 6b 65 72 20 3b 6e 6f 74 20    63 6f 6e 73 65 63 75 74 69 76 65 20 74 6f 6f 6c  | ool-marker.;not.consecutive.tool | 
| 51ac0 |  20 72 65 73 75 6c 74 20 62 6c 6f 63 6b 73 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .result.blocks.................. | 
| 51ae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 3d 20 74 72 61 63 6b 69 6e 67  | .....................(=.tracking | 
| 51b00 |  2d 6d 61 72 6b 65 72 20 74 6f 6f 6c 2d 6d 61 72    6b 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20  | -marker.tool-marker))).......... | 
| 51b20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73  | ...................gptel-respons | 
| 51b40 |  65 2d 73 65 70 61 72 61 74 6f 72 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e-separator))).................. | 
| 51b60 |  20 20 20 28 74 6f 6f 6c 2d 75 73 65 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...(tool-use.................... | 
| 51b80 |  20 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f 6c 29 20    61 6c 73 6f 20 63 68 65 63 6b 20 61 72 67 73 20  | ..;;.TODO(tool).also.check.args. | 
| 51ba0 |  73 69 6e 63 65 20 74 68 65 72 65 20 6d 61 79 20    62 65 20 6d 6f 72 65 20 74 68 61 6e 0a 20 20 20  | since.there.may.be.more.than.... | 
| 51bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 6f 6e 65 20 63 61 6c 6c 2f 72 65  | ..................;;.one.call/re | 
| 51be0 |  73 75 6c 74 20 66 6f 72 20 74 68 65 20 73 61 6d    65 20 74 6f 6f 6c 0a 20 20 20 20 20 20 20 20 20  | sult.for.the.same.tool.......... | 
| 51c00 |  20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d    66 69 6e 64 2d 69 66 0a 20 20 20 20 20 20 20 20  | ............(cl-find-if......... | 
| 51c20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c    61 6d 62 64 61 20 28 74 75 29 20 28 65 71 75 61  | ..............(lambda.(tu).(equa | 
| 51c40 |  6c 20 28 70 6c 69 73 74 2d 67 65 74 20 74 75 20    3a 6e 61 6d 65 29 20 6e 61 6d 65 29 29 0a 20 20  | l.(plist-get.tu.:name).name))... | 
| 51c60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 69  | ....................(plist-get.i | 
| 51c80 |  6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nfo.:tool-use)))................ | 
| 51ca0 |  20 20 20 20 20 28 69 64 20 28 70 6c 69 73 74 2d    67 65 74 20 74 6f 6f 6c 2d 75 73 65 20 3a 69 64  | .....(id.(plist-get.tool-use.:id | 
| 51cc0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d  | )).....................(display- | 
| 51ce0 |  63 61 6c 6c 20 28 66 6f 72 6d 61 74 20 22 28 25    73 20 25 73 29 22 20 6e 61 6d 65 0a 20 20 20 20  | call.(format."(%s.%s)".name..... | 
| 51d00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 51d20 |  20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72    69 6d 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72  | ......(string-trim.(prin1-to-str | 
| 51d40 |  69 6e 67 20 61 72 67 73 29 20 22 28 22 20 22 29    22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ing.args)."(".")")))............ | 
| 51d60 |  20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 20 28    70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20  | .........(call.(prin1-to-string. | 
| 51d80 |  60 28 3a 6e 61 6d 65 20 2c 6e 61 6d 65 20 3a 61    72 67 73 20 2c 61 72 67 73 29 29 29 0a 20 20 20  | `(:name.,name.:args.,args))).... | 
| 51da0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 74 72 75 6e 63 61 74 65 64 2d 63 61 6c 6c  | .................(truncated-call | 
| 51dc0 |  20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e    67 2d 74 6f 2d 77 69 64 74 68 0a 20 20 20 20 20  | .(truncate-string-to-width...... | 
| 51de0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 51e00 |  64 69 73 70 6c 61 79 2d 63 61 6c 6c 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | display-call.................... | 
| 51e20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 66 6c 6f 6f 72 20 28 2a 20 28 77 69 6e  | ..................(floor.(*.(win | 
| 51e40 |  64 6f 77 2d 77 69 64 74 68 29 20 30 2e 36 29 29    20 30 20 6e 69 6c 20 22 20 2e 2e 2e 29 22 29 29  | dow-width).0.6)).0.nil."....)")) | 
| 51e60 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f  | )................(if.(derived-mo | 
| 51e80 |  64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | de-p.'org-mode)................. | 
| 51ea0 |  20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  | ...(concat.....................s | 
| 51ec0 |  65 70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 22 23 2b  | eparator....................."#+ | 
| 51ee0 |  62 65 67 69 6e 5f 74 6f 6f 6c 20 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | begin_tool.".................... | 
| 51f00 |  20 74 72 75 6e 63 61 74 65 64 2d 63 61 6c 6c 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .truncated-call................. | 
| 51f20 |  20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....(propertize................. | 
| 51f40 |  20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e    22 20 63 61 6c 6c 20 22 5c 6e 5c 6e 22 20 28 6f  | .....(concat."\n".call."\n\n".(o | 
| 51f60 |  72 67 2d 65 73 63 61 70 65 2d 63 6f 64 65 2d 69    6e 2d 73 74 72 69 6e 67 20 72 65 73 75 6c 74 29  | rg-escape-code-in-string.result) | 
| 51f80 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 27 67 70 74 65 6c 20 60 28  | )......................'gptel.`( | 
| 51fa0 |  74 6f 6f 6c 20 2e 20 2c 69 64 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tool...,id)).................... | 
| 51fc0 |  20 22 5c 6e 23 2b 65 6e 64 5f 74 6f 6f 6c 5c 6e    22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ."\n#+end_tool\n").............. | 
| 51fe0 |  20 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f 6c    29 20 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73  | ....;;.TODO(tool).else.branch.is | 
| 52000 |  20 68 61 6e 64 6c 69 6e 67 20 61 6c 6c 20 66 72    6f 6e 74 2d 65 6e 64 73 20 61 73 20 6d 61 72 6b  | .handling.all.front-ends.as.mark | 
| 52020 |  64 6f 77 6e 2e 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3b 3b 20 41 74 20 6c 65 61  | down...................;;.At.lea | 
| 52040 |  73 74 20 65 73 63 61 70 65 20 6d 61 72 6b 64 6f    77 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20  | st.escape.markdown.............. | 
| 52060 |  20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  | .....(concat...................s | 
| 52080 |  65 70 61 72 61 74 6f 72 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f  | eparator...................;;.TO | 
| 520a0 |  44 4f 28 74 6f 6f 6c 29 20 72 65 6d 6f 76 65 20    70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 20 73  | DO(tool).remove.properties.and.s | 
| 520c0 |  74 72 69 70 20 69 6e 73 74 65 61 64 20 6f 66 20    69 67 6e 6f 72 69 6e 67 0a 20 20 20 20 20 20 20  | trip.instead.of.ignoring........ | 
| 520e0 |  20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70    65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22  | ...........(propertize.(format." | 
| 52100 |  60 60 60 20 74 6f 6f 6c 20 25 73 22 20 74 72 75    6e 63 61 74 65 64 2d 63 61 6c 6c 29 20 27 67 70  | ```.tool.%s".truncated-call).'gp | 
| 52120 |  74 65 6c 20 27 69 67 6e 6f 72 65 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | tel.'ignore)...................( | 
| 52140 |  70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b  | propertize....................;; | 
| 52160 |  20 54 4f 44 4f 28 74 6f 6f 6c 29 20 65 73 63 61    70 65 20 6d 61 72 6b 64 6f 77 6e 20 69 6e 20 72  | .TODO(tool).escape.markdown.in.r | 
| 52180 |  65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74  | esult....................(concat | 
| 521a0 |  20 22 5c 6e 22 20 63 61 6c 6c 20 22 5c 6e 5c 6e    22 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20  | ."\n".call."\n\n".result)....... | 
| 521c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70    74 65 6c 20 60 28 74 6f 6f 6c 20 2e 20 2c 69 64  | .............'gptel.`(tool...,id | 
| 521e0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f 6f  | ))...................;;.TODO(too | 
| 52200 |  6c 29 20 72 65 6d 6f 76 65 20 70 72 6f 70 65 72    74 69 65 73 20 61 6e 64 20 73 74 72 69 70 20 69  | l).remove.properties.and.strip.i | 
| 52220 |  6e 73 74 65 61 64 20 6f 66 20 69 67 6e 6f 72 69    6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | nstead.of.ignoring.............. | 
| 52240 |  20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65    20 22 5c 6e 60 60 60 5c 6e 22 20 27 67 70 74 65  | .....(propertize."\n```\n".'gpte | 
| 52260 |  6c 20 27 69 67 6e 6f 72 65 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 0a  | l.'ignore))))..............info. | 
| 52280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 27 72 61    77 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 74  | .............'raw)..........;;.t | 
| 522a0 |  6f 6f 6c 2d 72 65 73 75 6c 74 20 69 6e 73 65 72    74 69 6f 6e 20 68 61 73 20 75 70 64 61 74 65 64  | ool-result.insertion.has.updated | 
| 522c0 |  20 74 68 65 20 74 72 61 63 6b 69 6e 67 20 6d 61    72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 28 75  | .the.tracking.marker..........(u | 
| 522e0 |  6e 6c 65 73 73 20 74 72 61 63 6b 69 6e 67 2d 6d    61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20  | nless.tracking-marker........... | 
| 52300 |  20 28 73 65 74 71 20 74 72 61 63 6b 69 6e 67 2d    6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65  | .(setq.tracking-marker.(plist-ge | 
| 52320 |  74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67    2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 20  | t.info.:tracking-marker)))...... | 
| 52340 |  20 20 20 20 28 69 66 20 74 6f 6f 6c 2d 6d 61 72    6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ....(if.tool-marker............. | 
| 52360 |  20 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20    74 6f 6f 6c 2d 6d 61 72 6b 65 72 20 74 72 61 63  | ...(move-marker.tool-marker.trac | 
| 52380 |  6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20  | king-marker)..............(setq. | 
| 523a0 |  74 6f 6f 6c 2d 6d 61 72 6b 65 72 20 28 63 6f 70    79 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e  | tool-marker.(copy-marker.trackin | 
| 523c0 |  67 2d 6d 61 72 6b 65 72 20 6e 69 6c 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69  | g-marker.nil))..............(pli | 
| 523e0 |  73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f    6c 2d 6d 61 72 6b 65 72 20 74 6f 6f 6c 2d 6d 61  | st-put.info.:tool-marker.tool-ma | 
| 52400 |  72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20    28 77 68 65 6e 20 28 64 65 72 69 76 65 64 2d 6d  | rker))..........(when.(derived-m | 
| 52420 |  6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29    20 3b 66 6f 6c 64 20 64 72 61 77 65 72 0a 20 20  | ode-p.'org-mode).;fold.drawer... | 
| 52440 |  20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65    2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20  | .........(ignore-errors......... | 
| 52460 |  20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72    73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20  | .....(save-excursion............ | 
| 52480 |  20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 74    72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a  | ....(goto-char.tracking-marker). | 
| 524a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 2d 31 29  | ...............(forward-line.-1) | 
| 524c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61  | ................(when.(looking-a | 
| 524e0 |  74 20 22 5e 23 5c 5c 2b 65 6e 64 5f 74 6f 6f 6c    22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | t."^#\\+end_tool").............. | 
| 52500 |  20 20 20 20 28 6f 72 67 2d 63 79 63 6c 65 29 29    29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e  | ....(org-cycle))))))))))..(defun | 
| 52520 |  20 67 70 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 74    6f 6f 6c 2d 63 61 6c 6c 20 28 6e 61 6d 65 20 61  | .gptel--format-tool-call.(name.a | 
| 52540 |  72 67 2d 76 61 6c 75 65 73 29 0a 20 20 22 46 6f    72 6d 61 74 20 61 20 74 6f 6f 6c 20 63 61 6c 6c  | rg-values)..."Format.a.tool.call | 
| 52560 |  20 66 6f 72 20 64 69 73 70 6c 61 79 20 69 6e 20    74 68 65 20 62 75 66 66 65 72 2e 0a 0a 4e 41 4d  | .for.display.in.the.buffer...NAM | 
| 52580 |  45 20 61 6e 64 20 41 52 47 2d 56 41 4c 55 45 53    20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 61 6e  | E.and.ARG-VALUES.are.the.name.an | 
| 525a0 |  64 20 61 72 67 75 6d 65 6e 74 73 20 66 6f 72 20    74 68 65 20 63 61 6c 6c 2e 22 0a 20 20 28 66 6f  | d.arguments.for.the.call."...(fo | 
| 525c0 |  72 6d 61 74 20 22 28 25 73 20 25 73 29 5c 6e 22    0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70  | rmat."(%s.%s)\n"...........(prop | 
| 525e0 |  65 72 74 69 7a 65 20 6e 61 6d 65 20 27 66 61 63    65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79  | ertize.name.'face.'font-lock-key | 
| 52600 |  77 6f 72 64 2d 66 61 63 65 29 0a 20 20 20 20 20    20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65  | word-face)...........(propertize | 
| 52620 |  0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70    63 6f 6e 63 61 74 20 28 6c 61 6d 62 64 61 20 28  | ............(mapconcat.(lambda.( | 
| 52640 |  61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f  | arg).........................(co | 
| 52660 |  6e 64 20 28 28 73 74 72 69 6e 67 70 20 61 72 67    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nd.((stringp.arg)............... | 
| 52680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e  | .................(prin1-to-strin | 
| 526a0 |  67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | g............................... | 
| 526c0 |  20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78    70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20  | ..(replace-regexp-in-string..... | 
| 526e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e  | ............................."\n | 
| 52700 |  22 20 22 e2 ae 90 22 20 28 74 72 75 6e 63 61 74    65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74  | "."...".(truncate-string-to-widt | 
| 52720 |  68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | h............................... | 
| 52740 |  20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67    20 28 66 6c 6f 6f 72 20 28 77 69 6e 64 6f 77 2d  | .............arg.(floor.(window- | 
| 52760 |  77 69 64 74 68 29 20 32 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | width).2)....................... | 
| 52780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 74 29 29  | .....................nil.nil.t)) | 
| 527a0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )).............................. | 
| 527c0 |  20 28 74 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74    72 69 6e 67 20 61 72 67 29 29 29 29 0a 20 20 20  | .(t.(prin1-to-string.arg)))).... | 
| 527e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 61 72 67 2d 76 61 6c 75 65 73 20 22 20  | ...................arg-values.". | 
| 52800 |  22 29 0a 20 20 20 20 20 20 20 20 20 20 20 27 66    61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 63  | ")............'face.'font-lock-c | 
| 52820 |  6f 6e 73 74 61 6e 74 2d 66 61 63 65 29 29 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61  | onstant-face)))..(defun.gptel--a | 
| 52840 |  63 63 65 70 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73    20 28 26 6f 70 74 69 6f 6e 61 6c 20 72 65 73 70  | ccept-tool-calls.(&optional.resp | 
| 52860 |  6f 6e 73 65 20 6f 76 29 0a 20 20 28 69 6e 74 65    72 61 63 74 69 76 65 20 28 70 63 61 73 65 2d 6c  | onse.ov)...(interactive.(pcase-l | 
| 52880 |  65 74 20 28 28 60 28 2c 72 65 73 70 20 2e 20 2c    6f 29 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f  | et.((`(,resp...,o).(get-char-pro | 
| 528a0 |  70 65 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61    79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | perty-and-overlay............... | 
| 528c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f  | .............................(po | 
| 528e0 |  69 6e 74 29 20 27 67 70 74 65 6c 2d 74 6f 6f 6c    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | int).'gptel-tool)))............. | 
| 52900 |  20 20 20 20 20 28 6c 69 73 74 20 72 65 73 70 20    6f 29 29 29 0a 20 20 28 67 70 74 65 6c 2d 2d 75  | .....(list.resp.o)))...(gptel--u | 
| 52920 |  70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 43    61 6c 6c 69 6e 67 20 74 6f 6f 6c 2e 2e 2e 22 20  | pdate-status.".Calling.tool...". | 
| 52940 |  27 6d 6f 64 65 2d 6c 69 6e 65 2d 65 6d 70 68 61    73 69 73 29 0a 20 20 28 6d 65 73 73 61 67 65 20  | 'mode-line-emphasis)...(message. | 
| 52960 |  22 43 6f 6e 74 69 6e 75 69 6e 67 20 71 75 65 72    79 2e 2e 2e 22 29 0a 20 20 28 63 6c 2d 6c 6f 6f  | "Continuing.query...")...(cl-loo | 
| 52980 |  70 20 66 6f 72 20 28 74 6f 6f 6c 2d 73 70 65 63    20 61 72 67 2d 76 61 6c 75 65 73 20 70 72 6f 63  | p.for.(tool-spec.arg-values.proc | 
| 529a0 |  65 73 73 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 29    20 69 6e 20 72 65 73 70 6f 6e 73 65 0a 20 20 20  | ess-tool-result).in.response.... | 
| 529c0 |  20 20 20 20 20 20 20 20 64 6f 0a 20 20 20 20 20    20 20 20 20 20 20 28 69 66 20 28 67 70 74 65 6c  | ........do............(if.(gptel | 
| 529e0 |  2d 74 6f 6f 6c 2d 61 73 79 6e 63 20 74 6f 6f 6c    2d 73 70 65 63 29 0a 20 20 20 20 20 20 20 20 20  | -tool-async.tool-spec).......... | 
| 52a00 |  20 20 20 20 20 20 28 61 70 70 6c 79 20 28 67 70    74 65 6c 2d 74 6f 6f 6c 2d 66 75 6e 63 74 69 6f  | ......(apply.(gptel-tool-functio | 
| 52a20 |  6e 20 74 6f 6f 6c 2d 73 70 65 63 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n.tool-spec).................... | 
| 52a40 |  20 20 20 70 72 6f 63 65 73 73 2d 74 6f 6f 6c 2d    72 65 73 75 6c 74 20 61 72 67 2d 76 61 6c 75 65  | ...process-tool-result.arg-value | 
| 52a60 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6c 65 74 20 28 28 72 65 73 75 6c 74 0a 20 20  | s)..............(let.((result... | 
| 52a80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73  | ..................(condition-cas | 
| 52aa0 |  65 20 65 72 72 64 61 74 61 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.errdata....................... | 
| 52ac0 |  20 20 28 61 70 70 6c 79 20 28 67 70 74 65 6c 2d    74 6f 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 74 6f  | ..(apply.(gptel-tool-function.to | 
| 52ae0 |  6f 6c 2d 73 70 65 63 29 20 61 72 67 2d 76 61 6c    75 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ol-spec).arg-values)............ | 
| 52b00 |  20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f    72 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 67  | ...........(error.(mapconcat.#'g | 
| 52b20 |  70 74 65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20    65 72 72 64 61 74 61 20 22 20 22 29 29 29 29 29  | ptel--to-string.errdata."."))))) | 
| 52b40 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 65 73 73  | ................(funcall.process | 
| 52b60 |  2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 72 65 73    75 6c 74 29 29 29 29 0a 20 20 28 61 6e 64 20 28  | -tool-result.result))))...(and.( | 
| 52b80 |  6f 76 65 72 6c 61 79 70 20 6f 76 29 20 28 64 65    6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29  | overlayp.ov).(delete-overlay.ov) | 
| 52ba0 |  29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c    2d 2d 72 65 6a 65 63 74 2d 74 6f 6f 6c 2d 63 61  | ))..(defun.gptel--reject-tool-ca | 
| 52bc0 |  6c 6c 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 5f    72 65 73 70 6f 6e 73 65 20 6f 76 29 0a 20 20 28  | lls.(&optional._response.ov)...( | 
| 52be0 |  69 6e 74 65 72 61 63 74 69 76 65 20 28 70 63 61    73 65 2d 6c 65 74 20 28 28 60 28 2c 72 65 73 70  | interactive.(pcase-let.((`(,resp | 
| 52c00 |  20 2e 20 2c 6f 29 20 28 67 65 74 2d 63 68 61 72    2d 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f 76  | ...,o).(get-char-property-and-ov | 
| 52c20 |  65 72 6c 61 79 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | erlay........................... | 
| 52c40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d  | .................(point).'gptel- | 
| 52c60 |  74 6f 6f 6c 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 72  | tool)))..................(list.r | 
| 52c80 |  65 73 70 20 6f 29 29 29 0a 20 20 28 67 70 74 65    6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73  | esp.o)))...(gptel--update-status | 
| 52ca0 |  20 22 20 54 6f 6f 6c 73 20 63 61 6e 63 65 6c 6c    65 64 22 20 27 65 72 72 6f 72 29 0a 20 20 28 6d  | .".Tools.cancelled".'error)...(m | 
| 52cc0 |  65 73 73 61 67 65 20 28 73 75 62 73 74 69 74 75    74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a  | essage.(substitute-command-keys. | 
| 52ce0 |  20 20 20 20 20 20 20 20 20 20 20 20 22 54 6f 6f    6c 20 63 61 6c 6c 73 20 63 61 6e 63 65 6c 65 64  | ............"Tool.calls.canceled | 
| 52d00 |  2e 20 20 5c 5c 5b 67 70 74 65 6c 2d 6d 65 6e 75    5d 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 68  | ...\\[gptel-menu].to.continue.th | 
| 52d20 |  65 6d 21 22 29 29 0a 20 20 28 61 6e 64 20 28 6f    76 65 72 6c 61 79 70 20 6f 76 29 20 28 64 65 6c  | em!"))...(and.(overlayp.ov).(del | 
| 52d40 |  65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29    29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d  | ete-overlay.ov)))..(defun.gptel- | 
| 52d60 |  2d 64 69 73 70 61 74 63 68 2d 74 6f 6f 6c 2d 63    61 6c 6c 73 20 28 63 68 6f 69 63 65 29 0a 20 20  | -dispatch-tool-calls.(choice)... | 
| 52d80 |  28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20    28 6c 69 73 74 0a 20 20 20 20 28 6c 65 74 20 28  | (interactive....(list.....(let.( | 
| 52da0 |  28 63 68 6f 69 63 65 73 20 27 28 28 3f 79 20 22    79 65 73 22 29 20 28 3f 6e 20 22 64 6f 20 6e 6f  | (choices.'((?y."yes").(?n."do.no | 
| 52dc0 |  74 68 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 6b  | thing")......................(?k | 
| 52de0 |  20 22 63 61 6e 63 65 6c 20 72 65 71 75 65 73 74    22 29 20 28 3f 69 20 22 69 6e 73 70 65 63 74 20  | ."cancel.request").(?i."inspect. | 
| 52e00 |  63 61 6c 6c 28 73 29 22 29 29 29 29 0a 20 20 20    20 20 20 28 72 65 61 64 2d 6d 75 6c 74 69 70 6c  | call(s)")))).......(read-multipl | 
| 52e20 |  65 2d 63 68 6f 69 63 65 20 22 52 75 6e 20 74 6f    6f 6c 20 63 61 6c 6c 73 3f 20 22 20 63 68 6f 69  | e-choice."Run.tool.calls?.".choi | 
| 52e40 |  63 65 73 29 29 29 29 0a 20 20 28 70 63 61 73 65    20 28 63 61 72 20 63 68 6f 69 63 65 29 0a 20 20  | ces))))...(pcase.(car.choice)... | 
| 52e60 |  20 20 28 3f 79 20 28 63 61 6c 6c 2d 69 6e 74 65    72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65  | ..(?y.(call-interactively.#'gpte | 
| 52e80 |  6c 2d 2d 61 63 63 65 70 74 2d 74 6f 6f 6c 2d 63    61 6c 6c 73 29 29 0a 20 20 20 20 28 3f 6b 20 28  | l--accept-tool-calls)).....(?k.( | 
| 52ea0 |  63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65    6c 79 20 23 27 67 70 74 65 6c 2d 2d 72 65 6a 65  | call-interactively.#'gptel--reje | 
| 52ec0 |  63 74 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 29 29 0a    20 20 20 20 28 3f 69 20 28 67 70 74 65 6c 2d 2d  | ct-tool-calls)).....(?i.(gptel-- | 
| 52ee0 |  69 6e 73 70 65 63 74 2d 66 73 6d 20 67 70 74 65    6c 2d 2d 66 73 6d 2d 6c 61 73 74 29 29 29 29 0a  | inspect-fsm.gptel--fsm-last)))). | 
| 52f00 |  0a 0c 0a 3b 3b 3b 20 50 72 65 73 65 74 73 0a 3b    3b 3b 3b 20 50 72 65 73 65 74 73 20 69 6d 70 6c  | ...;;;.Presets.;;;;.Presets.impl | 
| 52f20 |  65 6d 65 6e 74 61 74 69 6f 6e 0a 28 64 65 66 76    61 72 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d  | ementation.(defvar.gptel--known- | 
| 52f40 |  70 72 65 73 65 74 73 20 6e 69 6c 0a 20 20 22 41    6c 69 73 74 20 6f 66 20 70 72 65 73 65 74 73 20  | presets.nil..."Alist.of.presets. | 
| 52f60 |  66 6f 72 20 67 70 74 65 6c 2e 0a 0a 45 61 63 68    20 65 6e 74 72 79 20 6d 61 70 73 20 61 20 70 72  | for.gptel...Each.entry.maps.a.pr | 
| 52f80 |  65 73 65 74 20 6e 61 6d 65 20 28 61 20 73 79 6d    62 6f 6c 29 20 74 6f 20 61 20 70 6c 69 73 74 20  | eset.name.(a.symbol).to.a.plist. | 
| 52fa0 |  6f 66 0a 73 70 65 63 69 66 69 63 61 74 69 6f 6e    73 20 28 73 65 65 20 60 67 70 74 65 6c 2d 6d 61  | of.specifications.(see.`gptel-ma | 
| 52fc0 |  6b 65 2d 70 72 65 73 65 74 27 29 2e 22 29 0a 0a    28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b  | ke-preset').")..(defun.gptel-mak | 
| 52fe0 |  65 2d 70 72 65 73 65 74 20 28 6e 61 6d 65 20 26    72 65 73 74 20 6b 65 79 73 29 0a 20 20 22 44 65  | e-preset.(name.&rest.keys)..."De | 
| 53000 |  66 69 6e 65 20 61 20 67 70 74 65 6c 20 70 72 65    73 65 74 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a  | fine.a.gptel.preset.with.NAME... | 
| 53020 |  41 20 70 72 65 73 65 74 20 69 73 20 61 20 63 6f    6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 67 70 74  | A.preset.is.a.combination.of.gpt | 
| 53040 |  65 6c 20 6f 70 74 69 6f 6e 73 20 69 6e 74 65 6e    64 65 64 20 74 6f 20 62 65 20 61 70 70 6c 69 65  | el.options.intended.to.be.applie | 
| 53060 |  64 20 61 6e 64 0a 75 73 65 64 20 74 6f 67 65 74    68 65 72 2e 20 20 50 72 65 73 65 74 73 20 63 61  | d.and.used.together...Presets.ca | 
| 53080 |  6e 20 6d 61 6b 65 20 69 74 20 6c 65 73 73 20 74    65 64 69 6f 75 73 20 74 6f 20 63 68 61 6e 67 65  | n.make.it.less.tedious.to.change | 
| 530a0 |  20 67 70 74 65 6c 0a 73 65 74 74 69 6e 67 73 20    6f 6e 20 74 68 65 20 66 6c 79 2e 0a 0a 54 79 70  | .gptel.settings.on.the.fly...Typ | 
| 530c0 |  69 63 61 6c 6c 79 20 74 68 69 73 20 77 69 6c 6c    20 69 6e 63 6c 75 64 65 20 61 20 6d 6f 64 65 6c  | ically.this.will.include.a.model | 
| 530e0 |  2c 20 62 61 63 6b 65 6e 64 2c 20 73 79 73 74 65    6d 20 6d 65 73 73 61 67 65 20 61 6e 64 20 70 65  | ,.backend,.system.message.and.pe | 
| 53100 |  72 68 61 70 73 0a 73 6f 6d 65 20 74 6f 6f 6c 73    2c 20 62 75 74 20 61 6e 79 20 73 65 74 20 6f 66  | rhaps.some.tools,.but.any.set.of | 
| 53120 |  20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 20 63    61 6e 20 62 65 20 73 65 74 20 74 68 69 73 20 77  | .gptel.options.can.be.set.this.w | 
| 53140 |  61 79 2e 0a 0a 4e 41 4d 45 20 6d 75 73 74 20 62    65 20 61 20 73 79 6d 62 6f 6c 2e 20 20 4b 45 59  | ay...NAME.must.be.a.symbol...KEY | 
| 53160 |  53 20 69 73 20 61 20 70 6c 69 73 74 20 63 6f 72    72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68  | S.is.a.plist.corresponding.to.th | 
| 53180 |  65 20 6f 70 74 69 6f 6e 73 0a 62 65 69 6e 67 20    73 65 74 2e 20 20 41 6c 6c 20 4b 45 59 53 20 61  | e.options.being.set...All.KEYS.a | 
| 531a0 |  72 65 20 6f 70 74 69 6f 6e 61 6c 2e 0a 0a 52 65    63 6f 67 6e 69 7a 65 64 20 6b 65 79 73 3a 0a 0a  | re.optional...Recognized.keys:.. | 
| 531c0 |  44 45 53 43 52 49 50 54 49 4f 4e 20 69 73 20 61    20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20  | DESCRIPTION.is.a.description.of. | 
| 531e0 |  74 68 65 20 70 72 65 73 65 74 2c 20 75 73 65 64    20 77 68 65 6e 20 73 65 6c 65 63 74 69 6e 67 20  | the.preset,.used.when.selecting. | 
| 53200 |  61 0a 70 72 65 73 65 74 2e 0a 0a 50 41 52 45 4e    54 53 20 69 73 20 61 20 70 72 65 73 65 74 20 6e  | a.preset...PARENTS.is.a.preset.n | 
| 53220 |  61 6d 65 20 28 6f 72 20 6c 69 73 74 20 6f 66 20    70 72 65 73 65 74 20 6e 61 6d 65 73 29 20 74 6f  | ame.(or.list.of.preset.names).to | 
| 53240 |  20 61 70 70 6c 79 20 62 65 66 6f 72 65 20 74 68    69 73 0a 6f 6e 65 2e 0a 0a 50 52 45 20 61 6e 64  | .apply.before.this.one...PRE.and | 
| 53260 |  20 50 4f 53 54 20 61 72 65 20 66 75 6e 63 74 69    6f 6e 73 20 74 6f 20 72 75 6e 20 62 65 66 6f 72  | .POST.are.functions.to.run.befor | 
| 53280 |  65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65 20    70 72 65 73 65 74 20 69 73 0a 61 70 70 6c 69 65  | e.and.after.the.preset.is.applie | 
| 532a0 |  64 2e 20 20 54 68 65 79 20 74 61 6b 65 20 6e 6f    20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 42 41 43  | d...They.take.no.arguments...BAC | 
| 532c0 |  4b 45 4e 44 20 69 73 20 74 68 65 20 67 70 74 65    6c 2d 62 61 63 6b 65 6e 64 20 74 6f 20 73 65 74  | KEND.is.the.gptel-backend.to.set | 
| 532e0 |  2c 20 6f 72 20 69 74 73 20 6e 61 6d 65 20 28 6c    69 6b 65 20 5c 22 43 68 61 74 47 50 54 5c 22 29  | ,.or.its.name.(like.\"ChatGPT\") | 
| 53300 |  2e 0a 0a 4d 4f 44 45 4c 20 69 73 20 74 68 65 20    67 70 74 65 6c 2d 6d 6f 64 65 6c 2e 0a 0a 53 59  | ...MODEL.is.the.gptel-model...SY | 
| 53320 |  53 54 45 4d 20 69 73 20 74 68 65 20 64 69 72 65    63 74 69 76 65 2e 20 49 74 20 63 61 6e 20 62 65  | STEM.is.the.directive..It.can.be | 
| 53340 |  0a 2d 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65    73 73 61 67 65 20 28 61 20 73 74 72 69 6e 67 29  | .-.the.system.message.(a.string) | 
| 53360 |  2c 0a 2d 20 61 20 6c 69 73 74 20 6f 66 20 73 74    72 69 6e 67 73 20 28 61 20 63 6f 6e 76 65 72 73  | ,.-.a.list.of.strings.(a.convers | 
| 53380 |  61 74 69 6f 6e 20 74 65 6d 70 6c 61 74 65 29 0a    2d 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20  | ation.template).-.or.a.function. | 
| 533a0 |  28 64 79 6e 61 6d 69 63 20 73 79 73 74 65 6d 20    6d 65 73 73 61 67 65 29 2e 0a 2d 20 49 74 20 63  | (dynamic.system.message)..-.It.c | 
| 533c0 |  61 6e 20 61 6c 73 6f 20 62 65 20 61 20 73 79 6d    62 6f 6c 20 6e 61 6d 69 6e 67 20 61 20 64 69 72  | an.also.be.a.symbol.naming.a.dir | 
| 533e0 |  65 63 74 69 76 65 20 69 6e 20 60 67 70 74 65 6c    2d 64 69 72 65 63 74 69 76 65 73 27 2e 0a 0a 54  | ective.in.`gptel-directives'...T | 
| 53400 |  4f 4f 4c 53 20 69 73 20 61 20 6c 69 73 74 20 6f    66 20 67 70 74 65 6c 20 74 6f 6f 6c 73 20 6f 72  | OOLS.is.a.list.of.gptel.tools.or | 
| 53420 |  20 74 6f 6f 6c 20 6e 61 6d 65 73 2c 20 6c 69 6b    65 0a 5c 5c 3d 27 28 5c 22 72 65 61 64 5f 75 72  | .tool.names,.like.\\='(\"read_ur | 
| 53440 |  6c 5c 22 20 5c 22 72 65 61 64 5f 62 75 66 66 65    72 5c 22 20 2e 2e 2e 29 0a 0a 52 65 63 6f 67 6e  | l\".\"read_buffer\"....)..Recogn | 
| 53460 |  69 7a 65 64 20 6b 65 79 73 20 61 72 65 20 6e 6f    74 20 6c 69 6d 69 74 65 64 20 74 6f 20 74 68 65  | ized.keys.are.not.limited.to.the | 
| 53480 |  20 61 62 6f 76 65 2e 20 20 41 6e 79 20 6f 74 68    65 72 20 6b 65 79 20 28 6c 69 6b 65 0a 60 3a 66  | .above...Any.other.key.(like.`:f | 
| 534a0 |  6f 6f 27 29 20 63 6f 72 72 65 73 70 6f 6e 64 73    20 74 6f 20 74 68 65 20 76 61 6c 75 65 20 6f 66  | oo').corresponds.to.the.value.of | 
| 534c0 |  20 65 69 74 68 65 72 20 60 67 70 74 65 6c 2d 66    6f 6f 27 20 28 70 72 65 66 65 72 72 65 64 29 20  | .either.`gptel-foo'.(preferred). | 
| 534e0 |  6f 72 0a 60 67 70 74 65 6c 2d 2d 66 6f 6f 27 2e    0a 2d 20 53 6f 20 54 4f 4f 4c 53 20 63 6f 72 72  | or.`gptel--foo'..-.So.TOOLS.corr | 
| 53500 |  65 73 70 6f 6e 64 73 20 74 6f 20 60 67 70 74 65    6c 2d 74 6f 6f 6c 73 27 2c 0a 2d 20 43 4f 4e 46  | esponds.to.`gptel-tools',.-.CONF | 
| 53520 |  49 52 4d 2d 54 4f 4f 4c 2d 43 41 4c 4c 53 20 74    6f 20 60 67 70 74 65 6c 2d 63 6f 6e 66 69 72 6d  | IRM-TOOL-CALLS.to.`gptel-confirm | 
| 53540 |  2d 74 6f 6f 6c 2d 63 61 6c 6c 73 27 2c 0a 2d 20    54 45 4d 50 45 52 41 54 55 52 45 20 74 6f 20 60  | -tool-calls',.-.TEMPERATURE.to.` | 
| 53560 |  67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72    65 27 20 61 6e 64 20 73 6f 20 6f 6e 2e 0a 53 65  | gptel-temperature'.and.so.on..Se | 
| 53580 |  65 20 67 70 74 65 6c 27 73 20 63 75 73 74 6f 6d    69 7a 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20  | e.gptel's.customization.options. | 
| 535a0 |  66 6f 72 20 61 6c 6c 20 61 76 61 69 6c 61 62 6c    65 20 73 65 74 74 69 6e 67 73 2e 22 0a 20 20 28  | for.all.available.settings."...( | 
| 535c0 |  64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20    31 29 29 0a 20 20 28 69 66 2d 6c 65 74 2a 20 28  | declare.(indent.1))...(if-let*.( | 
| 535e0 |  28 70 20 28 61 73 73 6f 63 20 6e 61 6d 65 20 67    70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73  | (p.(assoc.name.gptel--known-pres | 
| 53600 |  65 74 73 29 29 29 0a 20 20 20 20 20 20 28 73 65    74 63 64 72 20 70 20 6b 65 79 73 29 0a 20 20 20  | ets))).......(setcdr.p.keys).... | 
| 53620 |  20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 6b 6e    6f 77 6e 2d 70 72 65 73 65 74 73 20 20 20 20 20  | .(setq.gptel--known-presets..... | 
| 53640 |  20 20 20 20 20 3b 41 64 64 20 61 74 20 65 6e 64    20 6f 66 20 70 72 65 73 65 74 73 20 66 6f 72 20  | .....;Add.at.end.of.presets.for. | 
| 53660 |  6d 65 6e 75 20 6f 72 64 65 72 69 6e 67 0a 20 20    20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 67  | menu.ordering...........(nconc.g | 
| 53680 |  70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73    65 74 73 20 28 6c 69 73 74 20 28 63 6f 6e 73 20  | ptel--known-presets.(list.(cons. | 
| 536a0 |  6e 61 6d 65 20 6b 65 79 73 29 29 29 29 29 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 67 65  | name.keys))))))..(defun.gptel-ge | 
| 536c0 |  74 2d 70 72 65 73 65 74 20 28 6e 61 6d 65 29 0a    20 20 22 47 65 74 20 74 68 65 20 67 70 74 65 6c  | t-preset.(name)..."Get.the.gptel | 
| 536e0 |  20 70 72 65 73 65 74 20 73 70 65 63 20 77 69 74    68 20 4e 41 4d 45 2e 22 0a 20 20 28 61 6c 69 73  | .preset.spec.with.NAME."...(alis | 
| 53700 |  74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c    2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 20  | t-get.name.gptel--known-presets. | 
| 53720 |  6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29    29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d  | nil.nil.#'equal))..(defun.gptel- | 
| 53740 |  2d 73 61 76 65 2d 70 72 65 73 65 74 20 28 6e 61    6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 64 65 73  | -save-preset.(name.&optional.des | 
| 53760 |  63 72 69 70 74 69 6f 6e 29 0a 20 20 22 53 61 76    65 20 67 70 74 65 6c 27 73 20 63 75 72 72 65 6e  | cription)..."Save.gptel's.curren | 
| 53780 |  74 20 73 65 74 74 69 6e 67 73 20 61 73 20 61 20    70 72 65 73 65 74 20 77 69 74 68 20 4e 41 4d 45  | t.settings.as.a.preset.with.NAME | 
| 537a0 |  2e 0a 0a 4e 41 4d 45 20 6d 75 73 74 20 62 65 20    61 20 73 79 6d 62 6f 6c 2e 20 20 44 45 53 43 52  | ...NAME.must.be.a.symbol...DESCR | 
| 537c0 |  49 50 54 49 4f 4e 20 69 73 20 61 64 64 65 64 20    69 66 20 70 72 6f 76 69 64 65 64 2e 20 20 49 6e  | IPTION.is.added.if.provided...In | 
| 537e0 |  20 61 64 64 69 74 69 6f 6e 0a 74 6f 20 72 65 67    69 73 74 65 72 69 6e 67 20 74 68 65 20 70 72 65  | .addition.to.registering.the.pre | 
| 53800 |  73 65 74 2c 20 65 6c 69 73 70 20 63 6f 64 65 20    74 6f 20 64 6f 20 74 68 65 20 73 61 6d 65 20 69  | set,.elisp.code.to.do.the.same.i | 
| 53820 |  73 20 63 6f 70 69 65 64 20 74 6f 20 74 68 65 0a    6b 69 6c 6c 2d 72 69 6e 67 2e 22 0a 20 20 28 69  | s.copied.to.the.kill-ring."...(i | 
| 53840 |  6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c    69 73 74 20 28 69 6e 74 65 72 6e 20 28 63 6f 6d  | nteractive....(list.(intern.(com | 
| 53860 |  70 6c 65 74 69 6e 67 2d 72 65 61 64 20 22 53 61    76 65 20 67 70 74 65 6c 20 73 65 74 74 69 6e 67  | pleting-read."Save.gptel.setting | 
| 53880 |  73 20 74 6f 20 28 65 78 69 73 74 69 6e 67 20 6f    72 20 6e 65 77 29 20 70 72 65 73 65 74 3a 20 22  | s.to.(existing.or.new).preset:." | 
| 538a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 538c0 |  20 20 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d    70 72 65 73 65 74 73 29 29 0a 20 20 20 20 20 20  | ...gptel--known-presets))....... | 
| 538e0 |  20 20 20 28 72 65 61 64 2d 73 74 72 69 6e 67 20    22 44 65 73 63 72 69 70 74 69 6f 6e 20 28 6f 70  | ...(read-string."Description.(op | 
| 53900 |  74 69 6f 6e 61 6c 29 3a 20 22 29 29 29 0a 20 20    28 6c 65 74 20 28 28 70 72 65 73 65 74 2d 63 6f  | tional):.")))...(let.((preset-co | 
| 53920 |  64 65 0a 20 20 20 20 20 20 20 20 20 60 28 67 70    74 65 6c 2d 6d 61 6b 65 2d 70 72 65 73 65 74 20  | de..........`(gptel-make-preset. | 
| 53940 |  27 2c 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20    20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 2c  | ',name............:description., | 
| 53960 |  28 77 68 65 6e 20 28 61 6e 64 20 64 65 73 63 72    69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20  | (when.(and.description.......... | 
| 53980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6e 6f 74 20 28 73 74 72  | .......................(not.(str | 
| 539a0 |  69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 64 65 73 63    72 69 70 74 69 6f 6e 29 29 29 0a 20 20 20 20 20  | ing-blank-p.description)))...... | 
| 539c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 64 65 73 63 72 69 70 74 69 6f 6e  | .....................description | 
| 539e0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 62 61    63 6b 65 6e 64 20 2c 28 67 70 74 65 6c 2d 62 61  | )............:backend.,(gptel-ba | 
| 53a00 |  63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c    2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20  | ckend-name.gptel-backend)....... | 
| 53a20 |  20 20 20 20 20 3a 6d 6f 64 65 6c 20 27 2c 67 70    74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20  | .....:model.',gptel-model....... | 
| 53a40 |  20 20 20 20 20 3a 73 79 73 74 65 6d 20 2c 28 69    66 2d 6c 65 74 2a 20 28 28 64 69 72 65 63 74 69  | .....:system.,(if-let*.((directi | 
| 53a60 |  76 65 20 28 63 61 72 2d 73 61 66 65 20 28 72 61    73 73 6f 63 20 67 70 74 65 6c 2d 2d 73 79 73 74  | ve.(car-safe.(rassoc.gptel--syst | 
| 53a80 |  65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | em-message...................... | 
| 53aa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67  | ...............................g | 
| 53ac0 |  70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 29    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ptel-directives))))............. | 
| 53ae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 60 27 2c    64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20 20  | .............`',directive....... | 
| 53b00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65  | ................gptel--system-me | 
| 53b20 |  73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20    20 20 3a 74 6f 6f 6c 73 20 27 2c 28 6d 61 70 63  | ssage)............:tools.',(mapc | 
| 53b40 |  61 72 20 23 27 67 70 74 65 6c 2d 74 6f 6f 6c 2d    6e 61 6d 65 20 67 70 74 65 6c 2d 74 6f 6f 6c 73  | ar.#'gptel-tool-name.gptel-tools | 
| 53b60 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 74    72 65 61 6d 20 2c 67 70 74 65 6c 2d 73 74 72 65  | )............:stream.,gptel-stre | 
| 53b80 |  61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 74    65 6d 70 65 72 61 74 75 72 65 20 2c 67 70 74 65  | am............:temperature.,gpte | 
| 53ba0 |  6c 2d 74 65 6d 70 65 72 61 74 75 72 65 0a 20 20    20 20 20 20 20 20 20 20 20 3a 6d 61 78 2d 74 6f  | l-temperature............:max-to | 
| 53bc0 |  6b 65 6e 73 20 2c 67 70 74 65 6c 2d 6d 61 78 2d    74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20  | kens.,gptel-max-tokens.......... | 
| 53be0 |  20 20 3a 75 73 65 2d 63 6f 6e 74 65 78 74 20 27    2c 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65  | ..:use-context.',gptel-use-conte | 
| 53c00 |  78 74 0a 20 20 20 20 20 20 20 20 20 20 20 3a 74    72 61 63 6b 2d 6d 65 64 69 61 20 2c 67 70 74 65  | xt............:track-media.,gpte | 
| 53c20 |  6c 2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20    20 20 20 20 20 20 20 20 20 3a 69 6e 63 6c 75 64  | l-track-media............:includ | 
| 53c40 |  65 2d 72 65 61 73 6f 6e 69 6e 67 20 2c 28 6c 65    74 20 28 28 72 65 61 73 6f 6e 69 6e 67 20 67 70  | e-reasoning.,(let.((reasoning.gp | 
| 53c60 |  74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73    6f 6e 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20  | tel-include-reasoning))......... | 
| 53c80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28  | ...........................(if.( | 
| 53ca0 |  65 71 20 72 65 61 73 6f 6e 69 6e 67 20 27 69 67    6e 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20  | eq.reasoning.'ignore)........... | 
| 53cc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 69  | .............................''i | 
| 53ce0 |  67 6e 6f 72 65 20 72 65 61 73 6f 6e 69 6e 67 29    29 29 29 29 0a 20 20 20 20 28 6b 69 6c 6c 2d 6e  | gnore.reasoning))))).....(kill-n | 
| 53d00 |  65 77 20 28 70 70 2d 74 6f 2d 73 74 72 69 6e 67    20 70 72 65 73 65 74 2d 63 6f 64 65 29 29 0a 20  | ew.(pp-to-string.preset-code)).. | 
| 53d20 |  20 20 20 28 65 76 61 6c 20 70 72 65 73 65 74 2d    63 6f 64 65 29 0a 20 20 20 20 28 6d 65 73 73 61  | ...(eval.preset-code).....(messa | 
| 53d40 |  67 65 20 22 50 72 65 73 65 74 20 25 73 20 73 61    76 65 64 2e 20 28 4c 69 73 70 20 65 78 70 72 65  | ge."Preset.%s.saved..(Lisp.expre | 
| 53d60 |  73 73 69 6f 6e 20 66 6f 72 20 70 72 65 73 65 74    20 73 61 76 65 64 20 74 6f 20 6b 69 6c 6c 2d 72  | ssion.for.preset.saved.to.kill-r | 
| 53d80 |  69 6e 67 29 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28  | ing)"..............(propertize.( | 
| 53da0 |  73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6e 61 6d 65    29 20 27 66 61 63 65 20 27 68 69 67 68 6c 69 67  | symbol-name.name).'face.'highlig | 
| 53dc0 |  68 74 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20    67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64  | ht))))..(defvar.gptel--rewrite-d | 
| 53de0 |  69 72 65 63 74 69 76 65 29 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 61 70 70 6c 79 2d 70 72  | irective).(defun.gptel--apply-pr | 
| 53e00 |  65 73 65 74 20 28 70 72 65 73 65 74 20 26 6f 70    74 69 6f 6e 61 6c 20 73 65 74 74 65 72 29 0a 20  | eset.(preset.&optional.setter).. | 
| 53e20 |  20 22 41 70 70 6c 79 20 67 70 74 65 6c 20 50 52    45 53 45 54 20 77 69 74 68 20 53 45 54 54 45 52  | ."Apply.gptel.PRESET.with.SETTER | 
| 53e40 |  2e 0a 0a 50 52 45 53 45 54 20 69 73 20 74 68 65    20 6e 61 6d 65 20 6f 66 20 61 20 70 72 65 73 65  | ...PRESET.is.the.name.of.a.prese | 
| 53e60 |  74 2c 20 6f 72 20 61 20 73 70 65 63 20 6f 66 20    74 68 65 20 66 6f 72 6d 0a 20 28 4e 41 4d 45 20  | t,.or.a.spec.of.the.form..(NAME. | 
| 53e80 |  3a 4b 45 59 31 20 56 41 4c 31 20 3a 4b 45 59 32    20 56 41 4c 32 20 2e 2e 2e 29 2e 0a 0a 53 45 54  | :KEY1.VAL1.:KEY2.VAL2....)...SET | 
| 53ea0 |  54 45 52 20 69 73 20 74 68 65 20 66 75 6e 63 74    69 6f 6e 20 75 73 65 64 20 74 6f 20 73 65 74 20  | TER.is.the.function.used.to.set. | 
| 53ec0 |  74 68 65 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e    73 2e 20 20 49 74 20 6d 75 73 74 20 61 63 63 65  | the.gptel.options...It.must.acce | 
| 53ee0 |  70 74 0a 74 77 6f 20 61 72 67 75 6d 65 6e 74 73    2c 20 74 68 65 20 73 79 6d 62 6f 6c 20 62 65 69  | pt.two.arguments,.the.symbol.bei | 
| 53f00 |  6e 67 20 73 65 74 20 61 6e 64 20 74 68 65 20 76    61 6c 75 65 20 74 6f 20 73 65 74 20 69 74 20 74  | ng.set.and.the.value.to.set.it.t | 
| 53f20 |  6f 2e 20 20 49 74 0a 64 65 66 61 75 6c 74 73 20    74 6f 20 60 73 65 74 27 2c 20 61 6e 64 20 63 61  | o...It.defaults.to.`set',.and.ca | 
| 53f40 |  6e 20 62 65 20 73 65 74 20 74 6f 20 61 20 64 69    66 66 65 72 65 6e 74 20 66 75 6e 63 74 69 6f 6e  | n.be.set.to.a.different.function | 
| 53f60 |  20 74 6f 20 28 66 6f 72 0a 65 78 61 6d 70 6c 65    29 20 61 70 70 6c 79 20 74 68 65 20 70 72 65 73  | .to.(for.example).apply.the.pres | 
| 53f80 |  65 74 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c    79 2e 22 0a 20 20 28 77 68 65 6e 20 28 6d 65 6d  | et.buffer-locally."...(when.(mem | 
| 53fa0 |  71 20 28 74 79 70 65 2d 6f 66 20 70 72 65 73 65    74 29 20 27 28 73 74 72 69 6e 67 20 73 79 6d 62  | q.(type-of.preset).'(string.symb | 
| 53fc0 |  6f 6c 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28    73 70 65 63 20 28 6f 72 20 28 67 70 74 65 6c 2d  | ol)).....(let.((spec.(or.(gptel- | 
| 53fe0 |  67 65 74 2d 70 72 65 73 65 74 20 70 72 65 73 65    74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | get-preset.preset).............. | 
| 54000 |  20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72    6f 72 20 22 67 70 74 65 6c 20 70 72 65 73 65 74  | .......(user-error."gptel.preset | 
| 54020 |  20 5c 22 25 73 5c 22 3a 20 43 61 6e 6e 6f 74 20    66 69 6e 64 20 70 72 65 73 65 74 2e 22 0a 20 20  | .\"%s\":.Cannot.find.preset."... | 
| 54040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72  | ..............................pr | 
| 54060 |  65 73 65 74 29 29 29 29 0a 20 20 20 20 20 20 28    73 65 74 71 20 70 72 65 73 65 74 20 28 63 6f 6e  | eset)))).......(setq.preset.(con | 
| 54080 |  73 20 70 72 65 73 65 74 20 73 70 65 63 29 29 29    29 0a 20 20 28 75 6e 6c 65 73 73 20 73 65 74 74  | s.preset.spec))))...(unless.sett | 
| 540a0 |  65 72 20 28 73 65 74 71 20 73 65 74 74 65 72 20    23 27 73 65 74 29 29 0a 20 20 28 77 68 65 6e 2d  | er.(setq.setter.#'set))...(when- | 
| 540c0 |  6c 65 74 2a 20 28 28 66 75 6e 63 20 28 70 6c 69    73 74 2d 67 65 74 20 28 63 64 72 20 70 72 65 73  | let*.((func.(plist-get.(cdr.pres | 
| 540e0 |  65 74 29 20 3a 70 72 65 29 29 29 20 28 66 75 6e    63 61 6c 6c 20 66 75 6e 63 29 29 0a 20 20 28 77  | et).:pre))).(funcall.func))...(w | 
| 54100 |  68 65 6e 2d 6c 65 74 2a 20 28 28 70 61 72 65 6e    74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63  | hen-let*.((parents.(plist-get.(c | 
| 54120 |  64 72 20 70 72 65 73 65 74 29 20 3a 70 61 72 65    6e 74 73 29 29 29 0a 20 20 20 20 28 6d 61 70 63  | dr.preset).:parents))).....(mapc | 
| 54140 |  20 23 27 67 70 74 65 6c 2d 2d 61 70 70 6c 79 2d    70 72 65 73 65 74 20 28 65 6e 73 75 72 65 2d 6c  | .#'gptel--apply-preset.(ensure-l | 
| 54160 |  69 73 74 20 70 61 72 65 6e 74 73 29 29 29 0a 20    20 28 6d 61 70 2d 64 6f 0a 20 20 20 28 6c 61 6d  | ist.parents)))...(map-do....(lam | 
| 54180 |  62 64 61 20 28 6b 65 79 20 76 61 6c 29 0a 20 20    20 20 20 28 70 63 61 73 65 20 6b 65 79 0a 20 20  | bda.(key.val)......(pcase.key... | 
| 541a0 |  20 20 20 20 20 28 28 6f 72 20 3a 70 61 72 65 6e    74 73 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20  | .....((or.:parents.:description. | 
| 541c0 |  3a 70 72 65 20 3a 70 6f 73 74 29 20 6e 69 6c 29    0a 20 20 20 20 20 20 20 28 28 6f 72 20 3a 73 79  | :pre.:post).nil)........((or.:sy | 
| 541e0 |  73 74 65 6d 20 3a 73 79 73 74 65 6d 2d 6d 65 73    73 61 67 65 20 3a 72 65 77 72 69 74 65 2d 64 69  | stem.:system-message.:rewrite-di | 
| 54200 |  72 65 63 74 69 76 65 29 0a 20 20 20 20 20 20 20    20 28 6c 65 74 20 28 28 73 79 6d 20 28 69 66 20  | rective).........(let.((sym.(if. | 
| 54220 |  28 65 71 20 6b 65 79 20 3a 72 65 77 72 69 74 65    2d 64 69 72 65 63 74 69 76 65 29 0a 20 20 20 20  | (eq.key.:rewrite-directive)..... | 
| 54240 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69  | ...................'gptel--rewri | 
| 54260 |  74 65 2d 64 69 72 65 63 74 69 76 65 20 27 67 70    74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73  | te-directive.'gptel--system-mess | 
| 54280 |  61 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 28 69 66 20 28 61 6e 64 20 28 73 79 6d 62 6f  | age)))...........(if.(and.(symbo | 
| 542a0 |  6c 70 20 76 61 6c 29 20 28 6e 6f 74 20 28 66 75    6e 63 74 69 6f 6e 70 20 76 61 6c 29 29 29 0a 20  | lp.val).(not.(functionp.val))).. | 
| 542c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66    2d 6c 65 74 2a 20 28 28 64 69 72 65 63 74 69 76  | .............(if-let*.((directiv | 
| 542e0 |  65 20 28 61 6c 69 73 74 2d 67 65 74 20 76 61 6c    20 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65  | e.(alist-get.val.gptel-directive | 
| 54300 |  73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20  | s)))...................(funcall. | 
| 54320 |  73 65 74 74 65 72 20 73 79 6d 20 64 69 72 65 63    74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20  | setter.sym.directive)........... | 
| 54340 |  20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f    72 20 22 67 70 74 65 6c 20 70 72 65 73 65 74 20  | ......(user-error."gptel.preset. | 
| 54360 |  5c 22 25 73 5c 22 3a 20 43 61 6e 6e 6f 74 20 66    69 6e 64 20 64 69 72 65 63 74 69 76 65 20 25 73  | \"%s\":.Cannot.find.directive.%s | 
| 54380 |  22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | ".............................(c | 
| 543a0 |  61 72 20 70 72 65 73 65 74 29 20 76 61 6c 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75  | ar.preset).val)).............(fu | 
| 543c0 |  6e 63 61 6c 6c 20 73 65 74 74 65 72 20 73 79 6d    20 76 61 6c 29 29 29 29 0a 20 20 20 20 20 20 20  | ncall.setter.sym.val))))........ | 
| 543e0 |  28 3a 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20    20 20 28 73 65 74 71 20 76 61 6c 20 28 63 6c 2d  | (:backend.........(setq.val.(cl- | 
| 54400 |  65 74 79 70 65 63 61 73 65 20 76 61 6c 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | etypecase.val................... | 
| 54420 |  20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64    20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20  | ..(gptel-backend.val)........... | 
| 54440 |  20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e    67 20 28 67 70 74 65 6c 2d 67 65 74 2d 62 61 63  | ..........(string.(gptel-get-bac | 
| 54460 |  6b 65 6e 64 20 76 61 6c 29 29 29 29 0a 20 20 20    20 20 20 20 20 28 75 6e 6c 65 73 73 20 76 61 6c  | kend.val)))).........(unless.val | 
| 54480 |  0a 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72    2d 65 72 72 6f 72 20 22 67 70 74 65 6c 20 70 72  | ...........(user-error."gptel.pr | 
| 544a0 |  65 73 65 74 20 5c 22 25 73 5c 22 3a 20 43 61 6e    6e 6f 74 20 66 69 6e 64 20 62 61 63 6b 65 6e 64  | eset.\"%s\":.Cannot.find.backend | 
| 544c0 |  20 25 73 2e 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72  | .%s.".......................(car | 
| 544e0 |  20 70 72 65 73 65 74 29 20 76 61 6c 29 29 0a 20    20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20  | .preset).val)).........(funcall. | 
| 54500 |  73 65 74 74 65 72 20 27 67 70 74 65 6c 2d 62 61    63 6b 65 6e 64 20 76 61 6c 29 29 0a 20 20 20 20  | setter.'gptel-backend.val))..... | 
| 54520 |  20 20 20 28 3a 74 6f 6f 6c 73 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...(:tools...................... | 
| 54540 |  20 20 20 20 3b 54 45 4d 50 20 43 6f 6e 66 69 72    6d 20 74 68 69 73 20 60 3a 61 70 70 65 6e 64 27  | ....;TEMP.Confirm.this.`:append' | 
| 54560 |  20 63 6f 6e 76 65 6e 74 69 6f 6e 0a 20 20 20 20    20 20 20 20 28 6c 65 74 2a 20 28 28 61 70 70 65  | .convention.........(let*.((appe | 
| 54580 |  6e 64 20 28 77 68 65 6e 20 28 65 71 20 28 63 61    72 2d 73 61 66 65 20 76 61 6c 29 20 3a 61 70 70  | nd.(when.(eq.(car-safe.val).:app | 
| 545a0 |  65 6e 64 29 20 28 73 65 74 71 20 76 61 6c 20 28    63 64 72 20 76 61 6c 29 29 20 74 29 29 0a 20 20  | end).(setq.val.(cdr.val)).t))... | 
| 545c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f    6f 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .............(tools............. | 
| 545e0 |  20 20 20 20 28 66 6c 61 74 74 65 6e 2d 6c 69 73    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....(flatten-list............... | 
| 54600 |  20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20    74 6f 6f 6c 2d 6e 61 6d 65 20 69 6e 20 28 65 6e  | ...(cl-loop.for.tool-name.in.(en | 
| 54620 |  73 75 72 65 2d 6c 69 73 74 20 76 61 6c 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | sure-list.val).................. | 
| 54640 |  20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f 6f    6c 20 3d 20 28 63 6c 2d 65 74 79 70 65 63 61 73  | .........for.tool.=.(cl-etypecas | 
| 54660 |  65 20 74 6f 6f 6c 2d 6e 61 6d 65 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.tool-name..................... | 
| 54680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 20 74  | ...................(gptel-tool.t | 
| 546a0 |  6f 6f 6c 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ool-name)....................... | 
| 546c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 74 72 69 6e 67 20 28 69 67 6e 6f 72 65  | .................(string.(ignore | 
| 546e0 |  2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -errors......................... | 
| 54700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d  | .........................(gptel- | 
| 54720 |  67 65 74 2d 74 6f 6f 6c 20 74 6f 6f 6c 2d 6e 61    6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | get-tool.tool-name)))).......... | 
| 54740 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 64 6f 20 28 75 6e 6c 65 73 73 20 74 6f 6f 6c  | .................do.(unless.tool | 
| 54760 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 54780 |  28 75 73 65 72 2d 65 72 72 6f 72 20 22 67 70 74    65 6c 20 70 72 65 73 65 74 20 5c 22 25 73 5c 22  | (user-error."gptel.preset.\"%s\" | 
| 547a0 |  3a 20 43 61 6e 6e 6f 74 20 66 69 6e 64 20 74 6f    6f 6c 20 25 73 2e 22 0a 20 20 20 20 20 20 20 20  | :.Cannot.find.tool.%s."......... | 
| 547c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 547e0 |  20 20 20 28 63 61 72 20 70 72 65 73 65 74 29 20    76 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20  | ...(car.preset).val))........... | 
| 54800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    63 6f 6c 6c 65 63 74 20 74 6f 6f 6c 29 29 29 29  | ................collect.tool)))) | 
| 54820 |  0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63    61 6c 6c 20 73 65 74 74 65 72 20 27 67 70 74 65  | ...........(funcall.setter.'gpte | 
| 54840 |  6c 2d 74 6f 6f 6c 73 20 3b 61 70 70 65 6e 64 20    6d 61 6b 65 73 20 61 20 63 6f 70 79 20 6f 66 20  | l-tools.;append.makes.a.copy.of. | 
| 54860 |  67 70 74 65 6c 2d 74 6f 6f 6c 73 2c 20 69 6e 74    65 6e 74 69 6f 6e 61 6c 0a 20 20 20 20 20 20 20  | gptel-tools,.intentional........ | 
| 54880 |  20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20    61 70 70 65 6e 64 20 28 64 65 6c 65 74 65 2d 64  | ............(if.append.(delete-d | 
| 548a0 |  75 70 73 20 28 61 70 70 65 6e 64 20 67 70 74 65    6c 2d 74 6f 6f 6c 73 20 74 6f 6f 6c 73 29 29 20  | ups.(append.gptel-tools.tools)). | 
| 548c0 |  74 6f 6f 6c 73 29 29 29 29 0a 20 20 20 20 20 20    20 28 28 61 6e 64 20 28 6c 65 74 20 73 79 6d 20  | tools))))........((and.(let.sym. | 
| 548e0 |  28 6f 72 20 28 69 6e 74 65 72 6e 2d 73 6f 66 74    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (or.(intern-soft................ | 
| 54900 |  20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e    63 61 74 20 22 67 70 74 65 6c 2d 22 20 28 73 75  | ............(concat."gptel-".(su | 
| 54920 |  62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d    6e 61 6d 65 20 6b 65 79 29 20 31 29 29 29 0a 20  | bstring.(symbol-name.key).1))).. | 
| 54940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 69 6e 74 65 72 6e  | .........................(intern | 
| 54960 |  2d 73 6f 66 74 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -soft........................... | 
| 54980 |  20 28 63 6f 6e 63 61 74 20 22 67 70 74 65 6c 2d    2d 22 20 28 73 75 62 73 74 72 69 6e 67 20 28 73  | .(concat."gptel--".(substring.(s | 
| 549a0 |  79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29 20    31 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | ymbol-name.key).1))))).......... | 
| 549c0 |  20 20 20 20 28 67 75 61 72 64 20 28 61 6e 64 20    73 79 6d 20 28 62 6f 75 6e 64 70 20 73 79 6d 29  | ....(guard.(and.sym.(boundp.sym) | 
| 549e0 |  29 29 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e    63 61 6c 6c 20 73 65 74 74 65 72 20 73 79 6d 20  | ))).........(funcall.setter.sym. | 
| 54a00 |  76 61 6c 29 29 0a 20 20 20 20 20 20 20 28 5f 20    28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67  | val))........(_.(display-warning | 
| 54a20 |  0a 20 20 20 20 20 20 20 20 20 20 20 27 28 67 70    74 65 6c 20 70 72 65 73 65 74 73 29 0a 20 20 20  | ............'(gptel.presets).... | 
| 54a40 |  20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20    22 67 70 74 65 6c 20 70 72 65 73 65 74 20 5c 22  | ........(format."gptel.preset.\" | 
| 54a60 |  25 73 5c 22 3a 20 73 65 74 74 69 6e 67 20 66 6f    72 20 25 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20  | %s\":.setting.for.%s.not.found,. | 
| 54a80 |  69 67 6e 6f 72 69 6e 67 2e 22 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | ignoring."....................(c | 
| 54aa0 |  61 72 20 70 72 65 73 65 74 29 20 6b 65 79 29 29    29 29 29 0a 20 20 20 28 63 64 72 20 70 72 65 73  | ar.preset).key)))))....(cdr.pres | 
| 54ac0 |  65 74 29 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74    2a 20 28 28 66 75 6e 63 20 28 70 6c 69 73 74 2d  | et))...(when-let*.((func.(plist- | 
| 54ae0 |  67 65 74 20 28 63 64 72 20 70 72 65 73 65 74 29    20 3a 70 6f 73 74 29 29 29 20 28 66 75 6e 63 61  | get.(cdr.preset).:post))).(funca | 
| 54b00 |  6c 6c 20 66 75 6e 63 29 29 29 0a 0a 28 64 65 66    75 6e 20 67 70 74 65 6c 2d 2d 70 72 65 73 65 74  | ll.func)))..(defun.gptel--preset | 
| 54b20 |  2d 73 79 6d 73 20 28 70 72 65 73 65 74 29 0a 20    20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20  | -syms.(preset)..."Return.a.list. | 
| 54b40 |  6f 66 20 67 70 74 65 6c 20 76 61 72 69 61 62 6c    65 73 20 28 73 79 6d 62 6f 6c 73 29 20 73 65 74  | of.gptel.variables.(symbols).set | 
| 54b60 |  20 62 79 20 50 52 45 53 45 54 2e 0a 0a 50 52 45    53 45 54 20 69 73 20 61 20 73 70 65 63 20 28 70  | .by.PRESET...PRESET.is.a.spec.(p | 
| 54b80 |  6c 69 73 74 29 20 6f 66 20 6b 65 79 73 20 61 6e    64 20 76 61 6c 75 65 73 2e 22 0a 20 20 28 6c 65  | list).of.keys.and.values."...(le | 
| 54ba0 |  74 2a 20 28 28 69 6e 64 65 78 20 70 72 65 73 65    74 29 0a 20 20 20 20 20 20 20 20 20 73 79 6d 73  | t*.((index.preset)..........syms | 
| 54bc0 |  20 6b 65 79 20 76 61 6c 29 0a 20 20 20 20 28 77    68 69 6c 65 20 69 6e 64 65 78 0a 20 20 20 20 20  | .key.val).....(while.index...... | 
| 54be0 |  20 28 73 65 74 71 20 6b 65 79 20 28 70 6f 70 20    69 6e 64 65 78 29 20 76 61 6c 20 28 70 6f 70 20  | .(setq.key.(pop.index).val.(pop. | 
| 54c00 |  69 6e 64 65 78 29 29 0a 20 20 20 20 20 20 28 70    63 61 73 65 20 6b 65 79 0a 20 20 20 20 20 20 20  | index)).......(pcase.key........ | 
| 54c20 |  20 28 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 0a    20 20 20 20 20 20 20 20 28 3a 70 61 72 65 6e 74  | .(:description).........(:parent | 
| 54c40 |  73 0a 20 20 20 20 20 20 20 20 20 28 6d 61 70 63    20 28 6c 61 6d 62 64 61 20 28 70 61 72 65 6e 74  | s..........(mapc.(lambda.(parent | 
| 54c60 |  2d 70 72 65 73 65 74 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63  | -preset)..................(nconc | 
| 54c80 |  20 73 79 6d 73 20 28 67 70 74 65 6c 2d 2d 70 72    65 73 65 74 2d 73 79 6d 73 0a 20 20 20 20 20 20  | .syms.(gptel--preset-syms....... | 
| 54ca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 67  | ........................(gptel-g | 
| 54cc0 |  65 74 2d 70 72 65 73 65 74 20 70 61 72 65 6e 74    2d 70 72 65 73 65 74 29 29 29 29 0a 20 20 20 20  | et-preset.parent-preset))))..... | 
| 54ce0 |  20 20 20 20 20 20 20 20 20 20 20 28 65 6e 73 75    72 65 2d 6c 69 73 74 20 76 61 6c 29 29 29 0a 20  | ...........(ensure-list.val))).. | 
| 54d00 |  20 20 20 20 20 20 20 28 3a 73 79 73 74 65 6d 20    28 70 75 73 68 20 27 67 70 74 65 6c 2d 2d 73 79  | .......(:system.(push.'gptel--sy | 
| 54d20 |  73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 6d    73 29 29 0a 20 20 20 20 20 20 20 20 28 5f 20 28  | stem-message.syms)).........(_.( | 
| 54d40 |  69 66 2d 6c 65 74 2a 20 28 28 76 61 72 20 28 6f    72 20 28 69 6e 74 65 72 6e 2d 73 6f 66 74 0a 20  | if-let*.((var.(or.(intern-soft.. | 
| 54d60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | ..............................(c | 
| 54d80 |  6f 6e 63 61 74 20 22 67 70 74 65 6c 2d 22 20 28    73 75 62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f  | oncat."gptel-".(substring.(symbo | 
| 54da0 |  6c 2d 6e 61 6d 65 20 6b 65 79 29 20 31 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l-name.key).1)))................ | 
| 54dc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    69 6e 74 65 72 6e 2d 73 6f 66 74 0a 20 20 20 20  | ...............(intern-soft..... | 
| 54de0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63  | ...........................(conc | 
| 54e00 |  61 74 20 22 67 70 74 65 6c 2d 2d 22 20 28 73 75    62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d  | at."gptel--".(substring.(symbol- | 
| 54e20 |  6e 61 6d 65 20 6b 65 79 29 20 31 29 29 29 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | name.key).1))))))............... | 
| 54e40 |  20 28 70 75 73 68 20 76 61 72 20 73 79 6d 73 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64  | .(push.var.syms)..............(d | 
| 54e60 |  69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 67  | isplay-warning...............'(g | 
| 54e80 |  70 74 65 6c 20 70 72 65 73 65 74 73 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72  | ptel.presets)...............(for | 
| 54ea0 |  6d 61 74 20 22 67 70 74 65 6c 20 70 72 65 73 65    74 20 5c 22 25 73 5c 22 3a 20 73 65 74 74 69 6e  | mat."gptel.preset.\"%s\":.settin | 
| 54ec0 |  67 20 66 6f 72 20 25 73 20 6e 6f 74 20 66 6f 75    6e 64 2c 20 69 67 6e 6f 72 69 6e 67 2e 22 0a 20  | g.for.%s.not.found,.ignoring.".. | 
| 54ee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 61 72 20 70 72 65 73 65 74  | .....................(car.preset | 
| 54f00 |  29 20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20    28 63 6c 2d 64 65 6c 65 74 65 2d 64 75 70 6c 69  | ).key)))))).....(cl-delete-dupli | 
| 54f20 |  63 61 74 65 73 20 73 79 6d 73 29 29 29 0a 0a 28    64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 77  | cates.syms)))..(defmacro.gptel-w | 
| 54f40 |  69 74 68 2d 70 72 65 73 65 74 20 28 6e 61 6d 65    20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22  | ith-preset.(name.&rest.body)..." | 
| 54f60 |  52 75 6e 20 42 4f 44 59 20 77 69 74 68 20 67 70    74 65 6c 20 70 72 65 73 65 74 20 4e 41 4d 45 20  | Run.BODY.with.gptel.preset.NAME. | 
| 54f80 |  61 70 70 6c 69 65 64 2e 0a 0a 54 68 69 73 20 6d    61 63 72 6f 20 63 61 6e 20 62 65 20 75 73 65 64  | applied...This.macro.can.be.used | 
| 54fa0 |  20 74 6f 20 63 72 65 61 74 65 20 60 67 70 74 65    6c 2d 72 65 71 75 65 73 74 27 20 63 6f 6d 6d 61  | .to.create.`gptel-request'.comma | 
| 54fc0 |  6e 64 20 77 69 74 68 20 73 65 74 74 69 6e 67 73    0a 66 72 6f 6d 20 61 20 67 70 74 65 6c 20 70 72  | nd.with.settings.from.a.gptel.pr | 
| 54fe0 |  65 73 65 74 20 61 70 70 6c 69 65 64 2e 20 20 4e    41 4d 45 20 69 73 20 74 68 65 20 70 72 65 73 65  | eset.applied...NAME.is.the.prese | 
| 55000 |  74 20 6e 61 6d 65 2c 20 74 79 70 69 63 61 6c 6c    79 20 61 0a 73 79 6d 62 6f 6c 2e 22 0a 20 20 28  | t.name,.typically.a.symbol."...( | 
| 55020 |  64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20    31 29 29 0a 20 20 60 28 63 6c 2d 70 72 6f 67 76  | declare.(indent.1))...`(cl-progv | 
| 55040 |  20 28 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 2d    73 79 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20  | .(gptel--preset-syms............ | 
| 55060 |  20 20 20 28 67 70 74 65 6c 2d 67 65 74 2d 70 72    65 73 65 74 20 2c 28 69 66 20 28 73 79 6d 62 6f  | ...(gptel-get-preset.,(if.(symbo | 
| 55080 |  6c 70 20 6e 61 6d 65 29 20 60 27 2c 6e 61 6d 65    20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20  | lp.name).`',name.name)))........ | 
| 550a0 |  6e 69 6c 0a 20 20 20 20 20 28 67 70 74 65 6c 2d    2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 2c 28  | nil......(gptel--apply-preset.,( | 
| 550c0 |  69 66 20 28 73 79 6d 62 6f 6c 70 20 6e 61 6d 65    29 20 60 27 2c 6e 61 6d 65 20 6e 61 6d 65 29 29  | if.(symbolp.name).`',name.name)) | 
| 550e0 |  0a 20 20 20 20 20 2c 40 62 6f 64 79 29 29 0a 0a    3b 3b 3b 3b 20 50 72 65 73 65 74 73 20 69 6e 2d  | ......,@body))..;;;;.Presets.in- | 
| 55100 |  62 75 66 66 65 72 20 55 49 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72  | buffer.UI.(defun.gptel--transfor | 
| 55120 |  6d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20 28    5f 66 73 6d 29 0a 20 20 22 41 70 70 6c 79 20 61  | m-apply-preset.(_fsm)..."Apply.a | 
| 55140 |  20 67 70 74 65 6c 20 70 72 65 73 65 74 20 74 6f    20 74 68 65 20 62 75 66 66 65 72 20 64 65 70 65  | .gptel.preset.to.the.buffer.depe | 
| 55160 |  6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 70 72 6f    6d 70 74 2e 0a 0a 49 66 20 74 68 65 20 75 73 65  | nding.on.the.prompt...If.the.use | 
| 55180 |  72 20 70 72 6f 6d 70 74 20 62 65 67 69 6e 73 20    77 69 74 68 20 40 66 6f 6f 2c 20 74 68 65 20 70  | r.prompt.begins.with.@foo,.the.p | 
| 551a0 |  72 65 73 65 74 20 66 6f 6f 20 69 73 20 61 70 70    6c 69 65 64 2e 22 0a 20 20 28 77 68 65 6e 20 67  | reset.foo.is.applied."...(when.g | 
| 551c0 |  70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73    65 74 73 0a 20 20 20 20 28 74 65 78 74 2d 70 72  | ptel--known-presets.....(text-pr | 
| 551e0 |  6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61    63 6b 77 61 72 64 20 27 67 70 74 65 6c 20 6e 69  | operty-search-backward.'gptel.ni | 
| 55200 |  6c 20 74 29 0a 20 20 20 20 28 77 68 69 6c 65 20    28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61  | l.t).....(while.(re-search-forwa | 
| 55220 |  72 64 20 22 40 5c 5c 28 5b 5e 5b 3a 62 6c 61 6e    6b 3a 5d 5d 2b 5c 5c 29 5c 5c 5f 3e 22 20 6e 69  | rd."@\\([^[:blank:]]+\\)\\_>".ni | 
| 55240 |  6c 20 74 29 0a 20 20 20 20 20 20 3b 3b 20 54 68    65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 76  | l.t).......;;.The.following.conv | 
| 55260 |  6f 6c 75 74 65 64 20 63 68 65 63 6b 20 69 73 20    62 65 63 61 75 73 65 20 72 65 2d 73 65 61 72 63  | oluted.check.is.because.re-searc | 
| 55280 |  68 20 69 73 20 6d 75 63 68 20 66 61 73 74 65 72    20 69 66 0a 20 20 20 20 20 20 3b 3b 20 74 68 65  | h.is.much.faster.if.......;;.the | 
| 552a0 |  20 73 65 61 72 63 68 20 70 61 74 74 65 72 6e 20    62 65 67 69 6e 73 20 77 69 74 68 20 61 20 6e 6f  | .search.pattern.begins.with.a.no | 
| 552c0 |  6e 2d 77 68 69 74 65 73 70 61 63 65 20 63 68 61    72 2e 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28  | n-whitespace.char........(when.( | 
| 552e0 |  6f 72 20 28 3d 20 28 6d 61 74 63 68 2d 62 65 67    69 6e 6e 69 6e 67 20 30 29 20 28 70 6f 69 6e 74  | or.(=.(match-beginning.0).(point | 
| 55300 |  2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6d 65 6d 71 20 28 63 68  | -min)).................(memq.(ch | 
| 55320 |  61 72 2d 73 79 6e 74 61 78 20 28 63 68 61 72 2d    62 65 66 6f 72 65 20 28 6d 61 74 63 68 2d 62 65  | ar-syntax.(char-before.(match-be | 
| 55340 |  67 69 6e 6e 69 6e 67 20 30 29 29 29 20 27 28 33    32 20 36 32 29 29 29 0a 20 20 20 20 20 20 20 20  | ginning.0))).'(32.62)))......... | 
| 55360 |  28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6e 61 6d    65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20  | (when-let*.((name.(match-string. | 
| 55380 |  31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 72 65 73 65 74 20  | 1)).....................(preset. | 
| 553a0 |  28 6f 72 20 28 67 70 74 65 6c 2d 67 65 74 2d 70    72 65 73 65 74 20 28 69 6e 74 65 72 6e 2d 73 6f  | (or.(gptel-get-preset.(intern-so | 
| 553c0 |  66 74 20 6e 61 6d 65 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ft.name))....................... | 
| 553e0 |  20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c    2d 67 65 74 2d 70 72 65 73 65 74 20 6e 61 6d 65  | ..........(gptel-get-preset.name | 
| 55400 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6d  | ))))...........(delete-region.(m | 
| 55420 |  61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30    29 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29  | atch-beginning.0).(match-end.0)) | 
| 55440 |  0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65    6c 2d 2d 61 70 70 6c 79 2d 70 72 65 73 65 74 20  | ...........(gptel--apply-preset. | 
| 55460 |  28 63 6f 6e 73 20 6e 61 6d 65 20 70 72 65 73 65    74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | (cons.name.preset).............. | 
| 55480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6c 61 6d 62 64 61 20 28 73 79 6d 20 76  | ..................(lambda.(sym.v | 
| 554a0 |  61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | al)............................. | 
| 554c0 |  20 20 20 20 20 28 73 65 74 20 28 6d 61 6b 65 2d    6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 73  | .....(set.(make-local-variable.s | 
| 554e0 |  79 6d 29 20 76 61 6c 29 29 29 29 29 29 29 29 0a    0a 3b 3b 20 3b 3b 20 41 6c 74 65 72 6e 61 74 69  | ym).val))))))))..;;.;;.Alternati | 
| 55500 |  76 65 20 61 70 70 72 6f 61 63 68 20 77 69 74 68    20 73 74 72 69 6e 67 20 73 65 61 72 63 68 0a 3b  | ve.approach.with.string.search.; | 
| 55520 |  3b 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72    64 20 22 40 22 20 6e 69 6c 20 74 29 0a 3b 3b 20  | ;.(search-forward."@".nil.t).;;. | 
| 55540 |  28 69 66 20 28 61 6e 64 20 28 6d 65 6d 71 20 28    63 68 61 72 2d 73 79 6e 74 61 78 20 28 63 68 61  | (if.(and.(memq.(char-syntax.(cha | 
| 55560 |  72 2d 62 65 66 6f 72 65 20 28 31 2d 20 28 70 6f    69 6e 74 29 29 29 29 20 27 28 33 32 20 36 32 29  | r-before.(1-.(point)))).'(32.62) | 
| 55580 |  29 0a 3b 3b 20 20 20 20 20 20 20 20 20 20 28 6c    6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 5b 5e  | ).;;..........(looking-at."\\([^ | 
| 555a0 |  5b 3a 62 6c 61 6e 6b 3a 5d 5d 2b 3f 5c 5c 29 5b    5b 3a 70 75 6e 63 74 3a 5d 5d 3f 5c 5c 73 2d 2b  | [:blank:]]+?\\)[[:punct:]]?\\s-+ | 
| 555c0 |  22 29 29 0a 3b 3b 20 20 20 20 20 64 6f 2d 73 74    75 66 66 29 0a 0a 28 64 65 66 75 6e 20 67 70 74  | ")).;;.....do-stuff)..(defun.gpt | 
| 555e0 |  65 6c 2d 2d 66 6f 6e 74 69 66 79 2d 70 72 65 73    65 74 2d 6b 65 79 77 6f 72 64 20 28 65 6e 64 29  | el--fontify-preset-keyword.(end) | 
| 55600 |  0a 20 20 22 46 6f 6e 74 2d 6c 6f 63 6b 20 66 75    6e 63 74 69 6f 6e 20 66 6f 72 20 70 72 65 73 65  | ..."Font-lock.function.for.prese | 
| 55620 |  74 20 69 6e 64 69 63 61 74 6f 72 73 20 69 6e 20    63 68 61 74 20 62 75 66 66 65 72 73 2e 0a 0a 52  | t.indicators.in.chat.buffers...R | 
| 55640 |  65 74 75 72 6e 20 70 72 65 73 65 74 20 66 6f 6e    74 69 66 69 63 61 74 69 6f 6e 20 69 6e 66 6f 20  | eturn.preset.fontification.info. | 
| 55660 |  66 6f 72 20 74 65 78 74 20 75 70 20 74 6f 20 45    4e 44 2e 22 0a 20 20 28 61 6e 64 20 28 72 65 2d  | for.text.up.to.END."...(and.(re- | 
| 55680 |  73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22    40 5c 5c 28 5b 5e 5b 3a 62 6c 61 6e 6b 3a 5d 5d  | search-forward."@\\([^[:blank:]] | 
| 556a0 |  2b 5c 5c 29 5c 5c 5f 3e 22 20 65 6e 64 20 74 29    0a 20 20 20 20 20 20 20 28 6f 72 20 28 3d 20 28  | +\\)\\_>".end.t)........(or.(=.( | 
| 556c0 |  6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20    30 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a  | match-beginning.0).(point-min)). | 
| 556e0 |  20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71    20 28 63 68 61 72 2d 73 79 6e 74 61 78 20 28 63  | ...........(memq.(char-syntax.(c | 
| 55700 |  68 61 72 2d 62 65 66 6f 72 65 20 28 6d 61 74 63    68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29  | har-before.(match-beginning.0))) | 
| 55720 |  20 27 28 33 32 20 36 32 29 29 29 0a 20 20 20 20    20 20 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67  | .'(32.62)))........(not.(plist-g | 
| 55740 |  65 74 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74    69 65 73 2d 61 74 20 28 6d 61 74 63 68 2d 62 65  | et.(text-properties-at.(match-be | 
| 55760 |  67 69 6e 6e 69 6e 67 20 31 29 29 20 27 67 70 74    65 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67  | ginning.1)).'gptel))))..(defun.g | 
| 55780 |  70 74 65 6c 2d 70 72 65 73 65 74 2d 63 61 70 66    20 28 29 0a 20 20 22 43 6f 6d 70 6c 65 74 69 6f  | ptel-preset-capf.()..."Completio | 
| 557a0 |  6e 20 61 74 20 70 6f 69 6e 74 20 66 6f 72 20 67    70 74 65 6c 20 70 72 65 73 65 74 73 20 69 6e 20  | n.at.point.for.gptel.presets.in. | 
| 557c0 |  60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 0a 0a 41    64 64 20 74 68 69 73 20 74 6f 20 60 63 6f 6d 70  | `gptel-mode'...Add.this.to.`comp | 
| 557e0 |  6c 65 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e 74 2d    66 75 6e 63 74 69 6f 6e 73 27 2e 22 0a 20 20 28  | letion-at-point-functions'."...( | 
| 55800 |  61 6e 64 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e    2d 70 72 65 73 65 74 73 0a 20 20 20 20 20 20 20  | and.gptel--known-presets........ | 
| 55820 |  28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a    20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28  | (save-excursion..........(let.(( | 
| 55840 |  6e 75 6d 20 28 2d 20 28 73 6b 69 70 2d 73 79 6e    74 61 78 2d 62 61 63 6b 77 61 72 64 20 22 77 5f  | num.(-.(skip-syntax-backward."w_ | 
| 55860 |  22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 28 77 68 65 6e 20 28 65 71 6c 20 28 63 68 61  | "))))............(when.(eql.(cha | 
| 55880 |  72 2d 62 65 66 6f 72 65 29 20 3f 40 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74  | r-before).?@)..............(list | 
| 558a0 |  20 28 70 6f 69 6e 74 29 20 28 2b 20 28 70 6f 69    6e 74 29 20 6e 75 6d 29 0a 20 20 20 20 20 20 20  | .(point).(+.(point).num)........ | 
| 558c0 |  20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65    6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73  | ............gptel--known-presets | 
| 558e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 65 78 63 6c 75 73 69 76 65 20 27  | ....................:exclusive.' | 
| 55900 |  6e 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 61 6e 6e 6f 74 61 74 69 6f  | no....................:annotatio | 
| 55920 |  6e 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27  | n-function....................#' | 
| 55940 |  28 6c 61 6d 62 64 61 20 28 63 29 20 28 74 68 72    65 61 64 2d 66 69 72 73 74 0a 20 20 20 20 20 20  | (lambda.(c).(thread-first....... | 
| 55960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 69 6e 74 65 72 6e 2d  | ........................(intern- | 
| 55980 |  73 6f 66 74 20 63 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | soft.c)......................... | 
| 559a0 |  20 20 20 20 20 20 28 61 73 73 71 20 67 70 74 65    6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73  | ......(assq.gptel--known-presets | 
| 559c0 |  29 20 28 63 64 72 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).(cdr)......................... | 
| 559e0 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74    20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 29 29  | ......(plist-get.:description))) | 
| 55a00 |  29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67    70 74 65 6c 2d 2d 70 72 65 74 74 69 66 79 2d 70  | ))))))..(defun.gptel--prettify-p | 
| 55a20 |  72 65 73 65 74 20 28 29 0a 20 20 22 47 65 74 20    76 69 73 75 61 6c 20 61 6e 64 20 63 6f 6d 70 6c  | reset.()..."Get.visual.and.compl | 
| 55a40 |  65 74 69 6f 6e 20 68 65 6c 70 20 77 69 74 68 20    70 72 65 73 65 74 73 20 69 6e 20 67 70 74 65 6c  | etion.help.with.presets.in.gptel | 
| 55a60 |  20 62 75 66 66 65 72 73 2e 0a 0a 49 6e 74 65 6e    64 65 64 20 74 6f 20 62 65 20 61 64 64 65 64 20  | .buffers...Intended.to.be.added. | 
| 55a80 |  74 6f 20 60 67 70 74 65 6c 2d 6d 6f 64 65 2d 68    6f 6f 6b 27 2e 22 0a 20 20 28 6c 65 74 20 28 28  | to.`gptel-mode-hook'."...(let.(( | 
| 55aa0 |  6b 65 79 77 6f 72 64 20 27 28 28 67 70 74 65 6c    2d 2d 66 6f 6e 74 69 66 79 2d 70 72 65 73 65 74  | keyword.'((gptel--fontify-preset | 
| 55ac0 |  2d 6b 65 79 77 6f 72 64 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | -keyword.....................;;. | 
| 55ae0 |  73 75 62 65 78 70 20 30 20 68 65 72 65 20 69 73    20 6e 6f 74 20 72 65 71 75 69 72 65 64 2c 20 77  | subexp.0.here.is.not.required,.w | 
| 55b00 |  65 20 72 65 74 61 69 6e 20 69 74 20 74 6f 20 6d    61 6b 65 20 69 74 0a 20 20 20 20 20 20 20 20 20  | e.retain.it.to.make.it.......... | 
| 55b20 |  20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 65 61    73 79 20 74 6f 20 73 77 74 69 63 68 20 74 6f 20  | ...........;;.easy.to.swtich.to. | 
| 55b40 |  6d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 70 61 74    74 65 72 6e 73 20 69 6e 20 74 68 65 20 66 75 74  | more.complex.patterns.in.the.fut | 
| 55b60 |  75 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 30 20 28 77 68 65 6e 2d  | ure.....................0.(when- | 
| 55b80 |  6c 65 74 2a 20 28 28 63 6f 6d 70 73 20 28 61 6c    6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 28 6d  | let*.((comps.(all-completions.(m | 
| 55ba0 |  61 74 63 68 2d 73 74 72 69 6e 67 20 31 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | atch-string.1).................. | 
| 55bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d  | .........................gptel-- | 
| 55be0 |  6b 6e 6f 77 6e 2d 70 72 65 73 65 74 73 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | known-presets))................. | 
| 55c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 28 6d 65 6d 62 65 72 20 28 6d 61 74 63  | ..................((member.(matc | 
| 55c20 |  68 2d 73 74 72 69 6e 67 20 31 29 20 63 6f 6d 70    73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | h-string.1).comps)))............ | 
| 55c40 |  20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 62    6f 78 20 2d 31 20 3a 69 6e 68 65 72 69 74 20 73  | ............'(:box.-1.:inherit.s | 
| 55c60 |  65 63 6f 6e 64 61 72 79 2d 73 65 6c 65 63 74 69    6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | econdary-selection))............ | 
| 55c80 |  20 20 20 20 20 20 20 20 20 70 72 65 70 65 6e 64    29 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20  | .........prepend)))).....(cond.. | 
| 55ca0 |  20 20 20 20 28 67 70 74 65 6c 2d 6d 6f 64 65 0a    20 20 20 20 20 20 28 66 6f 6e 74 2d 6c 6f 63 6b  | ....(gptel-mode.......(font-lock | 
| 55cc0 |  2d 61 64 64 2d 6b 65 79 77 6f 72 64 73 20 6e 69    6c 20 6b 65 79 77 6f 72 64 20 74 29 0a 20 20 20  | -add-keywords.nil.keyword.t).... | 
| 55ce0 |  20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 63 6f    6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e  | ...(add-hook.'completion-at-poin | 
| 55d00 |  74 2d 66 75 6e 63 74 69 6f 6e 73 20 23 27 67 70    74 65 6c 2d 70 72 65 73 65 74 2d 63 61 70 66 20  | t-functions.#'gptel-preset-capf. | 
| 55d20 |  6e 69 6c 20 74 29 29 0a 20 20 20 20 20 28 74 20    28 66 6f 6e 74 2d 6c 6f 63 6b 2d 72 65 6d 6f 76  | nil.t))......(t.(font-lock-remov | 
| 55d40 |  65 2d 6b 65 79 77 6f 72 64 73 20 6e 69 6c 20 6b    65 79 77 6f 72 64 29 0a 20 20 20 20 20 20 20 20  | e-keywords.nil.keyword)......... | 
| 55d60 |  28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 63 6f    6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e  | (remove-hook.'completion-at-poin | 
| 55d80 |  74 2d 66 75 6e 63 74 69 6f 6e 73 20 23 27 67 70    74 65 6c 2d 70 72 65 73 65 74 2d 63 61 70 66 20  | t-functions.#'gptel-preset-capf. | 
| 55da0 |  74 29 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 52 65    73 70 6f 6e 73 65 20 74 77 65 61 6b 69 6e 67 20  | t)))))....;;;.Response.tweaking. | 
| 55dc0 |  63 6f 6d 6d 61 6e 64 73 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 72  | commands..(defun.gptel--attach-r | 
| 55de0 |  65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 20    28 68 69 73 74 6f 72 79 20 26 6f 70 74 69 6f 6e  | esponse-history.(history.&option | 
| 55e00 |  61 6c 20 62 75 66 29 0a 20 20 22 41 74 74 61 63    68 20 48 49 53 54 4f 52 59 20 74 6f 20 74 68 65  | al.buf)..."Attach.HISTORY.to.the | 
| 55e20 |  20 6e 65 78 74 20 67 70 74 65 6c 20 72 65 73 70    6f 6e 73 65 20 69 6e 20 62 75 66 66 65 72 20 42  | .next.gptel.response.in.buffer.B | 
| 55e40 |  55 46 2e 0a 0a 48 49 53 54 4f 52 59 20 69 73 20    61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67  | UF...HISTORY.is.a.list.of.string | 
| 55e60 |  73 20 74 79 70 69 63 61 6c 6c 79 20 63 6f 6e 74    61 69 6e 69 6e 67 20 74 65 78 74 20 72 65 70 6c  | s.typically.containing.text.repl | 
| 55e80 |  61 63 65 64 0a 62 79 20 67 70 74 65 6c 2e 20 20    42 55 46 20 69 73 20 74 68 65 20 63 75 72 72 65  | aced.by.gptel...BUF.is.the.curre | 
| 55ea0 |  6e 74 20 62 75 66 66 65 72 20 69 66 20 6e 6f 74    20 73 70 65 63 69 66 69 65 64 2e 0a 0a 54 68 69  | nt.buffer.if.not.specified...Thi | 
| 55ec0 |  73 20 69 73 20 75 73 65 64 20 74 6f 20 6d 61 69    6e 74 61 69 6e 20 76 61 72 69 61 6e 74 73 20 6f  | s.is.used.to.maintain.variants.o | 
| 55ee0 |  66 20 70 72 6f 6d 70 74 73 20 6f 72 20 72 65 73    70 6f 6e 73 65 73 20 74 6f 20 64 69 66 66 0a 61  | f.prompts.or.responses.to.diff.a | 
| 55f00 |  67 61 69 6e 73 74 20 69 66 20 72 65 71 75 69 72    65 64 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72  | gainst.if.required."...(with-cur | 
| 55f20 |  72 65 6e 74 2d 62 75 66 66 65 72 20 28 6f 72 20    62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66  | rent-buffer.(or.buf.(current-buf | 
| 55f40 |  66 65 72 29 29 0a 20 20 20 20 28 6c 65 74 72 65    63 20 28 28 67 70 74 65 6c 2d 2d 61 74 74 61 63  | fer)).....(letrec.((gptel--attac | 
| 55f60 |  68 2d 61 66 74 65 72 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62  | h-after...............(lambda.(b | 
| 55f80 |  20 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 62  | .e).................(when.(and.b | 
| 55fa0 |  20 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d  | .e)...................(add-text- | 
| 55fc0 |  70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 20  | properties....................b. | 
| 55fe0 |  65 20 60 28 67 70 74 65 6c 2d 68 69 73 74 6f 72    79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.`(gptel-history............... | 
| 56000 |  20 20 20 20 20 20 20 20 20 20 20 2c 28 61 70 70    65 6e 64 20 28 65 6e 73 75 72 65 2d 6c 69 73 74  | ...........,(append.(ensure-list | 
| 56020 |  20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .history)....................... | 
| 56040 |  20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70    72 6f 70 65 72 74 79 20 28 31 2d 20 65 29 20 27  | .....(get-char-property.(1-.e).' | 
| 56060 |  67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | gptel-history))................. | 
| 56080 |  20 20 20 20 20 20 20 20 20 66 72 6f 6e 74 2d 73    74 69 63 6b 79 20 28 67 70 74 65 6c 20 67 70 74  | .........front-sticky.(gptel.gpt | 
| 560a0 |  65 6c 2d 68 69 73 74 6f 72 79 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | el-history)))).................( | 
| 560c0 |  72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 67 70 74    65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65  | remove-hook.'gptel-post-response | 
| 560e0 |  2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -functions...................... | 
| 56100 |  20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 61    74 74 61 63 68 2d 61 66 74 65 72 20 27 6c 6f 63  | ........gptel--attach-after.'loc | 
| 56120 |  61 6c 29 29 29 29 0a 20 20 20 20 20 20 28 61 64    64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f  | al)))).......(add-hook.'gptel-po | 
| 56140 |  73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63    74 69 6f 6e 73 20 67 70 74 65 6c 2d 2d 61 74 74  | st-response-functions.gptel--att | 
| 56160 |  61 63 68 2d 61 66 74 65 72 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 27 6c  | ach-after.................nil.'l | 
| 56180 |  6f 63 61 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 65 64 69 66 66 20 28 26  | ocal))))..(defun.gptel--ediff.(& | 
| 561a0 |  6f 70 74 69 6f 6e 61 6c 20 61 72 67 20 62 6f 75    6e 64 73 2d 66 75 6e 63 29 0a 20 20 22 45 64 69  | optional.arg.bounds-func)..."Edi | 
| 561c0 |  66 66 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70    6f 69 6e 74 20 61 67 61 69 6e 73 74 20 70 72 65  | ff.response.at.point.against.pre | 
| 561e0 |  76 69 6f 75 73 20 67 70 74 65 6c 20 72 65 73 70    6f 6e 73 65 73 2e 0a 0a 49 66 20 70 72 65 66 69  | vious.gptel.responses...If.prefi | 
| 56200 |  78 20 41 52 47 20 69 73 20 6e 6f 6e 2d 6e 69 6c    2c 20 73 65 6c 65 63 74 20 74 68 65 20 70 72 65  | x.ARG.is.non-nil,.select.the.pre | 
| 56220 |  76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 20 74    6f 20 65 64 69 66 66 0a 61 67 61 69 6e 73 74 20  | vious.response.to.ediff.against. | 
| 56240 |  69 6e 74 65 72 61 63 74 69 76 65 6c 79 2e 0a 0a    49 66 20 73 70 65 63 69 66 69 65 64 2c 20 75 73  | interactively...If.specified,.us | 
| 56260 |  65 20 42 4f 55 4e 44 53 2d 46 55 4e 43 20 74 6f    20 63 6f 6d 70 75 74 65 20 74 68 65 20 62 6f 75  | e.BOUNDS-FUNC.to.compute.the.bou | 
| 56280 |  6e 64 73 20 6f 66 20 74 68 65 0a 72 65 73 70 6f    6e 73 65 20 61 74 20 70 6f 69 6e 74 2e 20 20 54  | nds.of.the.response.at.point...T | 
| 562a0 |  68 69 73 20 63 61 6e 20 62 65 20 75 73 65 64 20    74 6f 20 69 6e 63 6c 75 64 65 20 61 64 64 69 74  | his.can.be.used.to.include.addit | 
| 562c0 |  69 6f 6e 61 6c 0a 63 6f 6e 74 65 78 74 20 66 6f    72 20 74 68 65 20 65 64 69 66 66 20 73 65 73 73  | ional.context.for.the.ediff.sess | 
| 562e0 |  69 6f 6e 2e 22 0a 20 20 28 69 6e 74 65 72 61 63    74 69 76 65 20 22 50 22 29 0a 20 20 28 77 68 65  | ion."...(interactive."P")...(whe | 
| 56300 |  6e 20 28 67 70 74 65 6c 2d 2d 61 74 2d 72 65 73    70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 29  | n.(gptel--at-response-history-p) | 
| 56320 |  0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a    20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64  | .....(pcase-let*.((`(,beg...,end | 
| 56340 |  29 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 20 62    6f 75 6e 64 73 2d 66 75 6e 63 20 23 27 67 70 74  | ).(funcall.(or.bounds-func.#'gpt | 
| 56360 |  65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65    2d 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20  | el--get-response-bounds)))...... | 
| 56380 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65    76 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20  | ............(prev-response...... | 
| 563a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66    20 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 20  | .............(if.arg............ | 
| 563c0 |  20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70    6c 65 74 69 6e 67 2d 72 65 61 64 20 22 43 68 6f  | ...........(completing-read."Cho | 
| 563e0 |  6f 73 65 20 72 65 73 70 6f 6e 73 65 20 76 61 72    69 61 6e 74 20 74 6f 20 64 69 66 66 20 61 67 61  | ose.response.variant.to.diff.aga | 
| 56400 |  69 6e 73 74 3a 20 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | inst:."......................... | 
| 56420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74  | ...............(get-char-propert | 
| 56440 |  79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c    2d 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20  | y.(point).'gptel-history)....... | 
| 56460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 56480 |  20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72  | .nil.t).....................(car | 
| 564a0 |  2d 73 61 66 65 20 28 67 65 74 2d 63 68 61 72 2d    70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29  | -safe.(get-char-property.(point) | 
| 564c0 |  20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .'gptel-history))))............. | 
| 564e0 |  20 20 20 20 20 28 62 75 66 66 65 72 2d 6d 6f 64    65 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 0a 20 20  | .....(buffer-mode.major-mode)... | 
| 56500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    62 75 66 6e 61 6d 65 20 28 62 75 66 66 65 72 2d  | ...............(bufname.(buffer- | 
| 56520 |  6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 60 28 2c 6e 65 77 2d  | name))..................(`(,new- | 
| 56540 |  62 75 66 20 2c 6e 65 77 2d 62 65 67 20 2c 6e 65    77 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20  | buf.,new-beg.,new-end).......... | 
| 56560 |  20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63    75 72 72 65 6e 74 2d 62 75 66 66 65 72 0a 20 20  | .........(with-current-buffer... | 
| 56580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 2d  | ....................(get-buffer- | 
| 565a0 |  63 72 65 61 74 65 20 28 63 6f 6e 63 61 74 20 62    75 66 6e 61 6d 65 20 22 2d 50 52 45 56 49 4f 55  | create.(concat.bufname."-PREVIOU | 
| 565c0 |  53 2d 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20  | S-*")).....................(let. | 
| 565e0 |  28 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f    6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20 20  | ((inhibit-read-only.t))......... | 
| 56600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65    72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20  | ..............(erase-buffer).... | 
| 56620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 64 65 6c 61 79 2d 6d 6f 64 65 2d 68  | ...................(delay-mode-h | 
| 56640 |  6f 6f 6b 73 20 28 66 75 6e 63 61 6c 6c 20 62 75    66 66 65 72 2d 6d 6f 64 65 29 29 0a 20 20 20 20  | ooks.(funcall.buffer-mode))..... | 
| 56660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d  | ..................(visual-line-m | 
| 56680 |  6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65  | ode).......................(inse | 
| 566a0 |  72 74 20 70 72 65 76 2d 72 65 73 70 6f 6e 73 65    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rt.prev-response)............... | 
| 566c0 |  20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68    61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a  | ........(goto-char.(point-min)). | 
| 566e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 69 73 74 20 28 63 75 72  | ......................(list.(cur | 
| 56700 |  72 65 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f    69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d  | rent-buffer).(point-min).(point- | 
| 56720 |  6d 61 78 29 29 29 29 29 29 0a 20 20 20 20 20 20    28 75 6e 6c 65 73 73 20 70 72 65 76 2d 72 65 73  | max)))))).......(unless.prev-res | 
| 56740 |  70 6f 6e 73 65 20 28 75 73 65 72 2d 65 72 72 6f    72 20 22 67 70 74 65 6c 20 72 65 73 70 6f 6e 73  | ponse.(user-error."gptel.respons | 
| 56760 |  65 20 69 73 20 61 64 64 69 74 69 76 65 3a 20 6e    6f 20 63 68 61 6e 67 65 73 20 74 6f 20 65 64 69  | e.is.additive:.no.changes.to.edi | 
| 56780 |  66 66 22 29 29 0a 20 20 20 20 20 20 28 72 65 71    75 69 72 65 20 27 65 64 69 66 66 29 0a 20 20 20  | ff")).......(require.'ediff).... | 
| 567a0 |  20 20 20 28 6c 65 74 72 65 63 20 28 28 63 77 63    20 28 63 75 72 72 65 6e 74 2d 77 69 6e 64 6f 77  | ...(letrec.((cwc.(current-window | 
| 567c0 |  2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -configuration))................ | 
| 567e0 |  28 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65    73 74 6f 72 65 0a 20 20 20 20 20 20 20 20 20 20  | (gptel--ediff-restore........... | 
| 56800 |  20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......(lambda.()................ | 
| 56820 |  20 20 20 28 77 68 65 6e 20 28 77 69 6e 64 6f 77    2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2d 70  | ...(when.(window-configuration-p | 
| 56840 |  20 63 77 63 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 77  | .cwc).....................(set-w | 
| 56860 |  69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74    69 6f 6e 20 63 77 63 29 29 0a 20 20 20 20 20 20  | indow-configuration.cwc))....... | 
| 56880 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c    6c 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75  | ............(kill-buffer.(get-bu | 
| 568a0 |  66 66 65 72 20 28 63 6f 6e 63 61 74 20 62 75 66    6e 61 6d 65 20 22 2d 50 52 45 56 49 4f 55 53 2d  | ffer.(concat.bufname."-PREVIOUS- | 
| 568c0 |  2a 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75  | *")))...................(kill-bu | 
| 568e0 |  66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72    20 28 63 6f 6e 63 61 74 20 62 75 66 6e 61 6d 65  | ffer.(get-buffer.(concat.bufname | 
| 56900 |  20 22 2d 43 55 52 52 45 4e 54 2d 2a 22 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ."-CURRENT-*")))................ | 
| 56920 |  20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20    27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b  | ...(remove-hook.'ediff-quit-hook | 
| 56940 |  20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65    73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 20 20  | .gptel--ediff-restore))))....... | 
| 56960 |  20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 65 64 69    66 66 2d 71 75 69 74 2d 68 6f 6f 6b 20 67 70 74  | ..(add-hook.'ediff-quit-hook.gpt | 
| 56980 |  65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72    65 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c  | el--ediff-restore).........(appl | 
| 569a0 |  79 0a 20 20 20 20 20 20 20 20 20 23 27 65 64 69    66 66 2d 72 65 67 69 6f 6e 73 2d 69 6e 74 65 72  | y..........#'ediff-regions-inter | 
| 569c0 |  6e 61 6c 0a 20 20 20 20 20 20 20 20 20 28 67 65    74 2d 62 75 66 66 65 72 20 28 65 64 69 66 66 2d  | nal..........(get-buffer.(ediff- | 
| 569e0 |  6d 61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 66    65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66  | make-cloned-buffer.(current-buff | 
| 56a00 |  65 72 29 20 22 2d 43 55 52 52 45 4e 54 2d 2a 22    29 29 0a 20 20 20 20 20 20 20 20 20 62 65 67 20  | er)."-CURRENT-*"))..........beg. | 
| 56a20 |  65 6e 64 20 6e 65 77 2d 62 75 66 20 6e 65 77 2d    62 65 67 20 6e 65 77 2d 65 6e 64 0a 20 20 20 20  | end.new-buf.new-beg.new-end..... | 
| 56a40 |  20 20 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 20    20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72  | .....nil..........(list.'ediff-r | 
| 56a60 |  65 67 69 6f 6e 73 2d 77 6f 72 64 77 69 73 65 20    27 77 6f 72 64 2d 77 69 73 65 20 6e 69 6c 29 0a  | egions-wordwise.'word-wise.nil). | 
| 56a80 |  20 20 20 20 20 20 20 20 20 3b 3b 20 28 69 66 20    28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 2d 76  | .........;;.(if.(transient-arg-v | 
| 56aa0 |  61 6c 75 65 20 22 2d 77 22 20 61 72 67 73 29 0a    20 20 20 20 20 20 20 20 20 3b 3b 20 20 20 20 20  | alue."-w".args)..........;;..... | 
| 56ac0 |  28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 67    69 6f 6e 73 2d 77 6f 72 64 77 69 73 65 20 27 77  | (list.'ediff-regions-wordwise.'w | 
| 56ae0 |  6f 72 64 2d 77 69 73 65 20 6e 69 6c 29 0a 20 20    20 20 20 20 20 20 20 3b 3b 20 20 20 28 6c 69 73  | ord-wise.nil)..........;;...(lis | 
| 56b00 |  74 20 27 65 64 69 66 66 2d 72 65 67 69 6f 6e 73    2d 6c 69 6e 65 77 69 73 65 20 6e 69 6c 20 6e 69  | t.'ediff-regions-linewise.nil.ni | 
| 56b20 |  6c 29 29 0a 20 20 20 20 20 20 20 20 20 29 29 29    29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c  | l))..........)))))..(defun.gptel | 
| 56b40 |  2d 2d 6d 61 72 6b 2d 72 65 73 70 6f 6e 73 65 20    28 29 0a 20 20 22 4d 61 72 6b 20 67 70 74 65 6c  | --mark-response.()..."Mark.gptel | 
| 56b60 |  20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69    6e 74 2c 20 69 66 20 61 6e 79 2e 22 0a 20 20 28  | .response.at.point,.if.any."...( | 
| 56b80 |  69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28    75 6e 6c 65 73 73 20 28 67 70 74 65 6c 2d 2d 69  | interactive)...(unless.(gptel--i | 
| 56ba0 |  6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29 20 28 75    73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 67 70  | n-response-p).(user-error."No.gp | 
| 56bc0 |  74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20    70 6f 69 6e 74 22 29 29 0a 20 20 28 70 63 61 73  | tel.response.at.point"))...(pcas | 
| 56be0 |  65 2d 6c 65 74 20 28 28 60 28 2c 62 65 67 20 2e    20 2c 65 6e 64 29 20 28 67 70 74 65 6c 2d 2d 67  | e-let.((`(,beg...,end).(gptel--g | 
| 56c00 |  65 74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e    64 73 29 29 29 0a 20 20 20 20 28 67 6f 74 6f 2d  | et-response-bounds))).....(goto- | 
| 56c20 |  63 68 61 72 20 62 65 67 29 20 28 70 75 73 68 2d    6d 61 72 6b 29 20 28 67 6f 74 6f 2d 63 68 61 72  | char.beg).(push-mark).(goto-char | 
| 56c40 |  20 65 6e 64 29 20 28 61 63 74 69 76 61 74 65 2d    6d 61 72 6b 29 29 29 0a 0a 28 64 65 66 75 6e 20  | .end).(activate-mark)))..(defun. | 
| 56c60 |  67 70 74 65 6c 2d 2d 70 72 65 76 69 6f 75 73 2d    76 61 72 69 61 6e 74 20 28 26 6f 70 74 69 6f 6e  | gptel--previous-variant.(&option | 
| 56c80 |  61 6c 20 61 72 67 29 0a 20 20 22 53 77 69 74 63    68 20 74 6f 20 70 72 65 76 69 6f 75 73 20 67 70  | al.arg)..."Switch.to.previous.gp | 
| 56ca0 |  74 65 6c 2d 72 65 73 70 6f 6e 73 65 20 61 74 20    74 68 69 73 20 70 6f 69 6e 74 2c 20 69 66 20 69  | tel-response.at.this.point,.if.i | 
| 56cc0 |  74 20 65 78 69 73 74 73 2e 22 0a 20 20 28 69 6e    74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20  | t.exists."...(interactive."p").. | 
| 56ce0 |  20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60    28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 67  | .(pcase-let*.((`(,beg...,end).(g | 
| 56d00 |  70 74 65 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e    73 65 2d 62 6f 75 6e 64 73 29 29 0a 20 20 20 20  | ptel--get-response-bounds))..... | 
| 56d20 |  20 20 20 20 20 20 20 20 20 20 20 28 68 69 73 74    6f 72 79 20 28 67 65 74 2d 63 68 61 72 2d 70 72  | ...........(history.(get-char-pr | 
| 56d40 |  6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27    67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a  | operty.(point).'gptel-history)). | 
| 56d60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    61 6c 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 61  | ...............(alt-response.(ca | 
| 56d80 |  72 2d 73 61 66 65 20 68 69 73 74 6f 72 79 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | r-safe.history))................ | 
| 56da0 |  28 6f 66 66 73 65 74 29 29 0a 20 20 20 20 28 75    6e 6c 65 73 73 20 28 61 6e 64 20 68 69 73 74 6f  | (offset)).....(unless.(and.histo | 
| 56dc0 |  72 79 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29    0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72  | ry.alt-response).......(user-err | 
| 56de0 |  6f 72 20 22 4e 6f 20 76 61 72 69 61 6e 74 20 72    65 73 70 6f 6e 73 65 73 20 61 76 61 69 6c 61 62  | or."No.variant.responses.availab | 
| 56e00 |  6c 65 22 29 29 0a 20 20 20 20 28 69 66 20 28 3e    20 61 72 67 20 30 29 0a 20 20 20 20 20 20 20 20  | le")).....(if.(>.arg.0)......... | 
| 56e20 |  28 73 65 74 71 20 68 69 73 74 6f 72 79 20 28 61    70 70 65 6e 64 20 28 63 64 72 20 68 69 73 74 6f  | (setq.history.(append.(cdr.histo | 
| 56e40 |  72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ry)............................. | 
| 56e60 |  20 20 28 6c 69 73 74 20 28 62 75 66 66 65 72 2d    73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f  | ..(list.(buffer-substring-no-pro | 
| 56e80 |  70 65 72 74 69 65 73 20 62 65 67 20 65 6e 64 29    29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 0a  | perties.beg.end)))).......(setq. | 
| 56ea0 |  20 20 20 20 20 20 20 61 6c 74 2d 72 65 73 70 6f    6e 73 65 20 28 63 61 72 20 28 6c 61 73 74 20 68  | .......alt-response.(car.(last.h | 
| 56ec0 |  69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20    68 69 73 74 6f 72 79 20 28 63 6f 6e 73 20 28 62  | istory))........history.(cons.(b | 
| 56ee0 |  75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d    6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 62 65  | uffer-substring-no-properties.be | 
| 56f00 |  67 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6e 62 75  | g.end)......................(nbu | 
| 56f20 |  74 6c 61 73 74 20 68 69 73 74 6f 72 79 29 29 29    29 0a 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d  | tlast.history)))).....(add-text- | 
| 56f40 |  70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 30 20 28 6c 65 6e 67 74  | properties..............0.(lengt | 
| 56f60 |  68 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 67  | h.alt-response)..............`(g | 
| 56f80 |  70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 67 70    74 65 6c 2d 68 69 73 74 6f 72 79 20 2c 68 69 73  | ptel.response.gptel-history.,his | 
| 56fa0 |  74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29  | tory)..............alt-response) | 
| 56fc0 |  0a 20 20 20 20 28 73 65 74 71 20 6f 66 66 73 65    74 20 28 6d 69 6e 20 28 2d 20 28 70 6f 69 6e 74  | .....(setq.offset.(min.(-.(point | 
| 56fe0 |  29 20 62 65 67 29 20 28 31 2d 20 28 6c 65 6e 67    74 68 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29  | ).beg).(1-.(length.alt-response) | 
| 57000 |  29 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65 2d    72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 0a  | ))).....(delete-region.beg.end). | 
| 57020 |  20 20 20 20 28 69 6e 73 65 72 74 20 61 6c 74 2d    72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 28 67  | ....(insert.alt-response).....(g | 
| 57040 |  6f 74 6f 2d 63 68 61 72 20 28 2b 20 62 65 67 20    6f 66 66 73 65 74 29 29 0a 20 20 20 20 28 70 75  | oto-char.(+.beg.offset)).....(pu | 
| 57060 |  6c 73 65 2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 69    67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 62  | lse-momentary-highlight-region.b | 
| 57080 |  65 67 20 28 2b 20 62 65 67 20 28 6c 65 6e 67 74    68 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 29  | eg.(+.beg.(length.alt-response)) | 
| 570a0 |  29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65    6c 2d 2d 6e 65 78 74 2d 76 61 72 69 61 6e 74 20  | )))..(defun.gptel--next-variant. | 
| 570c0 |  28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 67 29 0a    20 20 22 53 77 69 74 63 68 20 74 6f 20 6e 65 78  | (&optional.arg)..."Switch.to.nex | 
| 570e0 |  74 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65    20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20  | t.gptel-response.at.this.point,. | 
| 57100 |  69 66 20 69 74 20 65 78 69 73 74 73 2e 22 0a 20    20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70  | if.it.exists."...(interactive."p | 
| 57120 |  22 29 0a 20 20 28 67 70 74 65 6c 2d 2d 70 72 65    76 69 6f 75 73 2d 76 61 72 69 61 6e 74 20 28 2d  | ")...(gptel--previous-variant.(- | 
| 57140 |  20 61 72 67 29 29 29 0a 0a 28 70 72 6f 76 69 64    65 20 27 67 70 74 65 6c 29 0a 3b 3b 3b 20 67 70  | .arg)))..(provide.'gptel).;;;.gp | 
| 57160 |  74 65 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65    0a 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61  | tel.el.ends.here..;;.Local.Varia | 
| 57180 |  62 6c 65 73 3a 0a 3b 3b 20 62 75 67 2d 72 65 66    65 72 65 6e 63 65 2d 75 72 6c 2d 66 6f 72 6d 61  | bles:.;;.bug-reference-url-forma | 
| 571a0 |  74 3a 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68    75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f  | t:."https://github.com/karthink/ | 
| 571c0 |  67 70 74 65 6c 2f 69 73 73 75 65 73 2f 25 73 22    0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00  | gptel/issues/%s".;;.End:........ | 
| 571e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 57200 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 2e 65 6c  | gptel-0.9.8.5/gptel-anthropic.el | 
| 57220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 57240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 57260 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 57280 |  30 30 37 33 36 36 37 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 35 31 31 32 00 20 30 00 00 00  | 0073667.00000000000.015112..0... | 
| 572a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 572c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 572e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 57300 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 57320 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 57340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 57360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 57380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 573a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 573c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 573e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 57400 |  3b 3b 3b 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f    70 69 63 2e 65 6c 20 2d 2d 2d 20 20 41 6e 74 68  | ;;;.gptel-anthropic.el.---..Anth | 
| 57420 |  72 6f 70 69 63 20 41 49 20 73 75 70 70 70 6f 72    74 20 66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d  | ropic.AI.suppport.for.gptel..-*- | 
| 57440 |  20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67    3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70  | .lexical-binding:.t;.-*-..;;.Cop | 
| 57460 |  79 72 69 67 68 74 20 28 43 29 20 32 30 32 33 2d    32 30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68  | yright.(C).2023-2025..Karthik.Ch | 
| 57480 |  69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b 20 41 75    74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68  | ikmagalur..;;.Author:.Karthik.Ch | 
| 574a0 |  69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 72 74 68    69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d  | ikmagalur.<karthikchikmagalur@gm | 
| 574c0 |  61 69 6c 2e 63 6f 6d 3e 0a 0a 3b 3b 20 54 68 69    73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65  | ail.com>..;;.This.program.is.fre | 
| 574e0 |  65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20    63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65  | e.software;.you.can.redistribute | 
| 57500 |  20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66    79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68  | .it.and/or.modify.;;.it.under.th | 
| 57520 |  65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47    4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  | e.terms.of.the.GNU.General.Publi | 
| 57540 |  63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62    6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65  | c.License.as.published.by.;;.the | 
| 57560 |  20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46    6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65  | .Free.Software.Foundation,.eithe | 
| 57580 |  72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74    68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b  | r.version.3.of.the.License,.or.; | 
| 575a0 |  3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f    6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72  | ;.(at.your.option).any.later.ver | 
| 575c0 |  73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70    72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69  | sion...;;.This.program.is.distri | 
| 575e0 |  62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70    65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62  | buted.in.the.hope.that.it.will.b | 
| 57600 |  65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74    20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52  | e.useful,.;;.but.WITHOUT.ANY.WAR | 
| 57620 |  52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65    76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20  | RANTY;.without.even.the.implied. | 
| 57640 |  77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d    45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f  | warranty.of.;;.MERCHANTABILITY.o | 
| 57660 |  72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20    50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f  | r.FITNESS.FOR.A.PARTICULAR.PURPO | 
| 57680 |  53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20    47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c  | SE...See.the.;;.GNU.General.Publ | 
| 576a0 |  69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d    6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b  | ic.License.for.more.details...;; | 
| 576c0 |  20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65    20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79  | .You.should.have.received.a.copy | 
| 576e0 |  20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65    72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e  | .of.the.GNU.General.Public.Licen | 
| 57700 |  73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68    20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20  | se.;;.along.with.this.program... | 
| 57720 |  49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74    70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67  | If.not,.see.<https://www.gnu.org | 
| 57740 |  2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b    3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b  | /licenses/>...;;;.Commentary:..; | 
| 57760 |  3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 64 73    20 73 75 70 70 6f 72 74 20 66 6f 72 20 41 6e 74  | ;.This.file.adds.support.for.Ant | 
| 57780 |  68 72 6f 70 69 63 27 73 20 4d 65 73 73 61 67 65    73 20 41 50 49 20 74 6f 20 67 70 74 65 6c 0a 0a  | hropic's.Messages.API.to.gptel.. | 
| 577a0 |  3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69    72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a  | ;;;.Code:.(require.'cl-generic). | 
| 577c0 |  28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62    29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 70 29  | (require.'cl-lib).(require.'map) | 
| 577e0 |  0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c    29 0a 0a 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d  | .(require.'gptel)..(defvar.json- | 
| 57800 |  6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 28 64    65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20  | object-type)..(declare-function. | 
| 57820 |  70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 65    20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d  | prop-match-value."text-property- | 
| 57840 |  73 65 61 72 63 68 22 29 0a 28 64 65 63 6c 61 72    65 2d 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 2d  | search").(declare-function.text- | 
| 57860 |  70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d    62 61 63 6b 77 61 72 64 20 22 74 65 78 74 2d 70  | property-search-backward."text-p | 
| 57880 |  72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22 29    0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69  | roperty-search").(declare-functi | 
| 578a0 |  6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73    6f 6e 22 20 28 29 29 0a 28 64 65 63 6c 61 72 65  | on.json-read."json".()).(declare | 
| 578c0 |  2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 22 67  | -function.gptel-context--wrap."g | 
| 578e0 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28    64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e  | ptel-context").(declare-function | 
| 57900 |  20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d    63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 20 22 67  | .gptel-context--collect-media."g | 
| 57920 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a    3b 3b 3b 20 41 6e 74 68 72 6f 70 69 63 20 28 4d  | ptel-context")..;;;.Anthropic.(M | 
| 57940 |  65 73 73 61 67 65 73 20 41 50 49 29 0a 28 63 6c    2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65  | essages.API).(cl-defstruct.(gpte | 
| 57960 |  6c 2d 61 6e 74 68 72 6f 70 69 63 20 28 3a 63 6f    6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d  | l-anthropic.(:constructor.gptel- | 
| 57980 |  2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -make-anthropic)................ | 
| 579a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 3a 63 6f 70 69 65 72 20 6e 69 6c 29 0a 20 20  | ................(:copier.nil)... | 
| 579c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 69  | .............................(:i | 
| 579e0 |  6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 62 61 63    6b 65 6e 64 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45  | nclude.gptel-backend)))..;;.NOTE | 
| 57a00 |  20 74 68 65 20 63 72 75 63 69 61 6c 20 64 69 66    66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 0a  | .the.crucial.difference.between. | 
| 57a20 |  3b 3b 20 2d 20 28 70 75 73 68 20 76 61 6c 20 28    70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a  | ;;.-.(push.val.(plist-get.info.: | 
| 57a40 |  6b 65 79 29 29 20 61 6e 64 0a 3b 3b 20 20 20 28    70 6c 69 73 74 2d 70 75 74 20 28 70 6c 69 73 74  | key)).and.;;...(plist-put.(plist | 
| 57a60 |  2d 67 65 74 20 69 6e 66 6f 20 3a 6b 65 79 29 20    28 63 6f 6e 73 20 76 61 6c 20 2e 2e 2e 29 29 0a  | -get.info.:key).(cons.val....)). | 
| 57a80 |  3b 3b 0a 3b 3b 20 2d 20 28 73 65 74 66 20 28 70    6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 6b  | ;;.;;.-.(setf.(plist-get.info.:k | 
| 57aa0 |  65 79 29 20 76 61 6c 29 20 61 6e 64 0a 3b 3b 20    20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66  | ey).val).and.;;...(plist-put.inf | 
| 57ac0 |  6f 20 3a 6b 65 79 20 76 61 6c 29 0a 3b 3b 0a 3b    3b 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69  | o.:key.val).;;.;;.in.the.followi | 
| 57ae0 |  6e 67 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68    65 20 66 69 72 73 74 20 76 61 72 69 61 6e 74 20  | ng.function...The.first.variant. | 
| 57b00 |  63 6f 6e 73 65 73 20 61 74 20 74 68 65 20 68 65    61 64 20 6f 66 20 69 6e 66 6f 2c 20 74 68 65 0a  | conses.at.the.head.of.info,.the. | 
| 57b20 |  3b 3b 20 73 65 63 6f 6e 64 20 6f 6e 65 20 61 74    20 74 68 65 20 74 61 69 6c 2e 20 20 54 68 69 73  | ;;.second.one.at.the.tail...This | 
| 57b40 |  20 6d 65 61 6e 73 20 6f 6e 6c 79 20 74 68 65 20    73 65 63 6f 6e 64 20 6f 70 74 69 6f 6e 20 69 73  | .means.only.the.second.option.is | 
| 57b60 |  20 76 69 61 62 6c 65 20 66 6f 72 0a 3b 3b 20 6d    75 74 61 74 69 6e 67 20 61 20 70 6c 69 73 74 20  | .viable.for.;;.mutating.a.plist. | 
| 57b80 |  66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e    74 20 74 68 61 74 27 73 20 70 61 73 73 65 64 20  | function.argument.that's.passed. | 
| 57ba0 |  62 79 20 72 65 66 65 72 65 6e 63 65 2e 0a 3b 3b    20 44 6f 20 4e 4f 54 20 63 68 61 6e 67 65 20 74  | by.reference..;;.Do.NOT.change.t | 
| 57bc0 |  68 65 20 70 6c 69 73 74 2d 70 75 74 20 74 6f 20    70 75 73 68 20 6f 72 20 73 65 74 66 21 0a 0a 3b  | he.plist-put.to.push.or.setf!..; | 
| 57be0 |  3b 20 4e 4f 54 45 3a 20 54 68 65 20 73 74 72 65    61 6d 20 70 61 72 73 65 72 20 6c 6f 6f 6b 73 20  | ;.NOTE:.The.stream.parser.looks. | 
| 57c00 |  63 6f 6d 70 6c 69 63 61 74 65 64 20 6f 6e 6c 79    20 62 65 63 61 75 73 65 20 69 74 20 68 61 6e 64  | complicated.only.because.it.hand | 
| 57c20 |  6c 65 73 20 73 74 72 65 61 6d 69 6e 67 0a 3b 3b    20 74 6f 6f 6c 20 63 61 6c 6c 73 2c 20 73 74 72  | les.streaming.;;.tool.calls,.str | 
| 57c40 |  65 61 6d 69 6e 67 20 22 74 68 69 6e 6b 69 6e 67    22 20 62 6c 6f 63 6b 73 20 61 6e 64 20 74 68 65  | eaming."thinking".blocks.and.the | 
| 57c60 |  69 72 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 2e    20 20 53 74 72 65 61 6d 0a 3b 3b 20 70 61 72 73  | ir.interactions...Stream.;;.pars | 
| 57c80 |  69 6e 67 20 69 73 20 73 69 6d 70 6c 65 3a 20 69    66 20 79 6f 75 20 61 72 65 20 73 74 75 64 79 69  | ing.is.simple:.if.you.are.studyi | 
| 57ca0 |  6e 67 20 74 68 69 73 20 63 6f 64 65 2c 20 6c 6f    6f 6b 20 69 6e 73 74 65 61 64 20 61 74 20 61 20  | ng.this.code,.look.instead.at.a. | 
| 57cc0 |  63 6f 6d 6d 69 74 0a 3b 3b 20 66 72 6f 6d 20 62    65 66 6f 72 65 20 74 6f 6f 6c 2d 75 73 65 20 73  | commit.;;.from.before.tool-use.s | 
| 57ce0 |  75 70 70 6f 72 74 20 77 61 73 20 61 64 64 65 64    20 74 6f 20 67 70 74 65 6c 2e 0a 28 63 6c 2d 64  | upport.was.added.to.gptel..(cl-d | 
| 57d00 |  65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 63    75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61  | efmethod.gptel-curl--parse-strea | 
| 57d20 |  6d 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74    65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 69 6e  | m.((_backend.gptel-anthropic).in | 
| 57d40 |  66 6f 29 0a 20 20 22 50 61 72 73 65 20 61 6e 20    41 6e 74 68 72 6f 70 69 63 20 64 61 74 61 20 73  | fo)..."Parse.an.Anthropic.data.s | 
| 57d60 |  74 72 65 61 6d 2e 0a 0a 52 65 74 75 72 6e 20 74    68 65 20 74 65 78 74 20 72 65 73 70 6f 6e 73 65  | tream...Return.the.text.response | 
| 57d80 |  20 61 63 63 75 6d 75 6c 61 74 65 64 20 73 69 6e    63 65 20 74 68 65 20 6c 61 73 74 20 63 61 6c 6c  | .accumulated.since.the.last.call | 
| 57da0 |  20 74 6f 20 74 68 69 73 0a 66 75 6e 63 74 69 6f    6e 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79  | .to.this.function...Additionally | 
| 57dc0 |  2c 20 6d 75 74 61 74 65 20 73 74 61 74 65 20 49    4e 46 4f 20 74 6f 20 61 64 64 20 74 6f 6f 6c 2d  | ,.mutate.state.INFO.to.add.tool- | 
| 57de0 |  75 73 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 20    69 66 20 74 68 65 20 73 74 72 65 61 6d 20 63 6f  | use.information.if.the.stream.co | 
| 57e00 |  6e 74 61 69 6e 73 20 69 74 2e 20 20 4e 6f 74 20    6d 79 20 62 65 73 74 20 77 6f 72 6b 2c 20 49 20  | ntains.it...Not.my.best.work,.I. | 
| 57e20 |  6b 6e 6f 77 2e 22 0a 20 20 28 6c 65 74 2a 20 28    28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 0a 20  | know."...(let*.((content-strs).. | 
| 57e40 |  20 20 20 20 20 20 20 20 28 70 74 20 28 70 6f 69    6e 74 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 69  | ........(pt.(point))).....(condi | 
| 57e60 |  74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20    20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65  | tion-case.nil.........(while.(re | 
| 57e80 |  2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20    22 5e 65 76 65 6e 74 3a 20 22 20 6e 69 6c 20 74  | -search-forward."^event:.".nil.t | 
| 57ea0 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74    71 20 70 74 20 28 6d 61 74 63 68 2d 62 65 67 69  | )...........(setq.pt.(match-begi | 
| 57ec0 |  6e 6e 69 6e 67 20 30 29 29 0a 20 20 20 20 20 20    20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 28  | nning.0))...........(if.(equal.( | 
| 57ee0 |  6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f    6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a  | line-end-position).(point-max)). | 
| 57f00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65    72 72 6f 72 20 22 44 61 74 61 20 62 6c 6f 63 6b  | ..............(error."Data.block | 
| 57f20 |  20 69 6e 63 6f 6d 70 6c 65 74 65 22 29 29 0a 20    20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20  | .incomplete"))...........(cond.. | 
| 57f40 |  20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b    69 6e 67 2d 61 74 20 22 63 6f 6e 74 65 6e 74 5f  | ..........((looking-at."content_ | 
| 57f60 |  62 6c 6f 63 6b 5f 64 65 6c 74 61 22 29 20 3b 63    6f 6c 6c 65 63 74 20 69 6e 63 72 65 6d 65 6e 74  | block_delta").;collect.increment | 
| 57f80 |  61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28    66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 31 29 20  | al.............(forward-line.1). | 
| 57fa0 |  28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 35 29    20 20 3b 74 65 78 74 2c 20 74 6f 6f 6c 20 6f 72  | (forward-char.5)..;text,.tool.or | 
| 57fc0 |  20 74 68 69 6e 6b 69 6e 67 20 62 6c 6f 63 6b 0a    20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65  | .thinking.block.............(whe | 
| 57fe0 |  6e 2d 6c 65 74 2a 20 28 28 64 65 6c 74 61 20 28    70 6c 69 73 74 2d 67 65 74 20 28 67 70 74 65 6c  | n-let*.((delta.(plist-get.(gptel | 
| 58000 |  2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 20 3a 64 65    6c 74 61 29 29 29 0a 20 20 20 20 20 20 20 20 20  | --json-read).:delta))).......... | 
| 58020 |  20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28    63 6f 6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67  | .....(if-let*.((content.(plist-g | 
| 58040 |  65 74 20 64 65 6c 74 61 20 3a 74 65 78 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | et.delta.:text))................ | 
| 58060 |  20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28    65 71 20 63 6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c  | .........((not.(eq.content.:null | 
| 58080 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 75 73 68 20 63 6f 6e  | ))))...................(push.con | 
| 580a0 |  74 65 6e 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72    73 29 20 3b 63 6f 6c 6c 65 63 74 20 74 65 78 74  | tent.content-strs).;collect.text | 
| 580c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 69 66 2d 6c 65 74 2a 20 28 28 70 61 72 74  | .................(if-let*.((part | 
| 580e0 |  69 61 6c 2d 6a 73 6f 6e 20 28 70 6c 69 73 74 2d    67 65 74 20 64 65 6c 74 61 20 3a 70 61 72 74 69  | ial-json.(plist-get.delta.:parti | 
| 58100 |  61 6c 5f 6a 73 6f 6e 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | al_json))).....................( | 
| 58120 |  70 6c 69 73 74 2d 70 75 74 20 20 20 20 20 20 20    20 20 20 3b 63 6f 6c 6c 65 63 74 20 70 61 72 74  | plist-put..........;collect.part | 
| 58140 |  69 61 6c 20 74 6f 6f 6c 20 69 6e 70 75 74 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ial.tool.input.................. | 
| 58160 |  20 20 20 20 69 6e 66 6f 20 3a 70 61 72 74 69 61    6c 5f 6a 73 6f 6e 0a 20 20 20 20 20 20 20 20 20  | ....info.:partial_json.......... | 
| 58180 |  20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e    73 20 70 61 72 74 69 61 6c 2d 6a 73 6f 6e 20 28  | ............(cons.partial-json.( | 
| 581a0 |  70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a    70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29 0a  | plist-get.info.:partial_json))). | 
| 581c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 69 66 2d 6c 65 74 2a 20 28 28 74 68 69  | ..................(if-let*.((thi | 
| 581e0 |  6e 6b 69 6e 67 20 28 70 6c 69 73 74 2d 67 65 74    20 64 65 6c 74 61 20 3a 74 68 69 6e 6b 69 6e 67  | nking.(plist-get.delta.:thinking | 
| 58200 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | ))).......................(plist | 
| 58220 |  2d 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f    6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20  | -put.info.:reasoning............ | 
| 58240 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70  | ......................(concat.(p | 
| 58260 |  6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72    65 61 73 6f 6e 69 6e 67 29 20 74 68 69 6e 6b 69  | list-get.info.:reasoning).thinki | 
| 58280 |  6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74  | ng)).....................(if-let | 
| 582a0 |  2a 20 28 28 73 69 67 6e 61 74 75 72 65 20 28 70    6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a  | *.((signature.(plist-get.delta.: | 
| 582c0 |  73 69 67 6e 61 74 75 72 65 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | signature))).................... | 
| 582e0 |  20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20    69 6e 66 6f 20 3a 73 69 67 6e 61 74 75 72 65 0a  | .....(plist-put.info.:signature. | 
| 58300 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 58320 |  20 20 20 28 63 6f 6e 63 61 74 20 28 70 6c 69 73    74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 69 67 6e  | ...(concat.(plist-get.info.:sign | 
| 58340 |  61 74 75 72 65 29 20 73 69 67 6e 61 74 75 72 65    29 29 29 29 29 29 29 29 0a 0a 20 20 20 20 20 20  | ature).signature))))))))........ | 
| 58360 |  20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61    74 20 22 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b  | .....((looking-at."content_block | 
| 58380 |  5f 73 74 61 72 74 22 29 20 3b 49 73 20 74 68 65    20 66 6f 6c 6c 6f 77 69 6e 67 20 62 6c 6f 63 6b  | _start").;Is.the.following.block | 
| 583a0 |  20 74 65 78 74 20 6f 72 20 74 6f 6f 6c 2d 75 73    65 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  | .text.or.tool-use?.............( | 
| 583c0 |  66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 31 29 20    28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 35 29  | forward-line.1).(forward-char.5) | 
| 583e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68    65 6e 2d 6c 65 74 2a 20 28 28 63 62 6c 6f 63 6b  | .............(when-let*.((cblock | 
| 58400 |  20 28 70 6c 69 73 74 2d 67 65 74 20 28 67 70 74    65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 20 3a  | .(plist-get.(gptel--json-read).: | 
| 58420 |  63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | content_block)))...............( | 
| 58440 |  70 63 61 73 65 20 28 70 6c 69 73 74 2d 67 65 74    20 63 62 6c 6f 63 6b 20 3a 74 79 70 65 29 0a 20  | pcase.(plist-get.cblock.:type).. | 
| 58460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    22 74 65 78 74 22 20 28 70 75 73 68 20 28 70 6c  | ...............("text".(push.(pl | 
| 58480 |  69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20 3a    74 65 78 74 29 20 63 6f 6e 74 65 6e 74 2d 73 74  | ist-get.cblock.:text).content-st | 
| 584a0 |  72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 22 74 6f 6f 6c 5f 75 73 65 22  | rs)).................("tool_use" | 
| 584c0 |  20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f    20 3a 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20  | .(plist-put.info.:tool-use...... | 
| 584e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 58500 |  20 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 3a 69    64 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c  | ..(cons.(list.:id.(plist-get.cbl | 
| 58520 |  6f 63 6b 20 3a 69 64 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ock.:id)........................ | 
| 58540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d  | ............................:nam | 
| 58560 |  65 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c    6f 63 6b 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20  | e.(plist-get.cblock.:name))..... | 
| 58580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 585a0 |  20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d    67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75  | .........(plist-get.info.:tool-u | 
| 585c0 |  73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 22 74 68 69 6e 6b 69 6e  | se)))).................("thinkin | 
| 585e0 |  67 22 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e    66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 20 28 70  | g".(plist-put.info.:reasoning.(p | 
| 58600 |  6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63 6b 20    3a 74 68 69 6e 6b 69 6e 67 29 29 0a 20 20 20 20  | list-get.cblock.:thinking))..... | 
| 58620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c    69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 72 65  | .............(plist-put.info.:re | 
| 58640 |  61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20 27 69    6e 29 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20  | asoning-block.'in))))).......... | 
| 58660 |  20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20    22 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b 5f 73  | ...((looking-at."content_block_s | 
| 58680 |  74 6f 70 22 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20  | top").............(cond......... | 
| 586a0 |  20 20 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74    20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a  | .....((plist-get.info.:partial_j | 
| 586c0 |  73 6f 6e 29 20 20 20 3b 45 6e 64 20 6f 66 20 74    6f 6f 6c 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20  | son)...;End.of.tool.block....... | 
| 586e0 |  20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69    6f 6e 2d 63 61 73 65 2d 75 6e 6c 65 73 73 2d 64  | ........(condition-case-unless-d | 
| 58700 |  65 62 75 67 20 6e 69 6c 20 3b 43 6f 6d 62 69 6e    65 20 70 61 72 74 69 61 6c 20 74 6f 6f 6c 20 69  | ebug.nil.;Combine.partial.tool.i | 
| 58720 |  6e 70 75 74 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28  | nputs...................(let*.(( | 
| 58740 |  61 72 67 73 2d 6a 73 6f 6e 20 28 61 70 70 6c 79    20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65  | args-json.(apply.#'concat.(nreve | 
| 58760 |  72 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69    6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f  | rse.(plist-get.info.:partial_jso | 
| 58780 |  6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | n))))..........................( | 
| 587a0 |  61 72 67 73 2d 64 65 63 6f 64 65 64 20 20 3b 48    61 6e 64 6c 65 20 62 6c 61 6e 6b 20 61 72 67 75  | args-decoded..;Handle.blank.argu | 
| 587c0 |  6d 65 6e 74 20 73 74 72 69 6e 67 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ment.strings.................... | 
| 587e0 |  20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69    6e 67 2d 65 6d 70 74 79 2d 70 20 61 72 67 73 2d  | .......(if.(string-empty-p.args- | 
| 58800 |  6a 73 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | json)........................... | 
| 58820 |  20 20 20 20 6e 69 6c 20 28 67 70 74 65 6c 2d 2d    6a 73 6f 6e 2d 72 65 61 64 2d 73 74 72 69 6e 67  | ....nil.(gptel--json-read-string | 
| 58840 |  20 61 72 67 73 2d 6a 73 6f 6e 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .args-json)))).................. | 
| 58860 |  20 20 20 3b 3b 20 41 64 64 20 74 68 65 20 69 6e    70 75 74 20 74 6f 20 74 68 65 20 74 6f 6f 6c 2d  | ...;;.Add.the.input.to.the.tool- | 
| 58880 |  63 61 6c 6c 20 73 70 65 63 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | call.spec.....................(p | 
| 588a0 |  6c 69 73 74 2d 70 75 74 20 28 63 61 72 20 28 70    6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74  | list-put.(car.(plist-get.info.:t | 
| 588c0 |  6f 6f 6c 2d 75 73 65 29 29 20 3a 69 6e 70 75 74    20 61 72 67 73 2d 64 65 63 6f 64 65 64 29 29 0a  | ool-use)).:input.args-decoded)). | 
| 588e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 49 66 20 74 68 65 72 65 20 77 61 73 20  | ................;;.If.there.was. | 
| 58900 |  61 6e 20 65 72 72 6f 72 20 69 6e 20 72 65 61 64    69 6e 67 20 74 68 61 74 20 74 6f 6f 6c 2c 20 77  | an.error.in.reading.that.tool,.w | 
| 58920 |  65 20 69 67 6e 6f 72 65 20 69 74 3a 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | e.ignore.it:.................;;. | 
| 58940 |  54 4f 44 4f 28 74 6f 6f 6c 29 20 68 61 6e 64 6c    65 20 74 68 69 73 20 65 72 72 6f 72 20 62 65 74  | TODO(tool).handle.this.error.bet | 
| 58960 |  74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 65 72 72 6f 72 20 28 70 6f 70 20  | ter.................(error.(pop. | 
| 58980 |  28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20    3a 74 6f 6f 6c 2d 75 73 65 29 29 29 29 20 3b 54  | (plist-get.info.:tool-use)))).;T | 
| 589a0 |  4f 44 4f 3a 20 6e 72 65 76 65 72 73 65 20 3a 74    6f 6f 6c 2d 75 73 65 20 6c 69 73 74 0a 20 20 20  | ODO:.nreverse.:tool-use.list.... | 
| 589c0 |  20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73    74 2d 70 75 74 20 69 6e 66 6f 20 3a 70 61 72 74  | ...........(plist-put.info.:part | 
| 589e0 |  69 61 6c 5f 6a 73 6f 6e 20 6e 69 6c 29 29 0a 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65  | ial_json.nil))...............((e | 
| 58a00 |  71 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66    6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f  | q.(plist-get.info.:reasoning-blo | 
| 58a20 |  63 6b 29 20 27 69 6e 29 20 3b 45 6e 64 20 6f 66    20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b  | ck).'in).;End.of.reasoning.block | 
| 58a40 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a  | ...............(plist-put.info.: | 
| 58a60 |  72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20    74 29 29 29 29 20 3b 53 69 67 6e 61 6c 20 65 6e  | reasoning-block.t)))).;Signal.en | 
| 58a80 |  64 20 6f 66 20 72 65 61 73 6f 6e 69 6e 67 20 73    74 72 65 61 6d 20 74 6f 20 66 69 6c 74 65 72 0a  | d.of.reasoning.stream.to.filter. | 
| 58aa0 |  0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f    6f 6b 69 6e 67 2d 61 74 20 22 6d 65 73 73 61 67  | ............((looking-at."messag | 
| 58ac0 |  65 5f 64 65 6c 74 61 22 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 3b 3b 20 63 6f 6c 6c 65 63 74  | e_delta").............;;.collect | 
| 58ae0 |  20 73 74 6f 70 5f 72 65 61 73 6f 6e 2c 20 75 73    61 67 65 5f 74 6f 6b 65 6e 73 20 61 6e 64 20 70  | .stop_reason,.usage_tokens.and.p | 
| 58b00 |  72 65 70 61 72 65 20 74 6f 6f 6c 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72  | repare.tools.............(forwar | 
| 58b20 |  64 2d 6c 69 6e 65 20 31 29 20 28 66 6f 72 77 61    72 64 2d 63 68 61 72 20 35 29 0a 20 20 20 20 20  | d-line.1).(forward-char.5)...... | 
| 58b40 |  20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74    2a 20 28 28 74 6f 6f 6c 2d 75 73 65 20 28 70 6c  | .......(when-let*.((tool-use.(pl | 
| 58b60 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f    6f 6c 2d 75 73 65 29 29 0a 20 20 20 20 20 20 20  | ist-get.info.:tool-use))........ | 
| 58b80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 72 65 73 70 6f 6e 73 65 20 28 67 70 74 65  | .................(response.(gpte | 
| 58ba0 |  6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c  | l--json-read)))...............(l | 
| 58bc0 |  65 74 2a 20 28 28 64 61 74 61 20 28 70 6c 69 73    74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61  | et*.((data.(plist-get.info.:data | 
| 58be0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 73  | ))......................(prompts | 
| 58c00 |  20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61    20 3a 6d 65 73 73 61 67 65 73 29 29 29 0a 20 20  | .(plist-get.data.:messages)))... | 
| 58c20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70    6c 69 73 74 2d 70 75 74 20 3b 20 41 70 70 65 6e  | ..............(plist-put.;.Appen | 
| 58c40 |  64 20 61 20 43 4f 50 59 20 6f 66 20 72 65 73 70    6f 6e 73 65 20 74 65 78 74 20 2b 20 74 6f 6f 6c  | d.a.COPY.of.response.text.+.tool | 
| 58c60 |  2d 75 73 65 20 74 6f 20 74 68 65 20 70 72 6f 6d    70 74 73 20 6c 69 73 74 0a 20 20 20 20 20 20 20  | -use.to.the.prompts.list........ | 
| 58c80 |  20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3a    6d 65 73 73 61 67 65 73 0a 20 20 20 20 20 20 20  | ..........data.:messages........ | 
| 58ca0 |  20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63    61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........(vconcat.............. | 
| 58cc0 |  20 20 20 20 20 70 72 6f 6d 70 74 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60  | .....prompts...................` | 
| 58ce0 |  28 28 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61    6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ((:role."assistant"............. | 
| 58d00 |  20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e    74 20 2c 28 76 63 6f 6e 63 61 74 20 3b 49 6e 73  | .........:content.,(vconcat.;Ins | 
| 58d20 |  65 72 74 20 61 6e 79 20 4c 4c 4d 20 74 65 78 74    20 61 6e 64 20 74 68 69 6e 6b 69 6e 67 20 74 65  | ert.any.LLM.text.and.thinking.te | 
| 58d40 |  78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | xt.............................. | 
| 58d60 |  20 20 20 28 61 6e 64 2d 6c 65 74 2a 20 28 28 72    65 61 73 6f 6e 69 6e 67 20 28 70 6c 69 73 74 2d  | ...(and-let*.((reasoning.(plist- | 
| 58d80 |  67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61    6c 5f 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20  | get.info.:partial_reasoning))).. | 
| 58da0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 58dc0 |  60 28 28 3a 74 79 70 65 20 22 74 68 69 6e 6b 69    6e 67 22 20 3a 74 68 69 6e 6b 69 6e 67 20 2c 72  | `((:type."thinking".:thinking.,r | 
| 58de0 |  65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | easoning........................ | 
| 58e00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 69    67 6e 61 74 75 72 65 20 2c 28 70 6c 69 73 74 2d  | .............:signature.,(plist- | 
| 58e20 |  67 65 74 20 69 6e 66 6f 20 3a 73 69 67 6e 61 74    75 72 65 29 29 29 29 0a 20 20 20 20 20 20 20 20  | get.info.:signature))))......... | 
| 58e40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74  | ........................(and-let | 
| 58e60 |  2a 20 28 28 73 74 72 73 20 28 70 6c 69 73 74 2d    67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61  | *.((strs.(plist-get.info.:partia | 
| 58e80 |  6c 5f 74 65 78 74 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l_text)))....................... | 
| 58ea0 |  20 20 20 20 20 20 20 20 20 20 20 60 28 28 3a 74    79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78 74  | ...........`((:type."text".:text | 
| 58ec0 |  20 2c 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61    74 20 28 6e 72 65 76 65 72 73 65 20 73 74 72 73  | .,(apply.#'concat.(nreverse.strs | 
| 58ee0 |  29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )))))........................... | 
| 58f00 |  20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c    61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c 6c  | ......(mapcar.(lambda.(tool-call | 
| 58f20 |  29 20 3b 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74    68 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 0a 20 20  | ).;followed.by.the.tool.calls... | 
| 58f40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 58f60 |  20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20    28 6c 69 73 74 20 3a 74 79 70 65 20 22 74 6f 6f  | ........(append.(list.:type."too | 
| 58f80 |  6c 5f 75 73 65 22 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l_use")......................... | 
| 58fa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63  | ...................(copy-sequenc | 
| 58fc0 |  65 20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.tool-call))).................. | 
| 58fe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    74 6f 6f 6c 2d 75 73 65 29 29 29 29 29 29 0a 20  | ................tool-use)))))).. | 
| 59000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a  | ...............(plist-put.info.: | 
| 59020 |  70 61 72 74 69 61 6c 5f 74 65 78 74 20 6e 69 6c    29 20 3b 20 43 6c 65 61 72 20 61 6e 79 20 63 61  | partial_text.nil).;.Clear.any.ca | 
| 59040 |  70 74 75 72 65 64 20 74 65 78 74 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54  | ptured.text.................;;.T | 
| 59060 |  68 65 6e 20 73 68 61 70 65 20 74 68 65 20 74 6f    6f 6c 2d 75 73 65 20 62 6c 6f 63 6b 20 62 79 20  | hen.shape.the.tool-use.block.by. | 
| 59080 |  61 64 64 69 6e 67 20 61 72 67 73 20 73 6f 20 77    65 20 63 61 6e 20 63 61 6c 6c 20 74 68 65 20 66  | adding.args.so.we.can.call.the.f | 
| 590a0 |  75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 61 70 63 20 28  | unctions.................(mapc.( | 
| 590c0 |  6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63 61 6c    6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | lambda.(tool-call).............. | 
| 590e0 |  20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73    74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20  | ...........(plist-put.tool-call. | 
| 59100 |  3a 61 72 67 73 20 28 70 6c 69 73 74 2d 67 65 74    20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 6e 70 75  | :args.(plist-get.tool-call.:inpu | 
| 59120 |  74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69  | t)).........................(pli | 
| 59140 |  73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c    20 3a 69 6e 70 75 74 20 6e 69 6c 29 0a 20 20 20  | st-put.tool-call.:input.nil).... | 
| 59160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20  | .....................(plist-put. | 
| 59180 |  74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 20 28 70    6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61  | tool-call.:id.(plist-get.tool-ca | 
| 591a0 |  6c 6c 20 3a 69 64 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ll.:id)))....................... | 
| 591c0 |  74 6f 6f 6c 2d 75 73 65 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d  | tool-use))...............(plist- | 
| 591e0 |  70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74    2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20  | put.info.:output-tokens......... | 
| 59200 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74  | .................(map-nested-elt | 
| 59220 |  20 72 65 73 70 6f 6e 73 65 20 27 28 3a 75 73 61    67 65 20 3a 6f 75 74 70 75 74 5f 74 6f 6b 65 6e  | .response.'(:usage.:output_token | 
| 59240 |  73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e  | s)))...............(plist-put.in | 
| 59260 |  66 6f 20 3a 73 74 6f 70 2d 72 65 61 73 6f 6e 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fo.:stop-reason................. | 
| 59280 |  20 20 20 20 20 20 20 20 20 28 6d 61 70 2d 6e 65    73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73  | .........(map-nested-elt.respons | 
| 592a0 |  65 20 27 28 3a 64 65 6c 74 61 20 3a 73 74 6f 70    5f 72 65 61 73 6f 6e 29 29 29 29 29 29 29 0a 20  | e.'(:delta.:stop_reason))))))).. | 
| 592c0 |  20 20 20 20 20 28 65 72 72 6f 72 20 28 67 6f 74    6f 2d 63 68 61 72 20 70 74 29 29 29 0a 20 20 20  | .....(error.(goto-char.pt))).... | 
| 592e0 |  20 28 6c 65 74 20 28 28 72 65 73 70 6f 6e 73 65    2d 74 65 78 74 20 28 61 70 70 6c 79 20 23 27 63  | .(let.((response-text.(apply.#'c | 
| 59300 |  6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20    63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29  | oncat.(nreverse.content-strs)))) | 
| 59320 |  0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28    73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 72  | .......(unless.(string-empty-p.r | 
| 59340 |  65 73 70 6f 6e 73 65 2d 74 65 78 74 29 0a 20 20    20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74  | esponse-text).........(plist-put | 
| 59360 |  20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 74    65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .info.:partial_text............. | 
| 59380 |  20 20 20 20 20 20 20 28 63 6f 6e 73 20 72 65 73    70 6f 6e 73 65 2d 74 65 78 74 20 28 70 6c 69 73  | .......(cons.response-text.(plis | 
| 593a0 |  74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74    69 61 6c 5f 74 65 78 74 29 29 29 29 0a 20 20 20  | t-get.info.:partial_text)))).... | 
| 593c0 |  20 20 20 28 77 68 65 6e 20 28 70 6c 69 73 74 2d    67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 73 29  | ...(when.(plist-get.info.:tools) | 
| 593e0 |  0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c    65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 20  | .........(when-let*.((reasoning. | 
| 59400 |  28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20    3a 72 65 61 73 6f 6e 69 6e 67 29 29 29 0a 20 20  | (plist-get.info.:reasoning)))... | 
| 59420 |  20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70    75 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c  | ........(plist-put.info.:partial | 
| 59440 |  5f 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | _reasoning...................... | 
| 59460 |  28 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67    65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c  | (concat.(plist-get.info.:partial | 
| 59480 |  5f 72 65 61 73 6f 6e 69 6e 67 29 20 72 65 61 73    6f 6e 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20  | _reasoning).reasoning))))....... | 
| 594a0 |  72 65 73 70 6f 6e 73 65 2d 74 65 78 74 29 29 29    0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20  | response-text)))..(cl-defmethod. | 
| 594c0 |  67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73    70 6f 6e 73 65 20 28 28 5f 62 61 63 6b 65 6e 64  | gptel--parse-response.((_backend | 
| 594e0 |  20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63    29 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29  | .gptel-anthropic).response.info) | 
| 59500 |  0a 20 20 22 50 61 72 73 65 20 61 6e 20 41 6e 74    68 72 6f 70 69 63 20 28 6e 6f 6e 2d 73 74 72 65  | ..."Parse.an.Anthropic.(non-stre | 
| 59520 |  61 6d 69 6e 67 29 20 52 45 53 50 4f 4e 53 45 20    61 6e 64 20 72 65 74 75 72 6e 20 72 65 73 70 6f  | aming).RESPONSE.and.return.respo | 
| 59540 |  6e 73 65 20 74 65 78 74 2e 0a 0a 4d 75 74 61 74    65 20 73 74 61 74 65 20 49 4e 46 4f 20 77 69 74  | nse.text...Mutate.state.INFO.wit | 
| 59560 |  68 20 72 65 73 70 6f 6e 73 65 20 6d 65 74 61 64    61 74 61 2e 22 0a 20 20 28 70 6c 69 73 74 2d 70  | h.response.metadata."...(plist-p | 
| 59580 |  75 74 20 69 6e 66 6f 20 3a 73 74 6f 70 2d 72 65    61 73 6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20  | ut.info.:stop-reason.(plist-get. | 
| 595a0 |  72 65 73 70 6f 6e 73 65 20 3a 73 74 6f 70 5f 72    65 61 73 6f 6e 29 29 0a 20 20 28 70 6c 69 73 74  | response.:stop_reason))...(plist | 
| 595c0 |  2d 70 75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75    74 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20  | -put.info.:output-tokens........ | 
| 595e0 |  20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 65    64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27  | ......(map-nested-elt.response.' | 
| 59600 |  28 3a 75 73 61 67 65 20 3a 6f 75 74 70 75 74 5f    74 6f 6b 65 6e 73 29 29 29 0a 20 20 28 63 6c 2d  | (:usage.:output_tokens)))...(cl- | 
| 59620 |  6c 6f 6f 70 0a 20 20 20 77 69 74 68 20 63 6f 6e    74 65 6e 74 20 3d 20 28 70 6c 69 73 74 2d 67 65  | loop....with.content.=.(plist-ge | 
| 59640 |  74 20 72 65 73 70 6f 6e 73 65 20 3a 63 6f 6e 74    65 6e 74 29 0a 20 20 20 66 6f 72 20 63 62 6c 6f  | t.response.:content)....for.cblo | 
| 59660 |  63 6b 20 61 63 72 6f 73 73 20 63 6f 6e 74 65 6e    74 0a 20 20 20 66 6f 72 20 74 79 70 65 20 3d 20  | ck.across.content....for.type.=. | 
| 59680 |  28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63    6b 20 3a 74 79 70 65 29 0a 20 20 20 69 66 20 28  | (plist-get.cblock.:type)....if.( | 
| 596a0 |  65 71 75 61 6c 20 74 79 70 65 20 22 74 65 78 74    22 29 0a 20 20 20 3b 3b 20 54 4f 44 4f 28 74 6f  | equal.type."text")....;;.TODO(to | 
| 596c0 |  6f 6c 29 20 63 61 6e 20 3a 74 65 78 74 20 62 65    20 3a 6e 75 6c 6c 3f 0a 20 20 20 63 6f 6c 6c 65  | ol).can.:text.be.:null?....colle | 
| 596e0 |  63 74 20 28 70 6c 69 73 74 2d 67 65 74 20 63 62    6c 6f 63 6b 20 3a 74 65 78 74 29 20 69 6e 74 6f  | ct.(plist-get.cblock.:text).into | 
| 59700 |  20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 0a 20 20    20 65 6c 73 65 20 69 66 20 28 65 71 75 61 6c 20  | .content-strs....else.if.(equal. | 
| 59720 |  74 79 70 65 20 22 74 6f 6f 6c 5f 75 73 65 22 29    0a 20 20 20 63 6f 6c 6c 65 63 74 20 63 62 6c 6f  | type."tool_use")....collect.cblo | 
| 59740 |  63 6b 20 69 6e 74 6f 20 74 6f 6f 6c 2d 75 73 65    0a 20 20 20 65 6c 73 65 20 69 66 20 28 65 71 75  | ck.into.tool-use....else.if.(equ | 
| 59760 |  61 6c 20 74 79 70 65 20 22 74 68 69 6e 6b 69 6e    67 22 29 0a 20 20 20 64 6f 0a 20 20 20 28 70 6c  | al.type."thinking")....do....(pl | 
| 59780 |  69 73 74 2d 70 75 74 0a 20 20 20 20 69 6e 66 6f    20 3a 72 65 61 73 6f 6e 69 6e 67 0a 20 20 20 20  | ist-put.....info.:reasoning..... | 
| 597a0 |  28 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67    65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69  | (concat.(plist-get.info.:reasoni | 
| 597c0 |  6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 70 6c 69 73 74 2d 67 65 74 20 63 62 6c 6f 63  | ng).............(plist-get.cbloc | 
| 597e0 |  6b 20 3a 74 68 69 6e 6b 69 6e 67 29 29 29 0a 20    20 20 66 69 6e 61 6c 6c 79 20 64 6f 0a 20 20 20  | k.:thinking)))....finally.do.... | 
| 59800 |  28 77 68 65 6e 20 74 6f 6f 6c 2d 75 73 65 0a 20    20 20 20 20 3b 3b 20 46 69 72 73 74 2c 20 61 64  | (when.tool-use......;;.First,.ad | 
| 59820 |  64 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c 20    74 6f 20 74 68 65 20 70 72 6f 6d 70 74 73 20 6c  | d.the.tool.call.to.the.prompts.l | 
| 59840 |  69 73 74 0a 20 20 20 20 20 28 6c 65 74 2a 20 28    28 64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74  | ist......(let*.((data.(plist-get | 
| 59860 |  20 69 6e 66 6f 20 3a 64 61 74 61 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70  | .info.:data)).............(promp | 
| 59880 |  74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61    74 61 20 3a 6d 65 73 73 61 67 65 73 29 29 29 0a  | ts.(plist-get.data.:messages))). | 
| 598a0 |  20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75    74 0a 20 20 20 20 20 20 20 20 64 61 74 61 20 3a  | .......(plist-put.........data.: | 
| 598c0 |  6d 65 73 73 61 67 65 73 0a 20 20 20 20 20 20 20    20 28 76 63 6f 6e 63 61 74 20 70 72 6f 6d 70 74  | messages.........(vconcat.prompt | 
| 598e0 |  73 20 60 28 28 3a 72 6f 6c 65 20 22 61 73 73 69    73 74 61 6e 74 22 20 3a 63 6f 6e 74 65 6e 74 20  | s.`((:role."assistant".:content. | 
| 59900 |  2c 63 6f 6e 74 65 6e 74 29 29 29 29 29 0a 20 20    20 20 20 3b 3b 20 54 68 65 6e 20 63 61 70 74 75  | ,content)))))......;;.Then.captu | 
| 59920 |  72 65 20 74 68 65 20 74 6f 6f 6c 20 63 61 6c 6c    20 64 61 74 61 20 66 6f 72 20 72 75 6e 6e 69 6e  | re.the.tool.call.data.for.runnin | 
| 59940 |  67 20 74 68 65 20 74 6f 6f 6c 0a 20 20 20 20 20    28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 66  | g.the.tool......(cl-loop.......f | 
| 59960 |  6f 72 20 63 61 6c 6c 2d 72 61 77 20 69 6e 20 74    6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 20 66 6f  | or.call-raw.in.tool-use.......fo | 
| 59980 |  72 20 63 61 6c 6c 20 3d 20 28 63 6f 70 79 2d 73    65 71 75 65 6e 63 65 20 63 61 6c 6c 2d 72 61 77  | r.call.=.(copy-sequence.call-raw | 
| 599a0 |  29 20 64 6f 0a 20 20 20 20 20 20 28 70 6c 69 73    74 2d 70 75 74 20 63 61 6c 6c 20 3a 61 72 67 73  | ).do.......(plist-put.call.:args | 
| 599c0 |  20 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c    20 3a 69 6e 70 75 74 29 29 0a 20 20 20 20 20 20  | .(plist-get.call.:input))....... | 
| 599e0 |  28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 20    3a 69 6e 70 75 74 20 6e 69 6c 29 0a 20 20 20 20  | (plist-put.call.:input.nil)..... | 
| 59a00 |  20 20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c    6c 20 3a 69 64 20 28 70 6c 69 73 74 2d 67 65 74  | ..(plist-put.call.:id.(plist-get | 
| 59a20 |  20 63 61 6c 6c 20 3a 69 64 29 29 0a 20 20 20 20    20 20 63 6f 6c 6c 65 63 74 20 63 61 6c 6c 20 69  | .call.:id)).......collect.call.i | 
| 59a40 |  6e 74 6f 20 63 61 6c 6c 73 0a 20 20 20 20 20 20    66 69 6e 61 6c 6c 79 20 64 6f 20 28 70 6c 69 73  | nto.calls.......finally.do.(plis | 
| 59a60 |  74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c    2d 75 73 65 20 63 61 6c 6c 73 29 29 29 0a 20 20  | t-put.info.:tool-use.calls)))... | 
| 59a80 |  20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a    20 20 20 28 61 6e 64 20 63 6f 6e 74 65 6e 74 2d  | .finally.return....(and.content- | 
| 59aa0 |  73 74 72 73 20 28 61 70 70 6c 79 20 23 27 63 6f    6e 63 61 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72  | strs.(apply.#'concat.content-str | 
| 59ac0 |  73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65    74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 71 75  | s))))..(cl-defmethod.gptel--requ | 
| 59ae0 |  65 73 74 2d 64 61 74 61 20 28 28 62 61 63 6b 65    6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70  | est-data.((backend.gptel-anthrop | 
| 59b00 |  69 63 29 20 70 72 6f 6d 70 74 73 29 0a 20 20 22    4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d  | ic).prompts)..."JSON.encode.PROM | 
| 59b20 |  50 54 53 20 66 6f 72 20 73 65 6e 64 69 6e 67 20    74 6f 20 43 68 61 74 47 50 54 2e 22 0a 20 20 28  | PTS.for.sending.to.ChatGPT."...( | 
| 59b40 |  6c 65 74 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c    69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a  | let.((prompts-plist..........`(: | 
| 59b60 |  6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d    6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d  | model.,(gptel--model-name.gptel- | 
| 59b80 |  6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20    20 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 20 67  | model)............:stream.,(or.g | 
| 59ba0 |  70 74 65 6c 2d 73 74 72 65 61 6d 20 3a 6a 73 6f    6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20  | ptel-stream.:json-false)........ | 
| 59bc0 |  20 20 20 20 3a 6d 61 78 5f 74 6f 6b 65 6e 73 20    2c 28 6f 72 20 67 70 74 65 6c 2d 6d 61 78 2d 74  | ....:max_tokens.,(or.gptel-max-t | 
| 59be0 |  6f 6b 65 6e 73 20 34 30 39 36 29 0a 20 20 20 20    20 20 20 20 20 20 20 3a 6d 65 73 73 61 67 65 73  | okens.4096)............:messages | 
| 59c00 |  20 5b 2c 40 70 72 6f 6d 70 74 73 5d 29 29 29 0a    20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d  | .[,@prompts]))).....(when.gptel- | 
| 59c20 |  2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a    20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28  | -system-message.......(if.(and.( | 
| 59c40 |  6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63 61 63    68 65 20 74 29 20 28 6d 65 6d 71 20 27 73 79 73  | or.(eq.gptel-cache.t).(memq.'sys | 
| 59c60 |  74 65 6d 20 67 70 74 65 6c 2d 63 61 63 68 65 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tem.gptel-cache))............... | 
| 59c80 |  20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63    61 70 61 62 6c 65 2d 70 20 27 63 61 63 68 65 29  | .(gptel--model-capable-p.'cache) | 
| 59ca0 |  29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 67    70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73  | )...........;;.gptel--system-mes | 
| 59cc0 |  73 61 67 65 20 69 73 20 67 75 61 72 61 6e 74 65    65 64 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e  | sage.is.guaranteed.to.be.a.strin | 
| 59ce0 |  67 0a 20 20 20 20 20 20 20 20 20 20 28 70 6c 69    73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70  | g...........(plist-put.prompts-p | 
| 59d00 |  6c 69 73 74 20 3a 73 79 73 74 65 6d 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | list.:system.................... | 
| 59d20 |  20 20 60 5b 28 3a 74 79 70 65 20 22 74 65 78 74    22 20 3a 74 65 78 74 20 2c 67 70 74 65 6c 2d 2d  | ..`[(:type."text".:text.,gptel-- | 
| 59d40 |  73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | system-message.................. | 
| 59d60 |  20 20 20 20 20 20 20 3a 63 61 63 68 65 5f 63 6f    6e 74 72 6f 6c 20 28 3a 74 79 70 65 20 22 65 70  | .......:cache_control.(:type."ep | 
| 59d80 |  68 65 6d 65 72 61 6c 22 29 29 5d 29 0a 20 20 20    20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20  | hemeral"))]).........(plist-put. | 
| 59da0 |  70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 73    79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 73 79 73  | prompts-plist.:system.gptel--sys | 
| 59dc0 |  74 65 6d 2d 6d 65 73 73 61 67 65 29 29 29 0a 20    20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74  | tem-message))).....(when.gptel-t | 
| 59de0 |  65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20    20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d  | emperature.......(plist-put.prom | 
| 59e00 |  70 74 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65    72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 65 6d  | pts-plist.:temperature.gptel-tem | 
| 59e20 |  70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 28    77 68 65 6e 20 67 70 74 65 6c 2d 75 73 65 2d 74  | perature)).....(when.gptel-use-t | 
| 59e40 |  6f 6f 6c 73 0a 20 20 20 20 20 20 28 77 68 65 6e    20 28 65 71 20 67 70 74 65 6c 2d 75 73 65 2d 74  | ools.......(when.(eq.gptel-use-t | 
| 59e60 |  6f 6f 6c 73 20 27 66 6f 72 63 65 29 0a 20 20 20    20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20  | ools.'force).........(plist-put. | 
| 59e80 |  70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74    6f 6f 6c 5f 63 68 6f 69 63 65 20 27 28 3a 74 79  | prompts-plist.:tool_choice.'(:ty | 
| 59ea0 |  70 65 20 22 61 6e 79 22 29 29 29 0a 20 20 20 20    20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 6f  | pe."any"))).......(when.gptel-to | 
| 59ec0 |  6f 6c 73 0a 20 20 20 20 20 20 20 20 28 6c 65 74    20 28 28 74 6f 6f 6c 73 2d 61 72 72 61 79 20 28  | ols.........(let.((tools-array.( | 
| 59ee0 |  67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f    6c 73 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c  | gptel--parse-tools.backend.gptel | 
| 59f00 |  2d 74 6f 6f 6c 73 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70  | -tools)))...........(plist-put.p | 
| 59f20 |  72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74 6f    6f 6c 73 20 74 6f 6f 6c 73 2d 61 72 72 61 79 29  | rompts-plist.:tools.tools-array) | 
| 59f40 |  0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e    20 28 61 6e 64 20 28 6f 72 20 28 65 71 20 67 70  | ...........(when.(and.(or.(eq.gp | 
| 59f60 |  74 65 6c 2d 63 61 63 68 65 20 74 29 20 28 6d 65    6d 71 20 27 74 6f 6f 6c 20 67 70 74 65 6c 2d 63  | tel-cache.t).(memq.'tool.gptel-c | 
| 59f80 |  61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74  | ache))......................(gpt | 
| 59fa0 |  65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c    65 2d 70 20 27 63 61 63 68 65 29 29 0a 20 20 20  | el--model-capable-p.'cache)).... | 
| 59fc0 |  20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 20    28 61 72 65 66 20 74 6f 6f 6c 73 2d 61 72 72 61  | .........(nconc.(aref.tools-arra | 
| 59fe0 |  79 20 28 31 2d 20 28 6c 65 6e 67 74 68 20 74 6f    6f 6c 73 2d 61 72 72 61 79 29 29 29 0a 20 20 20  | y.(1-.(length.tools-array))).... | 
| 5a000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    27 28 3a 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c  | ................'(:cache_control | 
| 5a020 |  20 28 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72    61 6c 22 29 29 29 29 29 29 29 0a 20 20 20 20 3b  | .(:type."ephemeral"))))))).....; | 
| 5a040 |  3b 20 4d 65 72 67 65 20 72 65 71 75 65 73 74 20    70 61 72 61 6d 73 20 77 69 74 68 20 6d 6f 64 65  | ;.Merge.request.params.with.mode | 
| 5a060 |  6c 20 61 6e 64 20 62 61 63 6b 65 6e 64 20 70 61    72 61 6d 73 2e 0a 20 20 20 20 28 67 70 74 65 6c  | l.and.backend.params......(gptel | 
| 5a080 |  2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 0a 20    20 20 20 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73  | --merge-plists......prompts-plis | 
| 5a0a0 |  74 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61    63 6b 65 6e 64 2d 72 65 71 75 65 73 74 2d 70 61  | t......(gptel-backend-request-pa | 
| 5a0c0 |  72 61 6d 73 20 67 70 74 65 6c 2d 62 61 63 6b 65    6e 64 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d  | rams.gptel-backend)......(gptel- | 
| 5a0e0 |  2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 2d 70    61 72 61 6d 73 20 20 67 70 74 65 6c 2d 6d 6f 64  | -model-request-params..gptel-mod | 
| 5a100 |  65 6c 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d    65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72  | el))))..(cl-defmethod.gptel--par | 
| 5a120 |  73 65 2d 74 6f 6f 6c 73 20 28 28 5f 62 61 63 6b    65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f  | se-tools.((_backend.gptel-anthro | 
| 5a140 |  70 69 63 29 20 74 6f 6f 6c 73 29 0a 20 20 22 50    61 72 73 65 20 54 4f 4f 4c 53 20 74 6f 20 74 68  | pic).tools)..."Parse.TOOLS.to.th | 
| 5a160 |  65 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 20    74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e 20  | e.Anthropic.API.tool.definition. | 
| 5a180 |  73 70 65 63 2e 0a 0a 54 4f 4f 4c 53 20 69 73 20    61 20 6c 69 73 74 20 6f 66 20 60 67 70 74 65 6c  | spec...TOOLS.is.a.list.of.`gptel | 
| 5a1a0 |  2d 74 6f 6f 6c 27 20 73 74 72 75 63 74 73 2c 20    77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 76  | -tool'.structs,.which.see."...(v | 
| 5a1c0 |  63 6f 6e 63 61 74 0a 20 20 20 28 6d 61 70 63 61    72 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74  | concat....(mapcar.....(lambda.(t | 
| 5a1e0 |  6f 6f 6c 29 0a 20 20 20 20 20 20 28 6c 69 73 74    20 3a 6e 61 6d 65 20 28 67 70 74 65 6c 2d 74 6f  | ool).......(list.:name.(gptel-to | 
| 5a200 |  6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72  | ol-name.tool).............:descr | 
| 5a220 |  69 70 74 69 6f 6e 20 28 67 70 74 65 6c 2d 74 6f    6f 6c 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 74  | iption.(gptel-tool-description.t | 
| 5a240 |  6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 3a 69 6e 70 75 74 5f 73 63 68 65 6d 61 20 3b  | ool).............:input_schema.; | 
| 5a260 |  4e 4f 54 45 3a 20 41 6e 74 68 72 6f 70 69 63 20    77 61 6e 74 73 20 22 7b 7d 22 20 69 66 20 74 68  | NOTE:.Anthropic.wants."{}".if.th | 
| 5a280 |  65 20 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 73    20 6e 6f 20 61 72 67 73 2c 20 6e 6f 74 20 6e 75  | e.function.takes.no.args,.not.nu | 
| 5a2a0 |  6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28    6c 69 73 74 20 3a 74 79 70 65 20 22 6f 62 6a 65  | ll.............(list.:type."obje | 
| 5a2c0 |  63 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 3b 20 53 65 65 20 74 68 65  | ct"...................;;.See.the | 
| 5a2e0 |  20 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65    6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 20 65  | .generic.implementation.for.an.e | 
| 5a300 |  78 70 6c 61 6e 61 74 69 6f 6e 20 6f 66 20 74 68    69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | xplanation.of.this.............. | 
| 5a320 |  20 20 20 20 20 3b 3b 20 74 72 61 6e 73 66 6f 72    6d 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20  | .....;;.transformation.......... | 
| 5a340 |  20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 70 65    72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20  | ..........:properties........... | 
| 5a360 |  20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........(cl-loop................ | 
| 5a380 |  20 20 20 20 66 6f 72 20 61 72 67 20 69 6e 20 28    67 70 74 65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20  | ....for.arg.in.(gptel-tool-args. | 
| 5a3a0 |  74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 66 6f 72 20 61 72 67  | tool)....................for.arg | 
| 5a3c0 |  73 70 65 63 20 3d 20 28 63 6f 70 79 2d 73 65 71    75 65 6e 63 65 20 61 72 67 29 0a 20 20 20 20 20  | spec.=.(copy-sequence.arg)...... | 
| 5a3e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f    72 20 6e 61 6d 65 20 3d 20 28 70 6c 69 73 74 2d  | ..............for.name.=.(plist- | 
| 5a400 |  67 65 74 20 61 72 67 20 3a 6e 61 6d 65 29 20 3b    68 61 6e 64 6c 65 64 20 64 69 66 66 65 72 65 6e  | get.arg.:name).;handled.differen | 
| 5a420 |  74 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 66 6f 72 20 6e 65 77 6e 61  | tly....................for.newna | 
| 5a440 |  6d 65 20 3d 20 28 6f 72 20 28 61 6e 64 20 28 6b    65 79 77 6f 72 64 70 20 6e 61 6d 65 29 20 6e 61  | me.=.(or.(and.(keywordp.name).na | 
| 5a460 |  6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | me)............................. | 
| 5a480 |  20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73    79 6d 62 6f 6c 20 28 63 6f 6e 63 61 74 20 22 3a  | .........(make-symbol.(concat.": | 
| 5a4a0 |  22 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20  | ".name)))....................do. | 
| 5a4c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3b 41 52 47 53 50 45 43 20 69 73 20 41 52 47  | .................;ARGSPEC.is.ARG | 
| 5a4e0 |  20 77 69 74 68 6f 75 74 20 75 6e 72 65 63 6f 67    6e 69 7a 65 64 20 6b 65 79 73 0a 20 20 20 20 20  | .without.unrecognized.keys...... | 
| 5a500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63    6c 2d 72 65 6d 66 20 61 72 67 73 70 65 63 20 3a  | ..............(cl-remf.argspec.: | 
| 5a520 |  6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 63 6c 2d 72 65 6d  | name)....................(cl-rem | 
| 5a540 |  66 20 61 72 67 73 70 65 63 20 3a 6f 70 74 69 6f    6e 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20  | f.argspec.:optional)............ | 
| 5a560 |  20 20 20 20 20 20 20 20 69 66 20 28 65 71 75 61    6c 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67  | ........if.(equal.(plist-get.arg | 
| 5a580 |  20 3a 74 79 70 65 29 20 22 6f 62 6a 65 63 74 22    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .:type)."object")............... | 
| 5a5a0 |  20 20 20 20 20 64 6f 20 28 75 6e 6c 65 73 73 20    28 70 6c 69 73 74 2d 6d 65 6d 62 65 72 20 61 72  | .....do.(unless.(plist-member.ar | 
| 5a5c0 |  67 73 70 65 63 20 3a 72 65 71 75 69 72 65 64 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | gspec.:required)................ | 
| 5a5e0 |  20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d    70 75 74 20 61 72 67 73 70 65 63 20 3a 72 65 71  | .........(plist-put.argspec.:req | 
| 5a600 |  75 69 72 65 64 20 5b 5d 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70  | uired.[]))....................ap | 
| 5a620 |  70 65 6e 64 20 28 6c 69 73 74 20 6e 65 77 6e 61    6d 65 20 61 72 67 73 70 65 63 29 29 0a 20 20 20  | pend.(list.newname.argspec)).... | 
| 5a640 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20  | ...............:required........ | 
| 5a660 |  20 20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e    63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ...........(vconcat............. | 
| 5a680 |  20 20 20 20 20 20 20 28 64 65 6c 71 20 6e 69 6c    20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20  | .......(delq.nil.(mapcar........ | 
| 5a6a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28  | .......................(lambda.( | 
| 5a6c0 |  61 72 67 29 20 28 61 6e 64 20 28 6e 6f 74 20 28    70 6c 69 73 74 2d 67 65 74 20 61 72 67 20 3a 6f  | arg).(and.(not.(plist-get.arg.:o | 
| 5a6e0 |  70 74 69 6f 6e 61 6c 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ptional))....................... | 
| 5a700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74  | ......................(plist-get | 
| 5a720 |  20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .arg.:name)))................... | 
| 5a740 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74    65 6c 2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f  | ............(gptel-tool-args.too | 
| 5a760 |  6c 29 29 29 29 29 29 29 0a 20 20 20 20 28 65 6e    73 75 72 65 2d 6c 69 73 74 20 74 6f 6f 6c 73 29  | l))))))).....(ensure-list.tools) | 
| 5a780 |  29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68    6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d  | )))..(cl-defmethod.gptel--parse- | 
| 5a7a0 |  74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 28 5f    62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 61 6e  | tool-results.((_backend.gptel-an | 
| 5a7c0 |  74 68 72 6f 70 69 63 29 20 74 6f 6f 6c 2d 75 73    65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 70  | thropic).tool-use)..."Return.a.p | 
| 5a7e0 |  72 6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67    20 74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c  | rompt.containing.tool.call.resul | 
| 5a800 |  74 73 20 69 6e 20 54 4f 4f 4c 2d 55 53 45 2e 0a    0a 54 4f 4f 4c 2d 55 53 45 20 69 73 20 61 20 6c  | ts.in.TOOL-USE...TOOL-USE.is.a.l | 
| 5a820 |  69 73 74 20 6f 66 20 70 6c 69 73 74 73 20 63 6f    6e 74 61 69 6e 69 6e 67 20 74 6f 6f 6c 20 6e 61  | ist.of.plists.containing.tool.na | 
| 5a840 |  6d 65 73 2c 20 61 72 67 75 6d 65 6e 74 73 20 61    6e 64 20 63 61 6c 6c 20 72 65 73 75 6c 74 73 2e  | mes,.arguments.and.call.results. | 
| 5a860 |  22 0a 20 20 3b 3b 20 28 64 65 63 6c 61 72 65 20    28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65  | "...;;.(declare.(side-effect-fre | 
| 5a880 |  65 20 74 29 29 0a 20 20 28 6c 69 73 74 0a 20 20    20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 20  | e.t))...(list....:role."user"... | 
| 5a8a0 |  20 3a 63 6f 6e 74 65 6e 74 0a 20 20 20 28 76 63    6f 6e 63 61 74 0a 20 20 20 20 28 6d 61 70 63 61  | .:content....(vconcat.....(mapca | 
| 5a8c0 |  72 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28    74 6f 6f 6c 2d 63 61 6c 6c 29 0a 20 20 20 20 20  | r......(lambda.(tool-call)...... | 
| 5a8e0 |  20 20 28 6c 65 74 2a 20 28 28 72 65 73 75 6c 74    20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c  | ..(let*.((result.(plist-get.tool | 
| 5a900 |  2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66  | -call.:result))...............(f | 
| 5a920 |  6f 72 6d 61 74 74 65 64 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74  | ormatted................(list.:t | 
| 5a940 |  79 70 65 20 22 74 6f 6f 6c 5f 72 65 73 75 6c 74    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ype."tool_result"............... | 
| 5a960 |  20 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 75 73 65    5f 69 64 20 28 70 6c 69 73 74 2d 67 65 74 20 74  | .......:tool_use_id.(plist-get.t | 
| 5a980 |  6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ool-call.:id)................... | 
| 5a9a0 |  20 20 20 3a 63 6f 6e 74 65 6e 74 20 28 69 66 20    28 73 74 72 69 6e 67 70 20 72 65 73 75 6c 74 29  | ...:content.(if.(stringp.result) | 
| 5a9c0 |  20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .result......................... | 
| 5a9e0 |  20 20 20 20 20 20 20 20 28 70 72 69 6e 31 2d 74    6f 2d 73 74 72 69 6e 67 20 72 65 73 75 6c 74 29  | ........(prin1-to-string.result) | 
| 5aa00 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70    72 6f 67 31 20 66 6f 72 6d 61 74 74 65 64 0a 20  | ))))..........(prog1.formatted.. | 
| 5aa20 |  20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20    28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d  | ..........(when.(plist-get.tool- | 
| 5aa40 |  63 61 6c 6c 20 3a 65 72 72 6f 72 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | call.:error)..............(plist | 
| 5aa60 |  2d 70 75 74 20 66 6f 72 6d 61 74 74 65 64 20 3a    69 73 5f 65 72 72 6f 72 20 74 29 29 29 29 29 0a  | -put.formatted.:is_error.t))))). | 
| 5aa80 |  20 20 20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 29    29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 4e 6f 20 60  | .....tool-use))))..;;.NOTE:.No.` | 
| 5aaa0 |  67 70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72    6f 6d 70 74 27 20 6d 65 74 68 6f 64 20 72 65 71  | gptel--inject-prompt'.method.req | 
| 5aac0 |  75 69 72 65 64 20 66 6f 72 20 67 70 74 65 6c 2d    61 6e 74 68 72 6f 70 69 63 2c 20 73 69 6e 63 65  | uired.for.gptel-anthropic,.since | 
| 5aae0 |  0a 3b 3b 20 74 68 69 73 20 69 73 20 68 61 6e 64    6c 65 64 20 62 79 20 69 74 73 20 64 65 66 67 65  | .;;.this.is.handled.by.its.defge | 
| 5ab00 |  6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61    74 69 6f 6e 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 52  | neric.implementation..;;.TODO:.R | 
| 5ab20 |  65 6d 6f 76 65 20 74 68 65 73 65 20 66 75 6e 63    74 69 6f 6e 73 20 28 23 37 39 32 29 0a 28 64 65  | emove.these.functions.(#792).(de | 
| 5ab40 |  66 75 6e 20 67 70 74 65 6c 2d 2d 61 6e 74 68 72    6f 70 69 63 2d 66 6f 72 6d 61 74 2d 74 6f 6f 6c  | fun.gptel--anthropic-format-tool | 
| 5ab60 |  2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29 0a 20 20    28 75 6e 6c 65 73 73 20 74 6f 6f 6c 2d 69 64 0a  | -id.(tool-id)...(unless.tool-id. | 
| 5ab80 |  20 20 20 20 28 73 65 74 71 20 74 6f 6f 6c 2d 69    64 20 28 73 75 62 73 74 72 69 6e 67 0a 20 20 20  | ....(setq.tool-id.(substring.... | 
| 5aba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6d 64 35 20 28 66 6f 72 6d 61 74 20 22 25 73  | ................(md5.(format."%s | 
| 5abc0 |  25 73 22 20 28 72 61 6e 64 6f 6d 29 20 28 66 6c    6f 61 74 2d 74 69 6d 65 29 29 29 0a 20 20 20 20  | %s".(random).(float-time)))..... | 
| 5abe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e    69 6c 20 32 34 29 29 29 0a 20 20 28 69 66 20 28  | ...............nil.24)))...(if.( | 
| 5ac00 |  6f 72 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69    78 2d 70 20 22 63 61 6c 6c 5f 22 20 74 6f 6f 6c  | or.(string-prefix-p."call_".tool | 
| 5ac20 |  2d 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 28    73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20  | -id)...........(string-prefix-p. | 
| 5ac40 |  22 74 6f 6f 6c 75 5f 22 20 74 6f 6f 6c 2d 69 64    29 29 0a 20 20 20 20 20 20 74 6f 6f 6c 2d 69 64  | "toolu_".tool-id)).......tool-id | 
| 5ac60 |  0a 20 20 20 20 28 66 6f 72 6d 61 74 20 22 74 6f    6f 6c 75 5f 25 73 22 20 74 6f 6f 6c 2d 69 64 29  | .....(format."toolu_%s".tool-id) | 
| 5ac80 |  29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c    2d 2d 61 6e 74 68 72 6f 70 69 63 2d 75 6e 66 6f  | ))..(defun.gptel--anthropic-unfo | 
| 5aca0 |  72 6d 61 74 2d 74 6f 6f 6c 2d 69 64 20 28 74 6f    6f 6c 2d 69 64 29 0a 20 20 28 6f 72 20 28 61 6e  | rmat-tool-id.(tool-id)...(or.(an | 
| 5acc0 |  64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20    22 74 6f 6f 6c 75 5f 5c 5c 28 2e 2b 5c 5c 29 22  | d.(string-match."toolu_\\(.+\\)" | 
| 5ace0 |  20 74 6f 6f 6c 2d 69 64 29 0a 20 20 20 20 20 20    20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69  | .tool-id)............(match-stri | 
| 5ad00 |  6e 67 20 31 20 74 6f 6f 6c 2d 69 64 29 29 0a 20    20 20 20 20 20 74 6f 6f 6c 2d 69 64 29 29 0a 0a  | ng.1.tool-id)).......tool-id)).. | 
| 5ad20 |  28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70    74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74 20  | (cl-defmethod.gptel--parse-list. | 
| 5ad40 |  28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d    61 6e 74 68 72 6f 70 69 63 29 20 70 72 6f 6d 70  | ((backend.gptel-anthropic).promp | 
| 5ad60 |  74 2d 6c 69 73 74 29 0a 20 20 28 6c 65 74 20 28    28 66 75 6c 6c 2d 70 72 6f 6d 70 74 0a 20 20 20  | t-list)...(let.((full-prompt.... | 
| 5ad80 |  20 20 20 20 20 20 28 69 66 20 28 63 6f 6e 73 70    20 28 63 61 72 20 70 72 6f 6d 70 74 2d 6c 69 73  | ......(if.(consp.(car.prompt-lis | 
| 5ada0 |  74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 29  | t))..............(let.((prompts) | 
| 5adc0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 64 6f 6c 69 73 74 20 28 65 6e 74 72 79 20  | )................(dolist.(entry. | 
| 5ade0 |  70 72 6f 6d 70 74 2d 6c 69 73 74 29 20 3b 20 41    64 76 61 6e 63 65 64 20 66 6f 72 6d 61 74 2c 20  | prompt-list).;.Advanced.format,. | 
| 5ae00 |  6c 69 73 74 20 6f 66 20 6c 69 73 74 73 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | list.of.lists..................( | 
| 5ae20 |  70 63 61 73 65 20 65 6e 74 72 79 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | pcase.entry....................( | 
| 5ae40 |  60 28 70 72 6f 6d 70 74 20 2e 20 2c 6d 73 67 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | `(prompt...,msg)................ | 
| 5ae60 |  20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74    20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 20  | .....(push.(list.:role."user"... | 
| 5ae80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63  | ..............................:c | 
| 5aea0 |  6f 6e 74 65 6e 74 20 60 5b 28 3a 74 79 70 65 20    22 74 65 78 74 22 20 3a 74 65 78 74 20 2c 28 6f  | ontent.`[(:type."text".:text.,(o | 
| 5aec0 |  72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67 29    20 6d 73 67 29 29 5d 29 0a 20 20 20 20 20 20 20  | r.(car-safe.msg).msg))])........ | 
| 5aee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20  | ...................prompts)).... | 
| 5af00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 60 28 72 65 73 70 6f 6e 73 65 20 2e 20 2c 6d  | ................(`(response...,m | 
| 5af20 |  73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c  | sg).....................(push.(l | 
| 5af40 |  69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73    74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20  | ist.:role."assistant"........... | 
| 5af60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 60  | ......................:content.` | 
| 5af80 |  5b 28 3a 74 79 70 65 20 22 74 65 78 74 22 20 3a    74 65 78 74 20 2c 28 6f 72 20 28 63 61 72 2d 73  | [(:type."text".:text.,(or.(car-s | 
| 5afa0 |  61 66 65 20 6d 73 67 29 20 6d 73 67 29 29 5d 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | afe.msg).msg))])................ | 
| 5afc0 |  20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70    74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ...........prompts))............ | 
| 5afe0 |  20 20 20 20 20 20 20 20 28 60 28 74 6f 6f 6c 20    2e 20 2c 63 61 6c 6c 29 0a 20 20 20 20 20 20 20  | ........(`(tool...,call)........ | 
| 5b000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e    6c 65 73 73 20 28 70 6c 69 73 74 2d 67 65 74 20  | .............(unless.(plist-get. | 
| 5b020 |  63 61 6c 6c 20 3a 69 64 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | call.:id)....................... | 
| 5b040 |  28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c 20    3a 69 64 20 28 67 70 74 65 6c 2d 2d 61 6e 74 68  | (plist-put.call.:id.(gptel--anth | 
| 5b060 |  72 6f 70 69 63 2d 66 6f 72 6d 61 74 2d 74 6f 6f    6c 2d 69 64 20 6e 69 6c 29 29 29 0a 20 20 20 20  | ropic-format-tool-id.nil)))..... | 
| 5b080 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c  | ................(push.(list.:rol | 
| 5b0a0 |  65 20 22 61 73 73 69 73 74 61 6e 74 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e."assistant"................... | 
| 5b0c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63    6f 6e 74 65 6e 74 20 60 5b 28 20 3a 74 79 70 65  | ..............:content.`[(.:type | 
| 5b0e0 |  20 22 74 6f 6f 6c 5f 75 73 65 22 20 3a 69 64 20    2c 28 70 6c 69 73 74 2d 67 65 74 20 63 61 6c 6c  | ."tool_use".:id.,(plist-get.call | 
| 5b100 |  20 3a 69 64 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .:id)........................... | 
| 5b120 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 6e 61 6d 65 20 2c 28 70 6c 69 73 74  | ...................:name.,(plist | 
| 5b140 |  2d 67 65 74 20 63 61 6c 6c 20 3a 6e 61 6d 65 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -get.call.:name)................ | 
| 5b160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69  | ..............................:i | 
| 5b180 |  6e 70 75 74 20 2c 28 70 6c 69 73 74 2d 67 65 74    20 63 61 6c 6c 20 3a 61 72 67 73 29 29 5d 29 0a  | nput.,(plist-get.call.:args))]). | 
| 5b1a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74  | ..........................prompt | 
| 5b1c0 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 75 73 68 20 28 67 70  | s).....................(push.(gp | 
| 5b1e0 |  74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d    72 65 73 75 6c 74 73 20 62 61 63 6b 65 6e 64 20  | tel--parse-tool-results.backend. | 
| 5b200 |  28 6c 69 73 74 20 28 63 64 72 20 65 6e 74 72 79    29 29 29 20 70 72 6f 6d 70 74 73 29 29 29 29 0a  | (list.(cdr.entry))).prompts)))). | 
| 5b220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6e 72 65 76 65 72 73 65 20 70 72 6f 6d 70 74 73  | ...............(nreverse.prompts | 
| 5b240 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 63    6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74 20  | ))............(cl-loop.for.text. | 
| 5b260 |  69 6e 20 70 72 6f 6d 70 74 2d 6c 69 73 74 20 3b    20 53 69 6d 70 6c 65 20 66 6f 72 6d 61 74 2c 20  | in.prompt-list.;.Simple.format,. | 
| 5b280 |  6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | list.of.strings................. | 
| 5b2a0 |  20 20 20 20 66 6f 72 20 72 6f 6c 65 20 3d 20 74    20 74 68 65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29  | ....for.role.=.t.then.(not.role) | 
| 5b2c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 69 66 20 74 65 78 74 0a 20 20 20  | .....................if.text.... | 
| 5b2e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a  | .................collect.(list.: | 
| 5b300 |  72 6f 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75    73 65 72 22 20 22 61 73 73 69 73 74 61 6e 74 22  | role.(if.role."user"."assistant" | 
| 5b320 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )............................... | 
| 5b340 |  20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 60 5b 28    3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65  | ....:content.`[(:type."text".:te | 
| 5b360 |  78 74 20 2c 74 65 78 74 29 5d 29 29 29 29 29 0a    20 20 20 20 3b 3b 20 63 61 63 68 65 20 6d 65 73  | xt.,text)]))))).....;;.cache.mes | 
| 5b380 |  73 61 67 65 73 20 69 66 20 72 65 71 75 69 72 65    64 3a 20 61 64 64 20 63 61 63 68 65 5f 63 6f 6e  | sages.if.required:.add.cache_con | 
| 5b3a0 |  74 72 6f 6c 20 74 6f 20 74 68 65 20 6c 61 73 74    20 6d 65 73 73 61 67 65 0a 20 20 20 20 28 77 68  | trol.to.the.last.message.....(wh | 
| 5b3c0 |  65 6e 20 28 61 6e 64 20 28 6f 72 20 28 65 71 20    67 70 74 65 6c 2d 63 61 63 68 65 20 74 29 20 28  | en.(and.(or.(eq.gptel-cache.t).( | 
| 5b3e0 |  6d 65 6d 71 20 27 6d 65 73 73 61 67 65 20 67 70    74 65 6c 2d 63 61 63 68 65 29 29 0a 20 20 20 20  | memq.'message.gptel-cache))..... | 
| 5b400 |  20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65    6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65  | ...........(gptel--model-capable | 
| 5b420 |  2d 70 20 27 63 61 63 68 65 29 29 0a 20 20 20 20    20 20 28 6e 63 6f 6e 63 20 28 61 72 65 66 20 28  | -p.'cache)).......(nconc.(aref.( | 
| 5b440 |  70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28    6c 61 73 74 20 66 75 6c 6c 2d 70 72 6f 6d 70 74  | plist-get.(car.(last.full-prompt | 
| 5b460 |  29 29 20 3a 63 6f 6e 74 65 6e 74 29 20 30 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a  | )).:content).0)..............'(: | 
| 5b480 |  63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 28 3a    74 79 70 65 20 22 65 70 68 65 6d 65 72 61 6c 22  | cache_control.(:type."ephemeral" | 
| 5b4a0 |  29 29 29 29 0a 20 20 20 20 66 75 6c 6c 2d 70 72    6f 6d 70 74 29 29 0a 0a 28 63 6c 2d 64 65 66 6d  | )))).....full-prompt))..(cl-defm | 
| 5b4c0 |  65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72    73 65 2d 62 75 66 66 65 72 20 28 28 62 61 63 6b  | ethod.gptel--parse-buffer.((back | 
| 5b4e0 |  65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f    70 69 63 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d  | end.gptel-anthropic).&optional.m | 
| 5b500 |  61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c    65 74 20 28 28 70 72 6f 6d 70 74 73 29 20 28 70  | ax-entries)...(let.((prompts).(p | 
| 5b520 |  72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 29    0a 20 20 20 20 28 69 66 20 28 6f 72 20 67 70 74  | rev-pt.(point))).....(if.(or.gpt | 
| 5b540 |  65 6c 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72    61 63 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20  | el-mode.gptel-track-response)... | 
| 5b560 |  20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e    64 20 28 6f 72 20 28 6e 6f 74 20 6d 61 78 2d 65  | ......(while.(and.(or.(not.max-e | 
| 5b580 |  6e 74 72 69 65 73 29 20 28 3e 3d 20 6d 61 78 2d    65 6e 74 72 69 65 73 20 30 29 29 0a 20 20 20 20  | ntries).(>=.max-entries.0))..... | 
| 5b5a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 67 6f 74 6f 2d 63 68 61 72 20 28 70 72 65 76  | ................(goto-char.(prev | 
| 5b5c0 |  69 6f 75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70    65 72 74 79 2d 63 68 61 6e 67 65 0a 20 20 20 20  | ious-single-property-change..... | 
| 5b5e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69  | ............................(poi | 
| 5b600 |  6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20 28    70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20  | nt).'gptel.nil.(point-min))).... | 
| 5b620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6e 6f 74 20 28 3d 20 28 70 6f 69 6e 74 29  | .................(not.(=.(point) | 
| 5b640 |  20 70 72 65 76 2d 70 74 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 3b 3b 20 48 41 43 4b 20 55 6e  | .prev-pt)))...........;;.HACK.Un | 
| 5b660 |  74 69 6c 20 77 65 20 63 61 6e 20 66 69 6e 64 20    61 20 6d 6f 72 65 20 72 6f 62 75 73 74 20 73 6f  | til.we.can.find.a.more.robust.so | 
| 5b680 |  6c 75 74 69 6f 6e 20 66 6f 72 20 65 64 69 74 69    6e 67 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | lution.for.editing...........;;. | 
| 5b6a0 |  72 65 73 70 6f 6e 73 65 73 2c 20 69 67 6e 6f 72    65 20 70 72 6f 6d 70 74 73 20 63 6f 6e 74 61 69  | responses,.ignore.prompts.contai | 
| 5b6c0 |  6e 69 6e 67 20 6f 6e 6c 79 20 77 68 69 74 65 73    70 61 63 65 2c 20 61 73 20 74 68 65 0a 20 20 20  | ning.only.whitespace,.as.the.... | 
| 5b6e0 |  20 20 20 20 20 20 20 3b 3b 20 41 6e 74 68 72 6f    70 69 63 20 41 50 49 20 63 61 6e 27 74 20 68 61  | .......;;.Anthropic.API.can't.ha | 
| 5b700 |  6e 64 6c 65 20 69 74 2e 20 20 53 65 65 20 23 34    35 32 2c 20 23 34 30 39 2c 20 23 34 30 36 2c 20  | ndle.it...See.#452,.#409,.#406,. | 
| 5b720 |  23 33 35 31 20 61 6e 64 20 23 33 32 31 0a 20 20    20 20 20 20 20 20 20 20 3b 3b 20 57 65 20 63 68  | #351.and.#321...........;;.We.ch | 
| 5b740 |  65 63 6b 20 66 6f 72 20 62 6c 61 6e 6b 20 70 72    6f 6d 70 74 73 20 62 79 20 73 6b 69 70 70 69 6e  | eck.for.blank.prompts.by.skippin | 
| 5b760 |  67 20 77 68 69 74 65 73 70 61 63 65 20 61 6e 64    20 63 6f 6d 70 61 72 69 6e 67 0a 20 20 20 20 20  | g.whitespace.and.comparing...... | 
| 5b780 |  20 20 20 20 20 3b 3b 20 70 6f 69 6e 74 20 61 67    61 69 6e 73 74 20 74 68 65 20 70 72 65 76 69 6f  | .....;;.point.against.the.previo | 
| 5b7a0 |  75 73 2e 0a 20 20 20 20 20 20 20 20 20 20 28 75    6e 6c 65 73 73 20 28 73 61 76 65 2d 65 78 63 75  | us............(unless.(save-excu | 
| 5b7c0 |  72 73 69 6f 6e 20 28 73 6b 69 70 2d 73 79 6e 74    61 78 2d 66 6f 72 77 61 72 64 20 22 20 22 29 20  | rsion.(skip-syntax-forward."."). | 
| 5b7e0 |  28 3e 3d 20 28 70 6f 69 6e 74 29 20 70 72 65 76    2d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20  | (>=.(point).prev-pt))........... | 
| 5b800 |  20 20 28 70 63 61 73 65 20 28 67 65 74 2d 63 68    61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69  | ..(pcase.(get-char-property.(poi | 
| 5b820 |  6e 74 29 20 27 67 70 74 65 6c 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 27 72 65 73 70  | nt).'gptel)...............('resp | 
| 5b840 |  6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28  | onse................(when-let*.( | 
| 5b860 |  28 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (content........................ | 
| 5b880 |  20 20 20 20 20 28 67 70 74 65 6c 2d 2d 74 72 69    6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20 20  | .....(gptel--trim-prefixes...... | 
| 5b8a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d  | ........................(buffer- | 
| 5b8c0 |  73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f    70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 20  | substring-no-properties.(point). | 
| 5b8e0 |  70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68  | prev-pt))))..................(wh | 
| 5b900 |  65 6e 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d    62 6c 61 6e 6b 2d 70 20 63 6f 6e 74 65 6e 74 29  | en.(not.(string-blank-p.content) | 
| 5b920 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74  | )....................(push.(list | 
| 5b940 |  20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e    74 22 20 3a 63 6f 6e 74 65 6e 74 20 63 6f 6e 74  | .:role."assistant".:content.cont | 
| 5b960 |  65 6e 74 29 20 70 72 6f 6d 70 74 73 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ent).prompts))))...............( | 
| 5b980 |  60 28 74 6f 6f 6c 20 2e 20 2c 69 64 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61  | `(tool...,id)................(sa | 
| 5b9a0 |  76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | ve-excursion..................(c | 
| 5b9c0 |  6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69    6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ondition-case.nil............... | 
| 5b9e0 |  20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 74    6f 6f 6c 2d 63 61 6c 6c 20 28 72 65 61 64 20 28  | .......(let*.((tool-call.(read.( | 
| 5ba00 |  63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | current-buffer)))............... | 
| 5ba20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 28 69 64 20 28 67 70 74 65 6c 2d 2d 61 6e 74  | ..............;;.(id.(gptel--ant | 
| 5ba40 |  68 72 6f 70 69 63 2d 66 6f 72 6d 61 74 2d 74 6f    6f 6c 2d 69 64 20 69 64 29 29 0a 20 20 20 20 20  | hropic-format-tool-id.id))...... | 
| 5ba60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70 6c  | .......................(name.(pl | 
| 5ba80 |  69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c    6c 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20 20  | ist-get.tool-call.:name))....... | 
| 5baa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73  | ......................(arguments | 
| 5bac0 |  20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c    2d 63 61 6c 6c 20 3a 61 72 67 73 29 29 29 0a 20  | .(plist-get.tool-call.:args))).. | 
| 5bae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74  | ......................(plist-put | 
| 5bb00 |  20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 20 69    64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .tool-call.:id.id).............. | 
| 5bb20 |  20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74    2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a  | ..........(plist-put.tool-call.: | 
| 5bb40 |  72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | result.......................... | 
| 5bb60 |  20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67    2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75  | .........(string-trim.(buffer-su | 
| 5bb80 |  62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65    72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20  | bstring-no-properties........... | 
| 5bba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 5bbc0 |  20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72    65 76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20  | ......(point).prev-pt)))........ | 
| 5bbe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 75 73 68 20 28 67 70 74 65 6c 2d 2d 70 61  | ................(push.(gptel--pa | 
| 5bc00 |  72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73    20 62 61 63 6b 65 6e 64 20 28 6c 69 73 74 20 74  | rse-tool-results.backend.(list.t | 
| 5bc20 |  6f 6f 6c 2d 63 61 6c 6c 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ool-call))...................... | 
| 5bc40 |  20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........prompts)................ | 
| 5bc60 |  20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c    69 73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73  | ........(push.(list.:role."assis | 
| 5bc80 |  74 61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tant"........................... | 
| 5bca0 |  20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e    74 20 60 5b 28 20 3a 74 79 70 65 20 22 74 6f 6f  | .........:content.`[(.:type."too | 
| 5bcc0 |  6c 5f 75 73 65 22 20 3a 69 64 20 2c 69 64 20 3a    6e 61 6d 65 20 2c 6e 61 6d 65 0a 20 20 20 20 20  | l_use".:id.,id.:name.,name...... | 
| 5bce0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 5bd00 |  20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 70 75    74 20 2c 61 72 67 75 6d 65 6e 74 73 29 5d 29 0a  | ...........:input.,arguments)]). | 
| 5bd20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f  | .............................pro | 
| 5bd40 |  6d 70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 28 65 6e 64 2d  | mpts))....................((end- | 
| 5bd60 |  6f 66 2d 66 69 6c 65 20 69 6e 76 61 6c 69 64 2d    72 65 61 64 2d 73 79 6e 74 61 78 29 0a 20 20 20  | of-file.invalid-read-syntax).... | 
| 5bd80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6d 65 73 73 61 67 65 20 28 66 6f 72 6d 61  | .................(message.(forma | 
| 5bda0 |  74 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72    73 65 20 74 6f 6f 6c 2d 63 61 6c 6c 20 25 73 20  | t."Could.not.parse.tool-call.%s. | 
| 5bdc0 |  6f 6e 20 6c 69 6e 65 20 25 73 22 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | on.line.%s"..................... | 
| 5bde0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 69 64 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72  | .................id.(line-number | 
| 5be00 |  2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29    29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | -at-pos.(point)))))))).......... | 
| 5be20 |  20 20 20 20 20 28 27 69 67 6e 6f 72 65 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e  | .....('ignore)...............('n | 
| 5be40 |  69 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3b 20 75 73 65 72 20 72 6f  | il.....................;.user.ro | 
| 5be60 |  6c 65 3a 20 70 6f 73 73 69 62 6c 79 20 77 69 74    68 20 6d 65 64 69 61 0a 20 20 20 20 20 20 20 20  | le:.possibly.with.media......... | 
| 5be80 |  20 20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c    2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 20  | .......(if.gptel-track-media.... | 
| 5bea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e  | ................(when-let*.((con | 
| 5bec0 |  74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 61 6e 74    68 72 6f 70 69 63 2d 70 61 72 73 65 2d 6d 75 6c  | tent.(gptel--anthropic-parse-mul | 
| 5bee0 |  74 69 70 61 72 74 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tipart.......................... | 
| 5bf00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d 65  | ................(gptel--parse-me | 
| 5bf20 |  64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72 2d    6d 6f 64 65 20 28 70 6f 69 6e 74 29 20 70 72 65  | dia-links.major-mode.(point).pre | 
| 5bf40 |  76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77  | v-pt))))......................(w | 
| 5bf60 |  68 65 6e 20 28 3e 20 28 6c 65 6e 67 74 68 20 63    6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20  | hen.(>.(length.content).0)...... | 
| 5bf80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72  | ..................(push.(list.:r | 
| 5bfa0 |  6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74    65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f  | ole."user".:content.content).pro | 
| 5bfc0 |  6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c  | mpts)))..................(when-l | 
| 5bfe0 |  65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 67    70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69  | et*.((content.(gptel--trim-prefi | 
| 5c000 |  78 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | xes............................. | 
| 5c020 |  20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66    65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d  | ...........(buffer-substring-no- | 
| 5c040 |  70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e    74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20  | properties.(point).prev-pt)))).. | 
| 5c060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72  | ..................(push.(list.:r | 
| 5c080 |  6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74    65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f  | ole."user".:content.content).pro | 
| 5c0a0 |  6d 70 74 73 29 29 29 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 28 73 65 74 71 20 70 72 65 76 2d  | mpts))))))...........(setq.prev- | 
| 5c0c0 |  70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20    20 20 20 20 20 20 28 61 6e 64 20 6d 61 78 2d 65  | pt.(point))...........(and.max-e | 
| 5c0e0 |  6e 74 72 69 65 73 20 28 63 6c 2d 64 65 63 66 20    6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 0a 20  | ntries.(cl-decf.max-entries))).. | 
| 5c100 |  20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20    28 28 63 6f 6e 74 65 6e 74 20 28 73 74 72 69 6e  | .....(when-let*.((content.(strin | 
| 5c120 |  67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73    75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70  | g-trim.(buffer-substring-no-prop | 
| 5c140 |  65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | erties.......................... | 
| 5c160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69  | ................(point-min).(poi | 
| 5c180 |  6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20    20 20 20 20 3b 3b 20 58 58 58 20 66 61 69 6c 73  | nt-max))))).........;;.XXX.fails | 
| 5c1a0 |  20 69 66 20 63 6f 6e 74 65 6e 74 20 69 73 20 65    6d 70 74 79 2e 20 20 54 68 65 20 63 6f 72 72 65  | .if.content.is.empty...The.corre | 
| 5c1c0 |  63 74 20 65 72 72 6f 72 20 62 65 68 61 76 69 6f    72 20 69 73 20 6c 65 66 74 20 74 6f 0a 20 20 20  | ct.error.behavior.is.left.to.... | 
| 5c1e0 |  20 20 20 20 20 3b 3b 20 61 20 66 75 74 75 72 65    20 64 69 73 63 75 73 73 69 6f 6e 2e 0a 20 20 20  | .....;;.a.future.discussion..... | 
| 5c200 |  20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74    20 3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63  | .....(push.(list.:role."user".:c | 
| 5c220 |  6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20    70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 3b  | ontent.content).prompts))).....; | 
| 5c240 |  3b 20 43 61 63 68 65 20 6d 65 73 73 61 67 65 73    20 69 66 20 72 65 71 75 69 72 65 64 3a 20 61 64  | ;.Cache.messages.if.required:.ad | 
| 5c260 |  64 20 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20    74 6f 20 74 68 65 20 6c 61 73 74 20 6d 65 73 73  | d.cache_control.to.the.last.mess | 
| 5c280 |  61 67 65 0a 20 20 20 20 28 69 66 20 28 61 6e 64    20 28 6f 72 20 28 65 71 20 67 70 74 65 6c 2d 63  | age.....(if.(and.(or.(eq.gptel-c | 
| 5c2a0 |  61 63 68 65 20 74 29 20 28 6d 65 6d 71 20 27 6d    65 73 73 61 67 65 20 67 70 74 65 6c 2d 63 61 63  | ache.t).(memq.'message.gptel-cac | 
| 5c2c0 |  68 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d  | he))..............(gptel--model- | 
| 5c2e0 |  63 61 70 61 62 6c 65 2d 70 20 27 63 61 63 68 65    29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20  | capable-p.'cache)).........(let. | 
| 5c300 |  28 28 6c 61 73 74 2d 6d 65 73 73 61 67 65 20 28    70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28  | ((last-message.(plist-get.(car.( | 
| 5c320 |  6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a    63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20  | last.prompts)).:content)))...... | 
| 5c340 |  20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67    70 20 6c 61 73 74 2d 6d 65 73 73 61 67 65 29 0a  | .....(if.(stringp.last-message). | 
| 5c360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70    6c 69 73 74 2d 70 75 74 0a 20 20 20 20 20 20 20  | ..............(plist-put........ | 
| 5c380 |  20 20 20 20 20 20 20 20 28 63 61 72 20 28 6c 61    73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a 63 6f  | ........(car.(last.prompts)).:co | 
| 5c3a0 |  6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 60 5b 28 3a 74 79 70 65 20 22 74  | ntent................`[(:type."t | 
| 5c3c0 |  65 78 74 22 20 3a 74 65 78 74 20 2c 6c 61 73 74    2d 6d 65 73 73 61 67 65 20 3a 63 61 63 68 65 5f  | ext".:text.,last-message.:cache_ | 
| 5c3e0 |  63 6f 6e 74 72 6f 6c 20 28 3a 74 79 70 65 20 22    65 70 68 65 6d 65 72 61 6c 22 29 29 5d 29 0a 20  | control.(:type."ephemeral"))]).. | 
| 5c400 |  20 20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e    63 20 28 61 72 65 66 20 28 70 6c 69 73 74 2d 67  | ...........(nconc.(aref.(plist-g | 
| 5c420 |  65 74 20 28 63 61 72 20 28 6c 61 73 74 20 70 72    6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65 6e 74  | et.(car.(last.prompts)).:content | 
| 5c440 |  29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 27 28 3a 63 61 63 68 65  | ).0)....................'(:cache | 
| 5c460 |  5f 63 6f 6e 74 72 6f 6c 20 28 3a 74 79 70 65 20    22 65 70 68 65 6d 65 72 61 6c 22 29 29 29 29 29  | _control.(:type."ephemeral"))))) | 
| 5c480 |  29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61  | ).....prompts))..(defun.gptel--a | 
| 5c4a0 |  6e 74 68 72 6f 70 69 63 2d 70 61 72 73 65 2d 6d    75 6c 74 69 70 61 72 74 20 28 70 61 72 74 73 29  | nthropic-parse-multipart.(parts) | 
| 5c4c0 |  0a 20 20 22 43 6f 6e 76 65 72 74 20 61 20 6d 75    6c 74 69 70 61 72 74 20 70 72 6f 6d 70 74 20 50  | ..."Convert.a.multipart.prompt.P | 
| 5c4e0 |  41 52 54 53 20 74 6f 20 74 68 65 20 41 6e 74 68    72 6f 70 69 63 20 41 50 49 20 66 6f 72 6d 61 74  | ARTS.to.the.Anthropic.API.format | 
| 5c500 |  2e 0a 0a 54 68 65 20 69 6e 70 75 74 20 69 73 20    61 6e 20 61 6c 69 73 74 20 6f 66 20 74 68 65 20  | ...The.input.is.an.alist.of.the. | 
| 5c520 |  66 6f 72 6d 0a 20 28 28 3a 74 65 78 74 20 5c 22    73 6f 6d 65 20 74 65 78 74 5c 22 29 0a 20 20 28  | form..((:text.\"some.text\")...( | 
| 5c540 |  3a 6d 65 64 69 61 20 5c 22 2f 70 61 74 68 2f 74    6f 2f 6d 65 64 69 61 2e 70 6e 67 5c 22 20 3a 6d  | :media.\"/path/to/media.png\".:m | 
| 5c560 |  69 6d 65 20 5c 22 69 6d 61 67 65 2f 70 6e 67 5c    22 29 0a 20 20 28 3a 74 65 78 74 20 5c 22 4d 6f  | ime.\"image/png\")...(:text.\"Mo | 
| 5c580 |  72 65 20 74 65 78 74 5c 22 29 29 2e 0a 0a 54 68    65 20 6f 75 74 70 75 74 20 69 73 20 61 20 76 65  | re.text\"))...The.output.is.a.ve | 
| 5c5a0 |  63 74 6f 72 20 6f 66 20 65 6e 74 72 69 65 73 20    69 6e 20 61 20 62 61 63 6b 65 6e 64 2d 61 70 70  | ctor.of.entries.in.a.backend-app | 
| 5c5c0 |  72 6f 70 72 69 61 74 65 0a 66 6f 72 6d 61 74 2e    22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20  | ropriate.format."...(cl-loop.... | 
| 5c5e0 |  66 6f 72 20 70 61 72 74 20 69 6e 20 70 61 72 74    73 0a 20 20 20 66 6f 72 20 6e 20 75 70 66 72 6f  | for.part.in.parts....for.n.upfro | 
| 5c600 |  6d 20 31 0a 20 20 20 77 69 74 68 20 6c 61 73 74    20 3d 20 28 6c 65 6e 67 74 68 20 70 61 72 74 73  | m.1....with.last.=.(length.parts | 
| 5c620 |  29 0a 20 20 20 77 69 74 68 20 74 79 70 65 0a 20    20 20 66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c  | )....with.type....for.text.=.(pl | 
| 5c640 |  69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65    78 74 29 0a 20 20 20 66 6f 72 20 6d 69 6d 65 20  | ist-get.part.:text)....for.mime. | 
| 5c660 |  3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72    74 20 3a 6d 69 6d 65 29 0a 20 20 20 66 6f 72 20  | =.(plist-get.part.:mime)....for. | 
| 5c680 |  6d 65 64 69 61 20 3d 20 28 70 6c 69 73 74 2d 67    65 74 20 70 61 72 74 20 3a 6d 65 64 69 61 29 0a  | media.=.(plist-get.part.:media). | 
| 5c6a0 |  20 20 20 69 66 20 74 65 78 74 20 64 6f 0a 20 20    20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e 20 31  | ...if.text.do....(and.(or.(=.n.1 | 
| 5c6c0 |  29 20 28 3d 20 6e 20 6c 61 73 74 29 29 20 28 73    65 74 71 20 74 65 78 74 20 28 67 70 74 65 6c 2d  | ).(=.n.last)).(setq.text.(gptel- | 
| 5c6e0 |  2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20 74    65 78 74 29 29 29 20 61 6e 64 0a 20 20 20 69 66  | -trim-prefixes.text))).and....if | 
| 5c700 |  20 74 65 78 74 0a 20 20 20 63 6f 6c 6c 65 63 74    20 60 28 3a 74 79 70 65 20 22 74 65 78 74 22 20  | .text....collect.`(:type."text". | 
| 5c720 |  3a 74 65 78 74 20 2c 74 65 78 74 29 20 69 6e 74    6f 20 70 61 72 74 73 2d 61 72 72 61 79 20 65 6e  | :text.,text).into.parts-array.en | 
| 5c740 |  64 0a 20 20 20 65 6c 73 65 20 69 66 20 6d 65 64    69 61 0a 20 20 20 64 6f 0a 20 20 20 28 73 65 74  | d....else.if.media....do....(set | 
| 5c760 |  71 20 74 79 70 65 20 28 63 6f 6e 64 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | q.type.(cond.................... | 
| 5c780 |  20 3b 43 75 72 72 65 6e 74 6c 79 20 73 75 70 70    6f 72 74 65 64 3a 20 49 6d 61 67 65 73 20 61 6e  | .;Currently.supported:.Images.an | 
| 5c7a0 |  64 20 50 44 46 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 28 65 71 75 61 6c 20 28 73  | d.PDFs................((equal.(s | 
| 5c7c0 |  75 62 73 74 72 69 6e 67 20 6d 69 6d 65 20 30 20    35 29 20 22 69 6d 61 67 65 22 29 20 22 69 6d 61  | ubstring.mime.0.5)."image")."ima | 
| 5c7e0 |  67 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 4f 6e 6c  | ge")................;;.NOTE:.Onl | 
| 5c800 |  79 20 43 6c 61 75 64 65 20 33 2e 35 20 53 6f 6e    6e 65 74 20 73 75 70 70 6f 72 74 73 20 50 44 46  | y.Claude.3.5.Sonnet.supports.PDF | 
| 5c820 |  20 64 6f 63 75 6d 65 6e 74 73 3a 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75  | .documents:................((equ | 
| 5c840 |  61 6c 20 6d 69 6d 65 20 22 61 70 70 6c 69 63 61    74 69 6f 6e 2f 70 64 66 22 29 20 22 64 6f 63 75  | al.mime."application/pdf")."docu | 
| 5c860 |  6d 65 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20  | ment")................(t.(error. | 
| 5c880 |  28 63 6f 6e 63 61 74 20 22 28 67 70 74 65 6c 2d    61 6e 74 68 72 6f 70 69 63 29 20 52 65 71 75 65  | (concat."(gptel-anthropic).Reque | 
| 5c8a0 |  73 74 20 61 62 6f 72 74 65 64 3a 20 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | st.aborted:."................... | 
| 5c8c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22    74 72 79 69 6e 67 20 74 6f 20 73 65 6e 64 20 75  | ..............."trying.to.send.u | 
| 5c8e0 |  6e 73 75 70 70 6f 72 74 65 64 20 4d 49 4d 45 20    74 79 70 65 20 25 73 22 29 0a 20 20 20 20 20 20  | nsupported.MIME.type.%s")....... | 
| 5c900 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 6d 69 6d 65 29 29 29 29 0a 20 20 20 61  | ...................mime))))....a | 
| 5c920 |  6e 64 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28    3a 74 79 70 65 20 2c 74 79 70 65 0a 20 20 20 20  | nd.collect....`(:type.,type..... | 
| 5c940 |  20 3a 73 6f 75 72 63 65 20 28 3a 74 79 70 65 20    22 62 61 73 65 36 34 22 0a 20 20 20 20 20 20 20  | .:source.(:type."base64"........ | 
| 5c960 |  20 20 20 20 20 20 20 3a 6d 65 64 69 61 5f 74 79    70 65 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 70  | .......:media_type.,(plist-get.p | 
| 5c980 |  61 72 74 20 3a 6d 69 6d 65 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 64 61 74 61 20 2c  | art.:mime)...............:data., | 
| 5c9a0 |  28 67 70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65    6e 63 6f 64 65 20 6d 65 64 69 61 29 29 0a 20 20  | (gptel--base64-encode.media))... | 
| 5c9c0 |  20 20 20 3b 3b 20 54 4f 44 4f 20 4d 61 6b 65 20    6d 65 64 69 61 20 63 61 63 68 69 6e 67 20 61 20  | ...;;.TODO.Make.media.caching.a. | 
| 5c9e0 |  75 73 65 72 20 6f 70 74 69 6f 6e 0a 20 20 20 20    20 2c 40 28 61 6e 64 20 28 67 70 74 65 6c 2d 2d  | user.option......,@(and.(gptel-- | 
| 5ca00 |  6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20    27 63 61 63 68 65 29 0a 20 20 20 20 20 20 20 20  | model-capable-p.'cache)......... | 
| 5ca20 |  27 28 3a 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c    20 28 3a 74 79 70 65 20 22 65 70 68 65 6d 65 72  | '(:cache_control.(:type."ephemer | 
| 5ca40 |  61 6c 22 29 29 29 29 0a 20 20 20 69 6e 74 6f 20    70 61 72 74 73 2d 61 72 72 61 79 0a 20 20 20 65  | al"))))....into.parts-array....e | 
| 5ca60 |  6c 73 65 20 69 66 20 28 70 6c 69 73 74 2d 67 65    74 20 70 61 72 74 20 3a 74 65 78 74 66 69 6c 65  | lse.if.(plist-get.part.:textfile | 
| 5ca80 |  29 20 63 6f 6c 6c 65 63 74 0a 20 20 20 60 28 3a    74 79 70 65 20 22 74 65 78 74 22 0a 20 20 20 20  | ).collect....`(:type."text"..... | 
| 5caa0 |  20 3a 74 65 78 74 20 2c 28 77 69 74 68 2d 74 65    6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20  | .:text.,(with-temp-buffer....... | 
| 5cac0 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d    69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69  | ........(gptel--insert-file-stri | 
| 5cae0 |  6e 67 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61    72 74 20 3a 74 65 78 74 66 69 6c 65 29 29 0a 20  | ng.(plist-get.part.:textfile)).. | 
| 5cb00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75    66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 20  | .............(buffer-string))).. | 
| 5cb20 |  20 20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72    61 79 0a 20 20 20 66 69 6e 61 6c 6c 79 20 72 65  | ..into.parts-array....finally.re | 
| 5cb40 |  74 75 72 6e 20 28 76 63 6f 6e 63 61 74 20 70 61    72 74 73 2d 61 72 72 61 79 29 29 29 0a 0a 28 63  | turn.(vconcat.parts-array)))..(c | 
| 5cb60 |  6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65    6c 2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f  | l-defmethod.gptel--wrap-user-pro | 
| 5cb80 |  6d 70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67    70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20  | mpt.((_backend.gptel-anthropic). | 
| 5cba0 |  70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | prompts......................... | 
| 5cbc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26    6f 70 74 69 6f 6e 61 6c 20 69 6e 6a 65 63 74 2d  | ...............&optional.inject- | 
| 5cbe0 |  6d 65 64 69 61 29 0a 20 20 22 57 72 61 70 20 74    68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72 6f  | media)..."Wrap.the.last.user.pro | 
| 5cc00 |  6d 70 74 20 69 6e 20 50 52 4f 4d 50 54 53 20 77    69 74 68 20 74 68 65 20 63 6f 6e 74 65 78 74 20  | mpt.in.PROMPTS.with.the.context. | 
| 5cc20 |  73 74 72 69 6e 67 2e 0a 0a 49 66 20 49 4e 4a 45    43 54 2d 4d 45 44 49 41 20 69 73 20 6e 6f 6e 2d  | string...If.INJECT-MEDIA.is.non- | 
| 5cc40 |  6e 69 6c 20 77 72 61 70 20 69 74 20 77 69 74 68    20 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 64 20  | nil.wrap.it.with.base64-encoded. | 
| 5cc60 |  6d 65 64 69 61 0a 66 69 6c 65 73 20 69 6e 20 74    68 65 20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 28  | media.files.in.the.context."...( | 
| 5cc80 |  69 66 20 69 6e 6a 65 63 74 2d 6d 65 64 69 61 0a    20 20 20 20 20 20 3b 3b 20 57 72 61 70 20 74 68  | if.inject-media.......;;.Wrap.th | 
| 5cca0 |  65 20 66 69 72 73 74 20 75 73 65 72 20 70 72 6f    6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 64 65  | e.first.user.prompt.with.include | 
| 5ccc0 |  64 20 6d 65 64 69 61 20 66 69 6c 65 73 2f 63 6f    6e 74 65 78 74 73 0a 20 20 20 20 20 20 28 77 68  | d.media.files/contexts.......(wh | 
| 5cce0 |  65 6e 2d 6c 65 74 2a 20 28 28 6d 65 64 69 61 2d    6c 69 73 74 20 28 67 70 74 65 6c 2d 63 6f 6e 74  | en-let*.((media-list.(gptel-cont | 
| 5cd00 |  65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64    69 61 29 29 29 0a 20 20 20 20 20 20 20 20 28 63  | ext--collect-media))).........(c | 
| 5cd20 |  6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20    28 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20  | l-callf.(lambda.(current)....... | 
| 5cd40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76    63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20  | ..............(vconcat.......... | 
| 5cd60 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74    65 6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 70 61  | ............(gptel--anthropic-pa | 
| 5cd80 |  72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20 6d 65    64 69 61 2d 6c 69 73 74 29 0a 20 20 20 20 20 20  | rse-multipart.media-list)....... | 
| 5cda0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    63 6c 2d 74 79 70 65 63 61 73 65 20 63 75 72 72  | ...............(cl-typecase.curr | 
| 5cdc0 |  65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69  | ent........................(stri | 
| 5cde0 |  6e 67 20 60 28 28 3a 74 79 70 65 20 22 74 65 78    74 22 20 3a 74 65 78 74 20 2c 63 75 72 72 65 6e  | ng.`((:type."text".:text.,curren | 
| 5ce00 |  74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63  | t)))........................(vec | 
| 5ce20 |  74 6f 72 20 63 75 72 72 65 6e 74 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tor.current).................... | 
| 5ce40 |  20 20 20 20 28 74 20 63 75 72 72 65 6e 74 29 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  | ....(t.current)))).............( | 
| 5ce60 |  70 6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 70    72 6f 6d 70 74 73 29 20 3a 63 6f 6e 74 65 6e 74  | plist-get.(car.prompts).:content | 
| 5ce80 |  29 29 29 0a 20 20 20 20 3b 3b 20 57 72 61 70 20    74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72  | ))).....;;.Wrap.the.last.user.pr | 
| 5cea0 |  6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 64    65 64 20 74 65 78 74 20 63 6f 6e 74 65 78 74 73  | ompt.with.included.text.contexts | 
| 5cec0 |  0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28    6c 61 6d 62 64 61 20 28 63 75 72 72 65 6e 74 29  | .....(cl-callf.(lambda.(current) | 
| 5cee0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 63 6c 2d 65 74 79 70 65 63 61 73 65 20 63  | .................(cl-etypecase.c | 
| 5cf00 |  75 72 72 65 6e 74 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67  | urrent...................(string | 
| 5cf20 |  20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    2d 77 72 61 70 20 63 75 72 72 65 6e 74 29 29 0a  | .(gptel-context--wrap.current)). | 
| 5cf40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 76 65 63 74 6f 72 20 28 69 66 2d 6c 65  | ..................(vector.(if-le | 
| 5cf60 |  74 2a 20 28 28 77 72 61 70 70 65 64 20 28 67 70    74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61  | t*.((wrapped.(gptel-context--wra | 
| 5cf80 |  70 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | p.nil)))........................ | 
| 5cfa0 |  20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20    60 28 28 3a 74 79 70 65 20 22 74 65 78 74 22 20  | .......(vconcat.`((:type."text". | 
| 5cfc0 |  3a 74 65 78 74 20 2c 77 72 61 70 70 65 64 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :text.,wrapped))................ | 
| 5cfe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 29  | ........................current) | 
| 5d000 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72  | .............................cur | 
| 5d020 |  72 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20    20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72  | rent)))).........(plist-get.(car | 
| 5d040 |  20 28 6c 61 73 74 20 70 72 6f 6d 70 74 73 29 29    20 3a 63 6f 6e 74 65 6e 74 29 29 29 29 0a 0a 3b  | .(last.prompts)).:content))))..; | 
| 5d060 |  3b 20 28 69 66 2d 6c 65 74 2a 20 28 28 63 6f 6e    74 65 78 74 2d 73 74 72 69 6e 67 20 28 67 70 74  | ;.(if-let*.((context-string.(gpt | 
| 5d080 |  65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 73 74 72 69    6e 67 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74  | el-context--string.gptel-context | 
| 5d0a0 |  2d 2d 61 6c 69 73 74 29 29 29 0a 3b 3b 20 20 20    20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d  | --alist))).;;.....(cl-callf.(lam | 
| 5d0c0 |  62 64 61 20 28 70 72 65 76 69 6f 75 73 29 0a 3b    3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | bda.(previous).;;............... | 
| 5d0e0 |  20 20 28 63 6c 2d 74 79 70 65 63 61 73 65 20 70    72 65 76 69 6f 75 73 0a 3b 3b 20 20 20 20 20 20  | ..(cl-typecase.previous.;;...... | 
| 5d100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74    72 69 6e 67 20 28 63 6f 6e 63 61 74 20 63 6f 6e  | .............(string.(concat.con | 
| 5d120 |  74 65 78 74 2d 73 74 72 69 6e 67 20 70 72 65 76    69 6f 75 73 29 29 0a 3b 3b 20 20 20 20 20 20 20  | text-string.previous)).;;....... | 
| 5d140 |  20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63    74 6f 72 20 28 76 63 6f 6e 63 61 74 20 60 28 28  | ............(vector.(vconcat.`(( | 
| 5d160 |  3a 74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65    78 74 20 2c 70 72 65 76 69 6f 75 73 29 29 0a 3b  | :type."text".:text.,previous)).; | 
| 5d180 |  3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ;............................... | 
| 5d1a0 |  20 20 20 20 20 70 72 65 76 69 6f 75 73 29 29 0a    3b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....previous)).;;.............. | 
| 5d1c0 |  20 20 20 20 20 28 74 20 63 6f 6e 74 65 78 74 2d    73 74 72 69 6e 67 29 29 29 0a 3b 3b 20 20 20 20  | .....(t.context-string))).;;.... | 
| 5d1e0 |  20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20    28 63 61 72 20 28 6c 61 73 74 20 70 72 6f 6d 70  | .....(plist-get.(car.(last.promp | 
| 5d200 |  74 73 29 29 20 3a 63 6f 6e 74 65 6e 74 29 29 29    0a 0a 28 64 65 66 63 6f 6e 73 74 20 67 70 74 65  | ts)).:content)))..(defconst.gpte | 
| 5d220 |  6c 2d 2d 61 6e 74 68 72 6f 70 69 63 2d 6d 6f 64    65 6c 73 0a 20 20 27 28 28 63 6c 61 75 64 65 2d  | l--anthropic-models...'((claude- | 
| 5d240 |  33 2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30    32 31 39 0a 20 20 20 20 20 3a 64 65 73 63 72 69  | 3-7-sonnet-20250219......:descri | 
| 5d260 |  70 74 69 6f 6e 20 22 48 79 62 72 69 64 20 6d 6f    64 65 6c 20 63 61 70 61 62 6c 65 20 6f 66 20 73  | ption."Hybrid.model.capable.of.s | 
| 5d280 |  74 61 6e 64 61 72 64 20 74 68 69 6e 6b 69 6e 67    20 61 6e 64 20 65 78 74 65 6e 64 65 64 20 74 68  | tandard.thinking.and.extended.th | 
| 5d2a0 |  69 6e 6b 69 6e 67 20 6d 6f 64 65 73 22 0a 20 20    20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73  | inking.modes"......:capabilities | 
| 5d2c0 |  20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65    20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69  | .(media.tool-use.cache)......:mi | 
| 5d2e0 |  6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65    2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e  | me-types.("image/jpeg"."image/pn | 
| 5d300 |  67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22    69 6d 61 67 65 2f 77 65 62 70 22 20 22 61 70 70  | g"."image/gif"."image/webp"."app | 
| 5d320 |  6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20    20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e  | lication/pdf")......:context-win | 
| 5d340 |  64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e    70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20  | dow.200......:input-cost.3...... | 
| 5d360 |  3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a    20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74  | :output-cost.15......:cutoff-dat | 
| 5d380 |  65 20 22 32 30 32 35 2d 30 32 22 29 0a 20 20 20    20 28 63 6c 61 75 64 65 2d 73 6f 6e 6e 65 74 2d  | e."2025-02").....(claude-sonnet- | 
| 5d3a0 |  34 2d 32 30 32 35 30 35 31 34 0a 20 20 20 20 20    3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48 69  | 4-20250514......:description."Hi | 
| 5d3c0 |  67 68 2d 70 65 72 66 6f 72 6d 61 6e 63 65 20 6d    6f 64 65 6c 20 77 69 74 68 20 65 78 63 65 70 74  | gh-performance.model.with.except | 
| 5d3e0 |  69 6f 6e 61 6c 20 72 65 61 73 6f 6e 69 6e 67 20    61 6e 64 20 65 66 66 69 63 69 65 6e 63 79 22 0a  | ional.reasoning.and.efficiency". | 
| 5d400 |  20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69    65 73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75  | .....:capabilities.(media.tool-u | 
| 5d420 |  73 65 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a    6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61  | se.cache)......:mime-types.("ima | 
| 5d440 |  67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f    70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22  | ge/jpeg"."image/png"."image/gif" | 
| 5d460 |  20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 61    70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29  | ."image/webp"."application/pdf") | 
| 5d480 |  0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77    69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a  | ......:context-window.200......: | 
| 5d4a0 |  69 6e 70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20    20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31  | input-cost.3......:output-cost.1 | 
| 5d4c0 |  35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64    61 74 65 20 22 32 30 32 35 2d 30 33 22 29 0a 20  | 5......:cutoff-date."2025-03").. | 
| 5d4e0 |  20 20 20 28 63 6c 61 75 64 65 2d 6f 70 75 73 2d    34 2d 32 30 32 35 30 35 31 34 0a 20 20 20 20 20  | ...(claude-opus-4-20250514...... | 
| 5d500 |  3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f    73 74 20 63 61 70 61 62 6c 65 20 6d 6f 64 65 6c  | :description."Most.capable.model | 
| 5d520 |  20 66 6f 72 20 63 6f 6d 70 6c 65 78 20 72 65 61    73 6f 6e 69 6e 67 20 61 6e 64 20 61 64 76 61 6e  | .for.complex.reasoning.and.advan | 
| 5d540 |  63 65 64 20 63 6f 64 69 6e 67 22 0a 20 20 20 20    20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28  | ced.coding"......:capabilities.( | 
| 5d560 |  6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20 63    61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69 6d 65  | media.tool-use.cache)......:mime | 
| 5d580 |  2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 6a    70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67 22  | -types.("image/jpeg"."image/png" | 
| 5d5a0 |  20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69 6d    61 67 65 2f 77 65 62 70 22 20 22 61 70 70 6c 69  | ."image/gif"."image/webp"."appli | 
| 5d5c0 |  63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20    20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f  | cation/pdf")......:context-windo | 
| 5d5e0 |  77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70 75    74 2d 63 6f 73 74 20 31 35 0a 20 20 20 20 20 3a  | w.200......:input-cost.15......: | 
| 5d600 |  6f 75 74 70 75 74 2d 63 6f 73 74 20 37 35 0a 20    20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65  | output-cost.75......:cutoff-date | 
| 5d620 |  20 22 32 30 32 35 2d 30 33 22 29 0a 20 20 20 20    28 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e  | ."2025-03").....(claude-3-5-sonn | 
| 5d640 |  65 74 2d 32 30 32 34 31 30 32 32 0a 20 20 20 20    20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48  | et-20241022......:description."H | 
| 5d660 |  69 67 68 65 73 74 20 6c 65 76 65 6c 20 6f 66 20    69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e 64  | ighest.level.of.intelligence.and | 
| 5d680 |  20 63 61 70 61 62 69 6c 69 74 79 22 0a 20 20 20    20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20  | .capability"......:capabilities. | 
| 5d6a0 |  28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73 65 20    63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d 69 6d  | (media.tool-use.cache)......:mim | 
| 5d6c0 |  65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f    6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70 6e 67  | e-types.("image/jpeg"."image/png | 
| 5d6e0 |  22 20 22 69 6d 61 67 65 2f 67 69 66 22 20 22 69    6d 61 67 65 2f 77 65 62 70 22 20 22 61 70 70 6c  | "."image/gif"."image/webp"."appl | 
| 5d700 |  69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20    20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64  | ication/pdf")......:context-wind | 
| 5d720 |  6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70    75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a  | ow.200......:input-cost.3......: | 
| 5d740 |  6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20    20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65  | output-cost.15......:cutoff-date | 
| 5d760 |  20 22 32 30 32 34 2d 30 34 22 29 0a 20 20 20 20    28 63 6c 61 75 64 65 2d 33 2d 35 2d 73 6f 6e 6e  | ."2024-04").....(claude-3-5-sonn | 
| 5d780 |  65 74 2d 32 30 32 34 30 36 32 30 0a 20 20 20 20    20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 48  | et-20240620......:description."H | 
| 5d7a0 |  69 67 68 65 73 74 20 6c 65 76 65 6c 20 6f 66 20    69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e 64  | ighest.level.of.intelligence.and | 
| 5d7c0 |  20 63 61 70 61 62 69 6c 69 74 79 20 28 65 61 72    6c 69 65 72 20 76 65 72 73 69 6f 6e 29 22 0a 20  | .capability.(earlier.version)".. | 
| 5d7e0 |  20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65    73 20 28 6d 65 64 69 61 20 74 6f 6f 6c 2d 75 73  | ....:capabilities.(media.tool-us | 
| 5d800 |  65 20 63 61 63 68 65 29 0a 20 20 20 20 20 3a 6d    69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67  | e.cache)......:mime-types.("imag | 
| 5d820 |  65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 70    6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22 20  | e/jpeg"."image/png"."image/gif". | 
| 5d840 |  22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20 20    20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64  | "image/webp")......:context-wind | 
| 5d860 |  6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70    75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20 3a  | ow.200......:input-cost.3......: | 
| 5d880 |  6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a 20    20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65  | output-cost.15......:cutoff-date | 
| 5d8a0 |  20 22 32 30 32 34 2d 30 34 22 29 0a 20 20 20 20    28 63 6c 61 75 64 65 2d 33 2d 35 2d 68 61 69 6b  | ."2024-04").....(claude-3-5-haik | 
| 5d8c0 |  75 2d 32 30 32 34 31 30 32 32 0a 20 20 20 20 20    3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e  | u-20241022......:description."In | 
| 5d8e0 |  74 65 6c 6c 69 67 65 6e 63 65 20 61 74 20 62 6c    61 7a 69 6e 67 20 73 70 65 65 64 73 22 0a 20 20  | telligence.at.blazing.speeds"... | 
| 5d900 |  20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73    20 28 74 6f 6f 6c 2d 75 73 65 20 63 61 63 68 65  | ...:capabilities.(tool-use.cache | 
| 5d920 |  29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d    77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20 20 20  | )......:context-window.200...... | 
| 5d940 |  3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 2e 30 30    0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f  | :input-cost.1.00......:output-co | 
| 5d960 |  73 74 20 35 2e 30 30 0a 20 20 20 20 20 3a 63 75    74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34 2d  | st.5.00......:cutoff-date."2024- | 
| 5d980 |  30 37 22 29 0a 20 20 20 20 28 63 6c 61 75 64 65    2d 33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39  | 07").....(claude-3-opus-20240229 | 
| 5d9a0 |  0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69    6f 6e 20 22 54 6f 70 2d 6c 65 76 65 6c 20 70 65  | ......:description."Top-level.pe | 
| 5d9c0 |  72 66 6f 72 6d 61 6e 63 65 2c 20 69 6e 74 65 6c    6c 69 67 65 6e 63 65 2c 20 66 6c 75 65 6e 63 79  | rformance,.intelligence,.fluency | 
| 5d9e0 |  2c 20 61 6e 64 20 75 6e 64 65 72 73 74 61 6e 64    69 6e 67 22 0a 20 20 20 20 20 3a 63 61 70 61 62  | ,.and.understanding"......:capab | 
| 5da00 |  69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20 74    6f 6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20  | ilities.(media.tool-use.cache).. | 
| 5da20 |  20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20    28 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69  | ....:mime-types.("image/jpeg"."i | 
| 5da40 |  6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67 65    2f 67 69 66 22 20 22 69 6d 61 67 65 2f 77 65 62  | mage/png"."image/gif"."image/web | 
| 5da60 |  70 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78    74 2d 77 69 6e 64 6f 77 20 32 30 30 0a 20 20 20  | p")......:context-window.200.... | 
| 5da80 |  20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 35    0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f  | ..:input-cost.15......:output-co | 
| 5daa0 |  73 74 20 37 35 0a 20 20 20 20 20 3a 63 75 74 6f    66 66 2d 64 61 74 65 20 22 32 30 32 33 2d 30 38  | st.75......:cutoff-date."2023-08 | 
| 5dac0 |  22 29 0a 20 20 20 20 28 63 6c 61 75 64 65 2d 33    2d 73 6f 6e 6e 65 74 2d 32 30 32 34 30 32 32 39  | ").....(claude-3-sonnet-20240229 | 
| 5dae0 |  0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69    6f 6e 20 22 42 61 6c 61 6e 63 65 20 6f 66 20 69  | ......:description."Balance.of.i | 
| 5db00 |  6e 74 65 6c 6c 69 67 65 6e 63 65 20 61 6e 64 20    73 70 65 65 64 20 28 6c 65 67 61 63 79 20 6d 6f  | ntelligence.and.speed.(legacy.mo | 
| 5db20 |  64 65 6c 29 22 0a 20 20 20 20 20 3a 63 61 70 61    62 69 6c 69 74 69 65 73 20 28 6d 65 64 69 61 20  | del)"......:capabilities.(media. | 
| 5db40 |  74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20 20 3a    6d 69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61  | tool-use)......:mime-types.("ima | 
| 5db60 |  67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f    70 6e 67 22 20 22 69 6d 61 67 65 2f 67 69 66 22  | ge/jpeg"."image/png"."image/gif" | 
| 5db80 |  20 22 69 6d 61 67 65 2f 77 65 62 70 22 29 0a 20    20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e  | ."image/webp")......:context-win | 
| 5dba0 |  64 6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e    70 75 74 2d 63 6f 73 74 20 33 0a 20 20 20 20 20  | dow.200......:input-cost.3...... | 
| 5dbc0 |  3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 35 0a    20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74  | :output-cost.15......:cutoff-dat | 
| 5dbe0 |  65 20 22 32 30 32 33 2d 30 38 22 29 0a 20 20 20    20 28 63 6c 61 75 64 65 2d 33 2d 68 61 69 6b 75  | e."2023-08").....(claude-3-haiku | 
| 5dc00 |  2d 32 30 32 34 30 33 30 37 0a 20 20 20 20 20 3a    64 65 73 63 72 69 70 74 69 6f 6e 20 22 46 61 73  | -20240307......:description."Fas | 
| 5dc20 |  74 20 61 6e 64 20 6d 6f 73 74 20 63 6f 6d 70 61    63 74 20 6d 6f 64 65 6c 20 66 6f 72 20 6e 65 61  | t.and.most.compact.model.for.nea | 
| 5dc40 |  72 2d 69 6e 73 74 61 6e 74 20 72 65 73 70 6f 6e    73 69 76 65 6e 65 73 73 22 0a 20 20 20 20 20 3a  | r-instant.responsiveness"......: | 
| 5dc60 |  63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f    6f 6c 2d 75 73 65 20 63 61 63 68 65 29 0a 20 20  | capabilities.(tool-use.cache)... | 
| 5dc80 |  20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64    6f 77 20 32 30 30 0a 20 20 20 20 20 3a 69 6e 70  | ...:context-window.200......:inp | 
| 5dca0 |  75 74 2d 63 6f 73 74 20 30 2e 32 35 0a 20 20 20    20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31  | ut-cost.0.25......:output-cost.1 | 
| 5dcc0 |  2e 32 35 0a 20 20 20 20 20 3a 63 75 74 6f 66 66    2d 64 61 74 65 20 22 32 30 32 33 2d 30 38 22 29  | .25......:cutoff-date."2023-08") | 
| 5dce0 |  29 0a 20 20 22 4c 69 73 74 20 6f 66 20 61 76 61    69 6c 61 62 6c 65 20 41 6e 74 68 72 6f 70 69 63  | )..."List.of.available.Anthropic | 
| 5dd00 |  20 6d 6f 64 65 6c 73 20 61 6e 64 20 61 73 73 6f    63 69 61 74 65 64 20 70 72 6f 70 65 72 74 69 65  | .models.and.associated.propertie | 
| 5dd20 |  73 2e 0a 4b 65 79 73 3a 0a 0a 2d 20 60 3a 64 65    73 63 72 69 70 74 69 6f 6e 27 3a 20 61 20 62 72  | s..Keys:..-.`:description':.a.br | 
| 5dd40 |  69 65 66 20 64 65 73 63 72 69 70 74 69 6f 6e 20    6f 66 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d  | ief.description.of.the.model...- | 
| 5dd60 |  20 60 3a 63 61 70 61 62 69 6c 69 74 69 65 73 27    3a 20 61 20 6c 69 73 74 20 6f 66 20 63 61 70 61  | .`:capabilities':.a.list.of.capa | 
| 5dd80 |  62 69 6c 69 74 69 65 73 20 73 75 70 70 6f 72 74    65 64 20 62 79 20 74 68 65 20 6d 6f 64 65 6c 2e  | bilities.supported.by.the.model. | 
| 5dda0 |  0a 0a 2d 20 60 3a 6d 69 6d 65 2d 74 79 70 65 73    27 3a 20 61 20 6c 69 73 74 20 6f 66 20 73 75 70  | ..-.`:mime-types':.a.list.of.sup | 
| 5ddc0 |  70 6f 72 74 65 64 20 4d 49 4d 45 20 74 79 70 65    73 20 66 6f 72 20 6d 65 64 69 61 20 66 69 6c 65  | ported.MIME.types.for.media.file | 
| 5dde0 |  73 2e 0a 0a 2d 20 60 3a 63 6f 6e 74 65 78 74 2d    77 69 6e 64 6f 77 27 3a 20 74 68 65 20 63 6f 6e  | s...-.`:context-window':.the.con | 
| 5de00 |  74 65 78 74 20 77 69 6e 64 6f 77 20 73 69 7a 65    2c 20 69 6e 20 74 68 6f 75 73 61 6e 64 73 20 6f  | text.window.size,.in.thousands.o | 
| 5de20 |  66 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 69    6e 70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65 20  | f.tokens...-.`:input-cost':.the. | 
| 5de40 |  69 6e 70 75 74 20 63 6f 73 74 2c 20 69 6e 20 55    53 20 64 6f 6c 6c 61 72 73 20 70 65 72 20 6d 69  | input.cost,.in.US.dollars.per.mi | 
| 5de60 |  6c 6c 69 6f 6e 20 74 6f 6b 65 6e 73 2e 0a 0a 2d    20 60 3a 6f 75 74 70 75 74 2d 63 6f 73 74 27 3a  | llion.tokens...-.`:output-cost': | 
| 5de80 |  20 74 68 65 20 6f 75 74 70 75 74 20 63 6f 73 74    2c 20 69 6e 20 55 53 20 64 6f 6c 6c 61 72 73 20  | .the.output.cost,.in.US.dollars. | 
| 5dea0 |  70 65 72 20 6d 69 6c 6c 69 6f 6e 20 74 6f 6b 65    6e 73 2e 0a 0a 2d 20 60 3a 63 75 74 6f 66 66 2d  | per.million.tokens...-.`:cutoff- | 
| 5dec0 |  64 61 74 65 27 3a 20 74 68 65 20 6b 6e 6f 77 6c    65 64 67 65 20 63 75 74 6f 66 66 20 64 61 74 65  | date':.the.knowledge.cutoff.date | 
| 5dee0 |  2e 0a 0a 2d 20 60 3a 72 65 71 75 65 73 74 2d 70    61 72 61 6d 73 27 3a 20 61 20 70 6c 69 73 74 20  | ...-.`:request-params':.a.plist. | 
| 5df00 |  6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 72 65    71 75 65 73 74 20 70 61 72 61 6d 65 74 65 72 73  | of.additional.request.parameters | 
| 5df20 |  20 74 6f 0a 20 20 69 6e 63 6c 75 64 65 20 77 68    65 6e 20 75 73 69 6e 67 20 74 68 69 73 20 6d 6f  | .to...include.when.using.this.mo | 
| 5df40 |  64 65 6c 2e 0a 0a 49 6e 66 6f 72 6d 61 74 69 6f    6e 20 61 62 6f 75 74 20 74 68 65 20 41 6e 74 68  | del...Information.about.the.Anth | 
| 5df60 |  72 6f 70 69 63 20 6d 6f 64 65 6c 73 20 77 61 73    20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74  | ropic.models.was.obtained.from.t | 
| 5df80 |  68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 63 6f 6d    70 61 72 69 73 6f 6e 20 74 61 62 6c 65 3a 0a 0a  | he.following.comparison.table:.. | 
| 5dfa0 |  55 52 4c 20 60 68 74 74 70 73 3a 2f 2f 64 6f 63    73 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 2f  | URL.`https://docs.anthropic.com/ | 
| 5dfc0 |  65 6e 2f 64 6f 63 73 2f 61 62 6f 75 74 2d 63 6c    61 75 64 65 2f 6d 6f 64 65 6c 73 23 6d 6f 64 65  | en/docs/about-claude/models#mode | 
| 5dfe0 |  6c 2d 63 6f 6d 70 61 72 69 73 6f 6e 2d 74 61 62    6c 65 27 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74  | l-comparison-table'")..;;;###aut | 
| 5e000 |  6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20    67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72  | oload.(cl-defun.gptel-make-anthr | 
| 5e020 |  6f 70 69 63 0a 20 20 20 20 28 6e 61 6d 65 20 26    6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 73 74  | opic.....(name.&key.curl-args.st | 
| 5e040 |  72 65 61 6d 20 6b 65 79 20 72 65 71 75 65 73 74    2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20  | ream.key.request-params......... | 
| 5e060 |  20 20 28 68 65 61 64 65 72 0a 20 20 20 20 20 20    20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20  | ..(header............(lambda.(). | 
| 5e080 |  28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6b 65 79    20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69  | (when-let*.((key.(gptel--get-api | 
| 5e0a0 |  2d 6b 65 79 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 78  | -key)))....................`(("x | 
| 5e0c0 |  2d 61 70 69 2d 6b 65 79 22 20 2e 20 2c 6b 65 79    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -api-key"...,key)............... | 
| 5e0e0 |  20 20 20 20 20 20 20 28 22 61 6e 74 68 72 6f 70    69 63 2d 76 65 72 73 69 6f 6e 22 20 2e 20 22 32  | .......("anthropic-version"..."2 | 
| 5e100 |  30 32 33 2d 30 36 2d 30 31 22 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | 023-06-01")..................... | 
| 5e120 |  20 28 22 61 6e 74 68 72 6f 70 69 63 2d 62 65 74    61 22 20 2e 20 22 70 64 66 73 2d 32 30 32 34 2d  | .("anthropic-beta"..."pdfs-2024- | 
| 5e140 |  30 39 2d 32 35 22 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 61  | 09-25")......................("a | 
| 5e160 |  6e 74 68 72 6f 70 69 63 2d 62 65 74 61 22 20 2e    20 22 70 72 6f 6d 70 74 2d 63 61 63 68 69 6e 67  | nthropic-beta"..."prompt-caching | 
| 5e180 |  2d 32 30 32 34 2d 30 37 2d 33 31 22 29 29 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64  | -2024-07-31")))))...........(mod | 
| 5e1a0 |  65 6c 73 20 67 70 74 65 6c 2d 2d 61 6e 74 68 72    6f 70 69 63 2d 6d 6f 64 65 6c 73 29 0a 20 20 20  | els.gptel--anthropic-models).... | 
| 5e1c0 |  20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61 70    69 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 22  | .......(host."api.anthropic.com" | 
| 5e1e0 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f    74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29 0a 20  | )...........(protocol."https").. | 
| 5e200 |  20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69    6e 74 20 22 2f 76 31 2f 6d 65 73 73 61 67 65 73  | .........(endpoint."/v1/messages | 
| 5e220 |  22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20    61 6e 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49  | "))..."Register.an.Anthropic.API | 
| 5e240 |  2d 63 6f 6d 70 61 74 69 62 6c 65 20 62 61 63 6b    65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69  | -compatible.backend.for.gptel.wi | 
| 5e260 |  74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72    64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55  | th.NAME...Keyword.arguments:..CU | 
| 5e280 |  52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61    6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20  | RL-ARGS.(optional).is.a.list.of. | 
| 5e2a0 |  61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20    61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54  | additional.Curl.arguments...HOST | 
| 5e2c0 |  20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74    68 65 20 41 50 49 20 68 6f 73 74 2c 20 5c 22 61  | .(optional).is.the.API.host,.\"a | 
| 5e2e0 |  70 69 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d    5c 22 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a  | pi.anthropic.com\".by.default... | 
| 5e300 |  4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74    20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f  | MODELS.is.a.list.of.available.mo | 
| 5e320 |  64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 73 79    6d 62 6f 6c 73 2e 0a 41 64 64 69 74 69 6f 6e 61  | del.names,.as.symbols..Additiona | 
| 5e340 |  6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 73 70 65    63 69 66 79 20 73 75 70 70 6f 72 74 65 64 20 4c  | lly,.you.can.specify.supported.L | 
| 5e360 |  4c 4d 20 63 61 70 61 62 69 6c 69 74 69 65 73 20    6c 69 6b 65 0a 76 69 73 69 6f 6e 20 6f 72 20 74  | LM.capabilities.like.vision.or.t | 
| 5e380 |  6f 6f 6c 2d 75 73 65 20 62 79 20 61 70 70 65 6e    64 69 6e 67 20 61 20 70 6c 69 73 74 20 74 6f 20  | ool-use.by.appending.a.plist.to. | 
| 5e3a0 |  74 68 65 20 6d 6f 64 65 6c 20 77 69 74 68 20 6d    6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c  | the.model.with.more.information, | 
| 5e3c0 |  20 69 6e 20 74 68 65 20 66 6f 72 6d 0a 0a 20 28    6d 6f 64 65 6c 2d 6e 61 6d 65 20 2e 20 70 6c 69  | .in.the.form...(model-name...pli | 
| 5e3e0 |  73 74 29 0a 0a 46 6f 72 20 61 20 6c 69 73 74 20    6f 66 20 63 75 72 72 65 6e 74 6c 79 20 72 65 63  | st)..For.a.list.of.currently.rec | 
| 5e400 |  6f 67 6e 69 7a 65 64 20 70 6c 69 73 74 20 6b 65    79 73 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 2d  | ognized.plist.keys,.see.`gptel-- | 
| 5e420 |  61 6e 74 68 72 6f 70 69 63 2d 6d 6f 64 65 6c 73    27 2e 20 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66  | anthropic-models'..An.example.of | 
| 5e440 |  20 61 20 6d 6f 64 65 6c 20 73 70 65 63 69 66 69    63 61 74 69 6f 6e 0a 69 6e 63 6c 75 64 69 6e 67  | .a.model.specification.including | 
| 5e460 |  20 62 6f 74 68 20 6b 69 6e 64 73 20 6f 66 20 73    70 65 63 73 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a 5c  | .both.kinds.of.specs:..:models.\ | 
| 5e480 |  5c 3d 27 28 63 6c 61 75 64 65 2d 33 2d 68 61 69    6b 75 2d 32 30 32 34 30 33 30 37 20 20 20 20 20  | \='(claude-3-haiku-20240307..... | 
| 5e4a0 |  20 20 20 20 20 20 20 20 20 20 3b 53 69 6d 70 6c    65 20 73 70 65 63 73 0a 20 20 63 6c 61 75 64 65  | ..........;Simple.specs...claude | 
| 5e4c0 |  2d 33 2d 6f 70 75 73 2d 32 30 32 34 30 32 32 39    0a 20 20 28 63 6c 61 75 64 65 2d 33 2d 35 2d 73  | -3-opus-20240229...(claude-3-5-s | 
| 5e4e0 |  6f 6e 6e 65 74 2d 32 30 32 34 30 36 32 30 20 20    20 20 20 20 20 20 20 20 20 3b 46 75 6c 6c 20 73  | onnet-20240620...........;Full.s | 
| 5e500 |  70 65 63 0a 20 20 20 3a 64 65 73 63 72 69 70 74    69 6f 6e 20 20 5c 22 42 61 6c 61 6e 63 65 20 6f  | pec....:description..\"Balance.o | 
| 5e520 |  66 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 61    6e 64 20 73 70 65 65 64 5c 22 0a 20 20 20 3a 63  | f.intelligence.and.speed\"....:c | 
| 5e540 |  61 70 61 62 69 6c 69 74 69 65 73 20 28 6d 65 64    69 61 20 74 6f 6f 6c 20 6a 73 6f 6e 29 0a 20 20  | apabilities.(media.tool.json)... | 
| 5e560 |  20 3a 6d 69 6d 65 2d 74 79 70 65 73 0a 20 20 20    28 5c 22 69 6d 61 67 65 2f 6a 70 65 67 5c 22 20  | .:mime-types....(\"image/jpeg\". | 
| 5e580 |  5c 22 69 6d 61 67 65 2f 70 6e 67 5c 22 20 5c 22    69 6d 61 67 65 2f 67 69 66 5c 22 20 5c 22 69 6d  | \"image/png\".\"image/gif\".\"im | 
| 5e5a0 |  61 67 65 2f 77 65 62 70 5c 22 29 29 29 0a 0a 53    54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65  | age/webp\")))..STREAM.is.a.boole | 
| 5e5c0 |  61 6e 20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72    65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73  | an.to.toggle.streaming.responses | 
| 5e5e0 |  2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61    6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28  | ,.defaults.to.false...PROTOCOL.( | 
| 5e600 |  6f 70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66    69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c  | optional).specifies.the.protocol | 
| 5e620 |  2c 20 68 74 74 70 73 20 62 79 20 64 65 66 61 75    6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f  | ,.https.by.default...ENDPOINT.(o | 
| 5e640 |  70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20    41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72  | ptional).is.the.API.endpoint.for | 
| 5e660 |  20 63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65    66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31 2f  | .completions,.defaults.to.\"/v1/ | 
| 5e680 |  6d 65 73 73 61 67 65 73 5c 22 2e 0a 0a 48 45 41    44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69  | messages\"...HEADER.(optional).i | 
| 5e6a0 |  73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c    20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64  | s.for.additional.headers.to.send | 
| 5e6c0 |  20 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65    73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62  | .with.each.request...It.should.b | 
| 5e6e0 |  65 20 61 6e 20 61 6c 69 73 74 20 6f 72 20 61 20    66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65  | e.an.alist.or.a.function.that.re | 
| 5e700 |  74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c    69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e  | tuns.an.alist,.like:..((\"Conten | 
| 5e720 |  74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61 70 70    6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29  | t-Type\"...\"application/json\") | 
| 5e740 |  29 0a 0a 4b 45 59 20 69 73 20 61 20 76 61 72 69    61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65  | )..KEY.is.a.variable.whose.value | 
| 5e760 |  20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c    20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 61  | .is.the.API.key,.or.function.tha | 
| 5e780 |  74 0a 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65    79 2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41  | t.returns.the.key...REQUEST-PARA | 
| 5e7a0 |  4d 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73    20 61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69  | MS.(optional).is.a.plist.of.addi | 
| 5e7c0 |  74 69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75    65 73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28  | tional.HTTP.request.parameters.( | 
| 5e7e0 |  61 73 20 70 6c 69 73 74 20 6b 65 79 73 29 20 61    6e 64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72  | as.plist.keys).and.values.suppor | 
| 5e800 |  74 65 64 20 62 79 20 74 68 65 20 41 50 49 2e 20    20 55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65  | ted.by.the.API...Use.these.to.se | 
| 5e820 |  74 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61    74 20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74  | t.parameters.that.gptel.does.not | 
| 5e840 |  20 70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70    74 69 6f 6e 73 0a 66 6f 72 2e 22 0a 20 20 28 64  | .provide.user.options.for."...(d | 
| 5e860 |  65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31    29 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b  | eclare.(indent.1))...(let.((back | 
| 5e880 |  65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65    2d 61 6e 74 68 72 6f 70 69 63 0a 20 20 20 20 20  | end.(gptel--make-anthropic...... | 
| 5e8a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75    72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67  | .............:curl-args.curl-arg | 
| 5e8c0 |  73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20  | s...................:name.name.. | 
| 5e8e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20  | .................:host.host..... | 
| 5e900 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68    65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20  | ..............:header.header.... | 
| 5e920 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20  | ...............:key.key......... | 
| 5e940 |  20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c    73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73  | ..........:models.(gptel--proces | 
| 5e960 |  73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s-models.models)................ | 
| 5e980 |  20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f    74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20  | ...:protocol.protocol........... | 
| 5e9a0 |  20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e    74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20  | ........:endpoint.endpoint...... | 
| 5e9c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74    72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20  | .............:stream.stream..... | 
| 5e9e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72    65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65  | ..............:request-params.re | 
| 5ea00 |  71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | quest-params...................: | 
| 5ea20 |  75 72 6c 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | url.(if.protocol................ | 
| 5ea40 |  20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e    63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f  | ............(concat.protocol.":/ | 
| 5ea60 |  2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | /".host.endpoint)............... | 
| 5ea80 |  20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63    61 74 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74  | ...........(concat.host.endpoint | 
| 5eaa0 |  29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31    20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28  | ))))).....(prog1.backend.......( | 
| 5eac0 |  73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20    6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77  | setf.(alist-get.name.gptel--know | 
| 5eae0 |  6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n-backends...................... | 
| 5eb00 |  20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61    6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..nil.nil.#'equal).............. | 
| 5eb20 |  20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 29 29    0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65  | .....backend))))..(provide.'gpte | 
| 5eb40 |  6c 2d 61 6e 74 68 72 6f 70 69 63 29 0a 3b 3b 3b    20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63  | l-anthropic).;;;.gptel-anthropic | 
| 5eb60 |  2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b    3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65  | .el.ends.here..;;.Local.Variable | 
| 5eb80 |  73 3a 0a 3b 3b 20 62 79 74 65 2d 63 6f 6d 70 69    6c 65 2d 77 61 72 6e 69 6e 67 73 3a 20 28 6e 6f  | s:.;;.byte-compile-warnings:.(no | 
| 5eba0 |  74 20 64 6f 63 73 74 72 69 6e 67 73 29 0a 3b 3b    20 45 6e 64 3a 0a 0a 00 00 00 00 00 00 00 00 00  | t.docstrings).;;.End:........... | 
| 5ebc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ebe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ec00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 4c 49    43 45 4e 53 45 00 00 00 00 00 00 00 00 00 00 00  | gptel-0.9.8.5/LICENSE........... | 
| 5ec20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ec40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ec60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 5ec80 |  30 31 30 34 35 31 31 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 32 34 35 34 00 20 30 00 00 00  | 0104511.00000000000.012454..0... | 
| 5eca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ecc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ece0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ed00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 5ed20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 5ed40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ed60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ed80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5eda0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5edc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ede0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 5ee00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 47 4e 55 20 47 45 4e 45 52 41 4c 20  | ....................GNU.GENERAL. | 
| 5ee20 |  50 55 42 4c 49 43 20 4c 49 43 45 4e 53 45 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | PUBLIC.LICENSE.................. | 
| 5ee40 |  20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 33 2c    20 32 39 20 4a 75 6e 65 20 32 30 30 37 0a 0a 20  | ......Version.3,.29.June.2007... | 
| 5ee60 |  43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30    30 37 20 46 72 65 65 20 53 6f 66 74 77 61 72 65  | Copyright.(C).2007.Free.Software | 
| 5ee80 |  20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63    2e 20 3c 68 74 74 70 73 3a 2f 2f 66 73 66 2e 6f  | .Foundation,.Inc..<https://fsf.o | 
| 5eea0 |  72 67 2f 3e 0a 20 45 76 65 72 79 6f 6e 65 20 69    73 20 70 65 72 6d 69 74 74 65 64 20 74 6f 20 63  | rg/>..Everyone.is.permitted.to.c | 
| 5eec0 |  6f 70 79 20 61 6e 64 20 64 69 73 74 72 69 62 75    74 65 20 76 65 72 62 61 74 69 6d 20 63 6f 70 69  | opy.and.distribute.verbatim.copi | 
| 5eee0 |  65 73 0a 20 6f 66 20 74 68 69 73 20 6c 69 63 65    6e 73 65 20 64 6f 63 75 6d 65 6e 74 2c 20 62 75  | es..of.this.license.document,.bu | 
| 5ef00 |  74 20 63 68 61 6e 67 69 6e 67 20 69 74 20 69 73    20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 0a 0a 20  | t.changing.it.is.not.allowed.... | 
| 5ef20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 50 72 65 61 6d  | ...........................Pream | 
| 5ef40 |  62 6c 65 0a 0a 20 20 54 68 65 20 47 4e 55 20 47    65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69  | ble....The.GNU.General.Public.Li | 
| 5ef60 |  63 65 6e 73 65 20 69 73 20 61 20 66 72 65 65 2c    20 63 6f 70 79 6c 65 66 74 20 6c 69 63 65 6e 73  | cense.is.a.free,.copyleft.licens | 
| 5ef80 |  65 20 66 6f 72 0a 73 6f 66 74 77 61 72 65 20 61    6e 64 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 6f  | e.for.software.and.other.kinds.o | 
| 5efa0 |  66 20 77 6f 72 6b 73 2e 0a 0a 20 20 54 68 65 20    6c 69 63 65 6e 73 65 73 20 66 6f 72 20 6d 6f 73  | f.works.....The.licenses.for.mos | 
| 5efc0 |  74 20 73 6f 66 74 77 61 72 65 20 61 6e 64 20 6f    74 68 65 72 20 70 72 61 63 74 69 63 61 6c 20 77  | t.software.and.other.practical.w | 
| 5efe0 |  6f 72 6b 73 20 61 72 65 20 64 65 73 69 67 6e 65    64 0a 74 6f 20 74 61 6b 65 20 61 77 61 79 20 79  | orks.are.designed.to.take.away.y | 
| 5f000 |  6f 75 72 20 66 72 65 65 64 6f 6d 20 74 6f 20 73    68 61 72 65 20 61 6e 64 20 63 68 61 6e 67 65 20  | our.freedom.to.share.and.change. | 
| 5f020 |  74 68 65 20 77 6f 72 6b 73 2e 20 20 42 79 20 63    6f 6e 74 72 61 73 74 2c 0a 74 68 65 20 47 4e 55  | the.works...By.contrast,.the.GNU | 
| 5f040 |  20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20    4c 69 63 65 6e 73 65 20 69 73 20 69 6e 74 65 6e  | .General.Public.License.is.inten | 
| 5f060 |  64 65 64 20 74 6f 20 67 75 61 72 61 6e 74 65 65    20 79 6f 75 72 20 66 72 65 65 64 6f 6d 20 74 6f  | ded.to.guarantee.your.freedom.to | 
| 5f080 |  0a 73 68 61 72 65 20 61 6e 64 20 63 68 61 6e 67    65 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f  | .share.and.change.all.versions.o | 
| 5f0a0 |  66 20 61 20 70 72 6f 67 72 61 6d 2d 2d 74 6f 20    6d 61 6b 65 20 73 75 72 65 20 69 74 20 72 65 6d  | f.a.program--to.make.sure.it.rem | 
| 5f0c0 |  61 69 6e 73 20 66 72 65 65 0a 73 6f 66 74 77 61    72 65 20 66 6f 72 20 61 6c 6c 20 69 74 73 20 75  | ains.free.software.for.all.its.u | 
| 5f0e0 |  73 65 72 73 2e 20 20 57 65 2c 20 74 68 65 20 46    72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75  | sers...We,.the.Free.Software.Fou | 
| 5f100 |  6e 64 61 74 69 6f 6e 2c 20 75 73 65 20 74 68 65    0a 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62  | ndation,.use.the.GNU.General.Pub | 
| 5f120 |  6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20    6d 6f 73 74 20 6f 66 20 6f 75 72 20 73 6f 66 74  | lic.License.for.most.of.our.soft | 
| 5f140 |  77 61 72 65 3b 20 69 74 20 61 70 70 6c 69 65 73    20 61 6c 73 6f 20 74 6f 0a 61 6e 79 20 6f 74 68  | ware;.it.applies.also.to.any.oth | 
| 5f160 |  65 72 20 77 6f 72 6b 20 72 65 6c 65 61 73 65 64    20 74 68 69 73 20 77 61 79 20 62 79 20 69 74 73  | er.work.released.this.way.by.its | 
| 5f180 |  20 61 75 74 68 6f 72 73 2e 20 20 59 6f 75 20 63    61 6e 20 61 70 70 6c 79 20 69 74 20 74 6f 0a 79  | .authors...You.can.apply.it.to.y | 
| 5f1a0 |  6f 75 72 20 70 72 6f 67 72 61 6d 73 2c 20 74 6f    6f 2e 0a 0a 20 20 57 68 65 6e 20 77 65 20 73 70  | our.programs,.too.....When.we.sp | 
| 5f1c0 |  65 61 6b 20 6f 66 20 66 72 65 65 20 73 6f 66 74    77 61 72 65 2c 20 77 65 20 61 72 65 20 72 65 66  | eak.of.free.software,.we.are.ref | 
| 5f1e0 |  65 72 72 69 6e 67 20 74 6f 20 66 72 65 65 64 6f    6d 2c 20 6e 6f 74 0a 70 72 69 63 65 2e 20 20 4f  | erring.to.freedom,.not.price...O | 
| 5f200 |  75 72 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69    63 20 4c 69 63 65 6e 73 65 73 20 61 72 65 20 64  | ur.General.Public.Licenses.are.d | 
| 5f220 |  65 73 69 67 6e 65 64 20 74 6f 20 6d 61 6b 65 20    73 75 72 65 20 74 68 61 74 20 79 6f 75 0a 68 61  | esigned.to.make.sure.that.you.ha | 
| 5f240 |  76 65 20 74 68 65 20 66 72 65 65 64 6f 6d 20 74    6f 20 64 69 73 74 72 69 62 75 74 65 20 63 6f 70  | ve.the.freedom.to.distribute.cop | 
| 5f260 |  69 65 73 20 6f 66 20 66 72 65 65 20 73 6f 66 74    77 61 72 65 20 28 61 6e 64 20 63 68 61 72 67 65  | ies.of.free.software.(and.charge | 
| 5f280 |  20 66 6f 72 0a 74 68 65 6d 20 69 66 20 79 6f 75    20 77 69 73 68 29 2c 20 74 68 61 74 20 79 6f 75  | .for.them.if.you.wish),.that.you | 
| 5f2a0 |  20 72 65 63 65 69 76 65 20 73 6f 75 72 63 65 20    63 6f 64 65 20 6f 72 20 63 61 6e 20 67 65 74 20  | .receive.source.code.or.can.get. | 
| 5f2c0 |  69 74 20 69 66 20 79 6f 75 0a 77 61 6e 74 20 69    74 2c 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20  | it.if.you.want.it,.that.you.can. | 
| 5f2e0 |  63 68 61 6e 67 65 20 74 68 65 20 73 6f 66 74 77    61 72 65 20 6f 72 20 75 73 65 20 70 69 65 63 65  | change.the.software.or.use.piece | 
| 5f300 |  73 20 6f 66 20 69 74 20 69 6e 20 6e 65 77 0a 66    72 65 65 20 70 72 6f 67 72 61 6d 73 2c 20 61 6e  | s.of.it.in.new.free.programs,.an | 
| 5f320 |  64 20 74 68 61 74 20 79 6f 75 20 6b 6e 6f 77 20    79 6f 75 20 63 61 6e 20 64 6f 20 74 68 65 73 65  | d.that.you.know.you.can.do.these | 
| 5f340 |  20 74 68 69 6e 67 73 2e 0a 0a 20 20 54 6f 20 70    72 6f 74 65 63 74 20 79 6f 75 72 20 72 69 67 68  | .things.....To.protect.your.righ | 
| 5f360 |  74 73 2c 20 77 65 20 6e 65 65 64 20 74 6f 20 70    72 65 76 65 6e 74 20 6f 74 68 65 72 73 20 66 72  | ts,.we.need.to.prevent.others.fr | 
| 5f380 |  6f 6d 20 64 65 6e 79 69 6e 67 20 79 6f 75 0a 74    68 65 73 65 20 72 69 67 68 74 73 20 6f 72 20 61  | om.denying.you.these.rights.or.a | 
| 5f3a0 |  73 6b 69 6e 67 20 79 6f 75 20 74 6f 20 73 75 72    72 65 6e 64 65 72 20 74 68 65 20 72 69 67 68 74  | sking.you.to.surrender.the.right | 
| 5f3c0 |  73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20 79    6f 75 20 68 61 76 65 0a 63 65 72 74 61 69 6e 20  | s...Therefore,.you.have.certain. | 
| 5f3e0 |  72 65 73 70 6f 6e 73 69 62 69 6c 69 74 69 65 73    20 69 66 20 79 6f 75 20 64 69 73 74 72 69 62 75  | responsibilities.if.you.distribu | 
| 5f400 |  74 65 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65    20 73 6f 66 74 77 61 72 65 2c 20 6f 72 20 69 66  | te.copies.of.the.software,.or.if | 
| 5f420 |  0a 79 6f 75 20 6d 6f 64 69 66 79 20 69 74 3a 20    72 65 73 70 6f 6e 73 69 62 69 6c 69 74 69 65 73  | .you.modify.it:.responsibilities | 
| 5f440 |  20 74 6f 20 72 65 73 70 65 63 74 20 74 68 65 20    66 72 65 65 64 6f 6d 20 6f 66 20 6f 74 68 65 72  | .to.respect.the.freedom.of.other | 
| 5f460 |  73 2e 0a 0a 20 20 46 6f 72 20 65 78 61 6d 70 6c    65 2c 20 69 66 20 79 6f 75 20 64 69 73 74 72 69  | s.....For.example,.if.you.distri | 
| 5f480 |  62 75 74 65 20 63 6f 70 69 65 73 20 6f 66 20 73    75 63 68 20 61 20 70 72 6f 67 72 61 6d 2c 20 77  | bute.copies.of.such.a.program,.w | 
| 5f4a0 |  68 65 74 68 65 72 0a 67 72 61 74 69 73 20 6f 72    20 66 6f 72 20 61 20 66 65 65 2c 20 79 6f 75 20  | hether.gratis.or.for.a.fee,.you. | 
| 5f4c0 |  6d 75 73 74 20 70 61 73 73 20 6f 6e 20 74 6f 20    74 68 65 20 72 65 63 69 70 69 65 6e 74 73 20 74  | must.pass.on.to.the.recipients.t | 
| 5f4e0 |  68 65 20 73 61 6d 65 0a 66 72 65 65 64 6f 6d 73    20 74 68 61 74 20 79 6f 75 20 72 65 63 65 69 76  | he.same.freedoms.that.you.receiv | 
| 5f500 |  65 64 2e 20 20 59 6f 75 20 6d 75 73 74 20 6d 61    6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65  | ed...You.must.make.sure.that.the | 
| 5f520 |  79 2c 20 74 6f 6f 2c 20 72 65 63 65 69 76 65 0a    6f 72 20 63 61 6e 20 67 65 74 20 74 68 65 20 73  | y,.too,.receive.or.can.get.the.s | 
| 5f540 |  6f 75 72 63 65 20 63 6f 64 65 2e 20 20 41 6e 64    20 79 6f 75 20 6d 75 73 74 20 73 68 6f 77 20 74  | ource.code...And.you.must.show.t | 
| 5f560 |  68 65 6d 20 74 68 65 73 65 20 74 65 72 6d 73 20    73 6f 20 74 68 65 79 0a 6b 6e 6f 77 20 74 68 65  | hem.these.terms.so.they.know.the | 
| 5f580 |  69 72 20 72 69 67 68 74 73 2e 0a 0a 20 20 44 65    76 65 6c 6f 70 65 72 73 20 74 68 61 74 20 75 73  | ir.rights.....Developers.that.us | 
| 5f5a0 |  65 20 74 68 65 20 47 4e 55 20 47 50 4c 20 70 72    6f 74 65 63 74 20 79 6f 75 72 20 72 69 67 68 74  | e.the.GNU.GPL.protect.your.right | 
| 5f5c0 |  73 20 77 69 74 68 20 74 77 6f 20 73 74 65 70 73    3a 0a 28 31 29 20 61 73 73 65 72 74 20 63 6f 70  | s.with.two.steps:.(1).assert.cop | 
| 5f5e0 |  79 72 69 67 68 74 20 6f 6e 20 74 68 65 20 73 6f    66 74 77 61 72 65 2c 20 61 6e 64 20 28 32 29 20  | yright.on.the.software,.and.(2). | 
| 5f600 |  6f 66 66 65 72 20 79 6f 75 20 74 68 69 73 20 4c    69 63 65 6e 73 65 0a 67 69 76 69 6e 67 20 79 6f  | offer.you.this.License.giving.yo | 
| 5f620 |  75 20 6c 65 67 61 6c 20 70 65 72 6d 69 73 73 69    6f 6e 20 74 6f 20 63 6f 70 79 2c 20 64 69 73 74  | u.legal.permission.to.copy,.dist | 
| 5f640 |  72 69 62 75 74 65 20 61 6e 64 2f 6f 72 20 6d 6f    64 69 66 79 20 69 74 2e 0a 0a 20 20 46 6f 72 20  | ribute.and/or.modify.it.....For. | 
| 5f660 |  74 68 65 20 64 65 76 65 6c 6f 70 65 72 73 27 20    61 6e 64 20 61 75 74 68 6f 72 73 27 20 70 72 6f  | the.developers'.and.authors'.pro | 
| 5f680 |  74 65 63 74 69 6f 6e 2c 20 74 68 65 20 47 50 4c    20 63 6c 65 61 72 6c 79 20 65 78 70 6c 61 69 6e  | tection,.the.GPL.clearly.explain | 
| 5f6a0 |  73 0a 74 68 61 74 20 74 68 65 72 65 20 69 73 20    6e 6f 20 77 61 72 72 61 6e 74 79 20 66 6f 72 20  | s.that.there.is.no.warranty.for. | 
| 5f6c0 |  74 68 69 73 20 66 72 65 65 20 73 6f 66 74 77 61    72 65 2e 20 20 46 6f 72 20 62 6f 74 68 20 75 73  | this.free.software...For.both.us | 
| 5f6e0 |  65 72 73 27 20 61 6e 64 0a 61 75 74 68 6f 72 73    27 20 73 61 6b 65 2c 20 74 68 65 20 47 50 4c 20  | ers'.and.authors'.sake,.the.GPL. | 
| 5f700 |  72 65 71 75 69 72 65 73 20 74 68 61 74 20 6d 6f    64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20  | requires.that.modified.versions. | 
| 5f720 |  62 65 20 6d 61 72 6b 65 64 20 61 73 0a 63 68 61    6e 67 65 64 2c 20 73 6f 20 74 68 61 74 20 74 68  | be.marked.as.changed,.so.that.th | 
| 5f740 |  65 69 72 20 70 72 6f 62 6c 65 6d 73 20 77 69 6c    6c 20 6e 6f 74 20 62 65 20 61 74 74 72 69 62 75  | eir.problems.will.not.be.attribu | 
| 5f760 |  74 65 64 20 65 72 72 6f 6e 65 6f 75 73 6c 79 20    74 6f 0a 61 75 74 68 6f 72 73 20 6f 66 20 70 72  | ted.erroneously.to.authors.of.pr | 
| 5f780 |  65 76 69 6f 75 73 20 76 65 72 73 69 6f 6e 73 2e    0a 0a 20 20 53 6f 6d 65 20 64 65 76 69 63 65 73  | evious.versions.....Some.devices | 
| 5f7a0 |  20 61 72 65 20 64 65 73 69 67 6e 65 64 20 74 6f    20 64 65 6e 79 20 75 73 65 72 73 20 61 63 63 65  | .are.designed.to.deny.users.acce | 
| 5f7c0 |  73 73 20 74 6f 20 69 6e 73 74 61 6c 6c 20 6f 72    20 72 75 6e 0a 6d 6f 64 69 66 69 65 64 20 76 65  | ss.to.install.or.run.modified.ve | 
| 5f7e0 |  72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 73 6f    66 74 77 61 72 65 20 69 6e 73 69 64 65 20 74 68  | rsions.of.the.software.inside.th | 
| 5f800 |  65 6d 2c 20 61 6c 74 68 6f 75 67 68 20 74 68 65    20 6d 61 6e 75 66 61 63 74 75 72 65 72 0a 63 61  | em,.although.the.manufacturer.ca | 
| 5f820 |  6e 20 64 6f 20 73 6f 2e 20 20 54 68 69 73 20 69    73 20 66 75 6e 64 61 6d 65 6e 74 61 6c 6c 79 20  | n.do.so...This.is.fundamentally. | 
| 5f840 |  69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74    68 20 74 68 65 20 61 69 6d 20 6f 66 0a 70 72 6f  | incompatible.with.the.aim.of.pro | 
| 5f860 |  74 65 63 74 69 6e 67 20 75 73 65 72 73 27 20 66    72 65 65 64 6f 6d 20 74 6f 20 63 68 61 6e 67 65  | tecting.users'.freedom.to.change | 
| 5f880 |  20 74 68 65 20 73 6f 66 74 77 61 72 65 2e 20 20    54 68 65 20 73 79 73 74 65 6d 61 74 69 63 0a 70  | .the.software...The.systematic.p | 
| 5f8a0 |  61 74 74 65 72 6e 20 6f 66 20 73 75 63 68 20 61    62 75 73 65 20 6f 63 63 75 72 73 20 69 6e 20 74  | attern.of.such.abuse.occurs.in.t | 
| 5f8c0 |  68 65 20 61 72 65 61 20 6f 66 20 70 72 6f 64 75    63 74 73 20 66 6f 72 20 69 6e 64 69 76 69 64 75  | he.area.of.products.for.individu | 
| 5f8e0 |  61 6c 73 20 74 6f 0a 75 73 65 2c 20 77 68 69 63    68 20 69 73 20 70 72 65 63 69 73 65 6c 79 20 77  | als.to.use,.which.is.precisely.w | 
| 5f900 |  68 65 72 65 20 69 74 20 69 73 20 6d 6f 73 74 20    75 6e 61 63 63 65 70 74 61 62 6c 65 2e 20 20 54  | here.it.is.most.unacceptable...T | 
| 5f920 |  68 65 72 65 66 6f 72 65 2c 20 77 65 0a 68 61 76    65 20 64 65 73 69 67 6e 65 64 20 74 68 69 73 20  | herefore,.we.have.designed.this. | 
| 5f940 |  76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 47    50 4c 20 74 6f 20 70 72 6f 68 69 62 69 74 20 74  | version.of.the.GPL.to.prohibit.t | 
| 5f960 |  68 65 20 70 72 61 63 74 69 63 65 20 66 6f 72 20    74 68 6f 73 65 0a 70 72 6f 64 75 63 74 73 2e 20  | he.practice.for.those.products.. | 
| 5f980 |  20 49 66 20 73 75 63 68 20 70 72 6f 62 6c 65 6d    73 20 61 72 69 73 65 20 73 75 62 73 74 61 6e 74  | .If.such.problems.arise.substant | 
| 5f9a0 |  69 61 6c 6c 79 20 69 6e 20 6f 74 68 65 72 20 64    6f 6d 61 69 6e 73 2c 20 77 65 0a 73 74 61 6e 64  | ially.in.other.domains,.we.stand | 
| 5f9c0 |  20 72 65 61 64 79 20 74 6f 20 65 78 74 65 6e 64    20 74 68 69 73 20 70 72 6f 76 69 73 69 6f 6e 20  | .ready.to.extend.this.provision. | 
| 5f9e0 |  74 6f 20 74 68 6f 73 65 20 64 6f 6d 61 69 6e 73    20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73 69  | to.those.domains.in.future.versi | 
| 5fa00 |  6f 6e 73 0a 6f 66 20 74 68 65 20 47 50 4c 2c 20    61 73 20 6e 65 65 64 65 64 20 74 6f 20 70 72 6f  | ons.of.the.GPL,.as.needed.to.pro | 
| 5fa20 |  74 65 63 74 20 74 68 65 20 66 72 65 65 64 6f 6d    20 6f 66 20 75 73 65 72 73 2e 0a 0a 20 20 46 69  | tect.the.freedom.of.users.....Fi | 
| 5fa40 |  6e 61 6c 6c 79 2c 20 65 76 65 72 79 20 70 72 6f    67 72 61 6d 20 69 73 20 74 68 72 65 61 74 65 6e  | nally,.every.program.is.threaten | 
| 5fa60 |  65 64 20 63 6f 6e 73 74 61 6e 74 6c 79 20 62 79    20 73 6f 66 74 77 61 72 65 20 70 61 74 65 6e 74  | ed.constantly.by.software.patent | 
| 5fa80 |  73 2e 0a 53 74 61 74 65 73 20 73 68 6f 75 6c 64    20 6e 6f 74 20 61 6c 6c 6f 77 20 70 61 74 65 6e  | s..States.should.not.allow.paten | 
| 5faa0 |  74 73 20 74 6f 20 72 65 73 74 72 69 63 74 20 64    65 76 65 6c 6f 70 6d 65 6e 74 20 61 6e 64 20 75  | ts.to.restrict.development.and.u | 
| 5fac0 |  73 65 20 6f 66 0a 73 6f 66 74 77 61 72 65 20 6f    6e 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73  | se.of.software.on.general-purpos | 
| 5fae0 |  65 20 63 6f 6d 70 75 74 65 72 73 2c 20 62 75 74    20 69 6e 20 74 68 6f 73 65 20 74 68 61 74 20 64  | e.computers,.but.in.those.that.d | 
| 5fb00 |  6f 2c 20 77 65 20 77 69 73 68 20 74 6f 0a 61 76    6f 69 64 20 74 68 65 20 73 70 65 63 69 61 6c 20  | o,.we.wish.to.avoid.the.special. | 
| 5fb20 |  64 61 6e 67 65 72 20 74 68 61 74 20 70 61 74 65    6e 74 73 20 61 70 70 6c 69 65 64 20 74 6f 20 61  | danger.that.patents.applied.to.a | 
| 5fb40 |  20 66 72 65 65 20 70 72 6f 67 72 61 6d 20 63 6f    75 6c 64 0a 6d 61 6b 65 20 69 74 20 65 66 66 65  | .free.program.could.make.it.effe | 
| 5fb60 |  63 74 69 76 65 6c 79 20 70 72 6f 70 72 69 65 74    61 72 79 2e 20 20 54 6f 20 70 72 65 76 65 6e 74  | ctively.proprietary...To.prevent | 
| 5fb80 |  20 74 68 69 73 2c 20 74 68 65 20 47 50 4c 20 61    73 73 75 72 65 73 20 74 68 61 74 0a 70 61 74 65  | .this,.the.GPL.assures.that.pate | 
| 5fba0 |  6e 74 73 20 63 61 6e 6e 6f 74 20 62 65 20 75 73    65 64 20 74 6f 20 72 65 6e 64 65 72 20 74 68 65  | nts.cannot.be.used.to.render.the | 
| 5fbc0 |  20 70 72 6f 67 72 61 6d 20 6e 6f 6e 2d 66 72 65    65 2e 0a 0a 20 20 54 68 65 20 70 72 65 63 69 73  | .program.non-free.....The.precis | 
| 5fbe0 |  65 20 74 65 72 6d 73 20 61 6e 64 20 63 6f 6e 64    69 74 69 6f 6e 73 20 66 6f 72 20 63 6f 70 79 69  | e.terms.and.conditions.for.copyi | 
| 5fc00 |  6e 67 2c 20 64 69 73 74 72 69 62 75 74 69 6f 6e    20 61 6e 64 0a 6d 6f 64 69 66 69 63 61 74 69 6f  | ng,.distribution.and.modificatio | 
| 5fc20 |  6e 20 66 6f 6c 6c 6f 77 2e 0a 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n.follow........................ | 
| 5fc40 |  20 20 54 45 52 4d 53 20 41 4e 44 20 43 4f 4e 44    49 54 49 4f 4e 53 0a 0a 20 20 30 2e 20 44 65 66  | ..TERMS.AND.CONDITIONS....0..Def | 
| 5fc60 |  69 6e 69 74 69 6f 6e 73 2e 0a 0a 20 20 22 54 68    69 73 20 4c 69 63 65 6e 73 65 22 20 72 65 66 65  | initions....."This.License".refe | 
| 5fc80 |  72 73 20 74 6f 20 76 65 72 73 69 6f 6e 20 33 20    6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72  | rs.to.version.3.of.the.GNU.Gener | 
| 5fca0 |  61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73    65 2e 0a 0a 20 20 22 43 6f 70 79 72 69 67 68 74  | al.Public.License....."Copyright | 
| 5fcc0 |  22 20 61 6c 73 6f 20 6d 65 61 6e 73 20 63 6f 70    79 72 69 67 68 74 2d 6c 69 6b 65 20 6c 61 77 73  | ".also.means.copyright-like.laws | 
| 5fce0 |  20 74 68 61 74 20 61 70 70 6c 79 20 74 6f 20 6f    74 68 65 72 20 6b 69 6e 64 73 20 6f 66 0a 77 6f  | .that.apply.to.other.kinds.of.wo | 
| 5fd00 |  72 6b 73 2c 20 73 75 63 68 20 61 73 20 73 65 6d    69 63 6f 6e 64 75 63 74 6f 72 20 6d 61 73 6b 73  | rks,.such.as.semiconductor.masks | 
| 5fd20 |  2e 0a 0a 20 20 22 54 68 65 20 50 72 6f 67 72 61    6d 22 20 72 65 66 65 72 73 20 74 6f 20 61 6e 79  | ....."The.Program".refers.to.any | 
| 5fd40 |  20 63 6f 70 79 72 69 67 68 74 61 62 6c 65 20 77    6f 72 6b 20 6c 69 63 65 6e 73 65 64 20 75 6e 64  | .copyrightable.work.licensed.und | 
| 5fd60 |  65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 2e    20 20 45 61 63 68 20 6c 69 63 65 6e 73 65 65 20  | er.this.License...Each.licensee. | 
| 5fd80 |  69 73 20 61 64 64 72 65 73 73 65 64 20 61 73 20    22 79 6f 75 22 2e 20 20 22 4c 69 63 65 6e 73 65  | is.addressed.as."you"..."License | 
| 5fda0 |  65 73 22 20 61 6e 64 0a 22 72 65 63 69 70 69 65    6e 74 73 22 20 6d 61 79 20 62 65 20 69 6e 64 69  | es".and."recipients".may.be.indi | 
| 5fdc0 |  76 69 64 75 61 6c 73 20 6f 72 20 6f 72 67 61 6e    69 7a 61 74 69 6f 6e 73 2e 0a 0a 20 20 54 6f 20  | viduals.or.organizations.....To. | 
| 5fde0 |  22 6d 6f 64 69 66 79 22 20 61 20 77 6f 72 6b 20    6d 65 61 6e 73 20 74 6f 20 63 6f 70 79 20 66 72  | "modify".a.work.means.to.copy.fr | 
| 5fe00 |  6f 6d 20 6f 72 20 61 64 61 70 74 20 61 6c 6c 20    6f 72 20 70 61 72 74 20 6f 66 20 74 68 65 20 77  | om.or.adapt.all.or.part.of.the.w | 
| 5fe20 |  6f 72 6b 0a 69 6e 20 61 20 66 61 73 68 69 6f 6e    20 72 65 71 75 69 72 69 6e 67 20 63 6f 70 79 72  | ork.in.a.fashion.requiring.copyr | 
| 5fe40 |  69 67 68 74 20 70 65 72 6d 69 73 73 69 6f 6e 2c    20 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 20  | ight.permission,.other.than.the. | 
| 5fe60 |  6d 61 6b 69 6e 67 20 6f 66 20 61 6e 0a 65 78 61    63 74 20 63 6f 70 79 2e 20 20 54 68 65 20 72 65  | making.of.an.exact.copy...The.re | 
| 5fe80 |  73 75 6c 74 69 6e 67 20 77 6f 72 6b 20 69 73 20    63 61 6c 6c 65 64 20 61 20 22 6d 6f 64 69 66 69  | sulting.work.is.called.a."modifi | 
| 5fea0 |  65 64 20 76 65 72 73 69 6f 6e 22 20 6f 66 20 74    68 65 0a 65 61 72 6c 69 65 72 20 77 6f 72 6b 20  | ed.version".of.the.earlier.work. | 
| 5fec0 |  6f 72 20 61 20 77 6f 72 6b 20 22 62 61 73 65 64    20 6f 6e 22 20 74 68 65 20 65 61 72 6c 69 65 72  | or.a.work."based.on".the.earlier | 
| 5fee0 |  20 77 6f 72 6b 2e 0a 0a 20 20 41 20 22 63 6f 76    65 72 65 64 20 77 6f 72 6b 22 20 6d 65 61 6e 73  | .work.....A."covered.work".means | 
| 5ff00 |  20 65 69 74 68 65 72 20 74 68 65 20 75 6e 6d 6f    64 69 66 69 65 64 20 50 72 6f 67 72 61 6d 20 6f  | .either.the.unmodified.Program.o | 
| 5ff20 |  72 20 61 20 77 6f 72 6b 20 62 61 73 65 64 0a 6f    6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a  | r.a.work.based.on.the.Program... | 
| 5ff40 |  20 20 54 6f 20 22 70 72 6f 70 61 67 61 74 65 22    20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 6f  | ..To."propagate".a.work.means.to | 
| 5ff60 |  20 64 6f 20 61 6e 79 74 68 69 6e 67 20 77 69 74    68 20 69 74 20 74 68 61 74 2c 20 77 69 74 68 6f  | .do.anything.with.it.that,.witho | 
| 5ff80 |  75 74 0a 70 65 72 6d 69 73 73 69 6f 6e 2c 20 77    6f 75 6c 64 20 6d 61 6b 65 20 79 6f 75 20 64 69  | ut.permission,.would.make.you.di | 
| 5ffa0 |  72 65 63 74 6c 79 20 6f 72 20 73 65 63 6f 6e 64    61 72 69 6c 79 20 6c 69 61 62 6c 65 20 66 6f 72  | rectly.or.secondarily.liable.for | 
| 5ffc0 |  0a 69 6e 66 72 69 6e 67 65 6d 65 6e 74 20 75 6e    64 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 63  | .infringement.under.applicable.c | 
| 5ffe0 |  6f 70 79 72 69 67 68 74 20 6c 61 77 2c 20 65 78    63 65 70 74 20 65 78 65 63 75 74 69 6e 67 20 69  | opyright.law,.except.executing.i | 
| 60000 |  74 20 6f 6e 20 61 0a 63 6f 6d 70 75 74 65 72 20    6f 72 20 6d 6f 64 69 66 79 69 6e 67 20 61 20 70  | t.on.a.computer.or.modifying.a.p | 
| 60020 |  72 69 76 61 74 65 20 63 6f 70 79 2e 20 20 50 72    6f 70 61 67 61 74 69 6f 6e 20 69 6e 63 6c 75 64  | rivate.copy...Propagation.includ | 
| 60040 |  65 73 20 63 6f 70 79 69 6e 67 2c 0a 64 69 73 74    72 69 62 75 74 69 6f 6e 20 28 77 69 74 68 20 6f  | es.copying,.distribution.(with.o | 
| 60060 |  72 20 77 69 74 68 6f 75 74 20 6d 6f 64 69 66 69    63 61 74 69 6f 6e 29 2c 20 6d 61 6b 69 6e 67 20  | r.without.modification),.making. | 
| 60080 |  61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65    0a 70 75 62 6c 69 63 2c 20 61 6e 64 20 69 6e 20  | available.to.the.public,.and.in. | 
| 600a0 |  73 6f 6d 65 20 63 6f 75 6e 74 72 69 65 73 20 6f    74 68 65 72 20 61 63 74 69 76 69 74 69 65 73 20  | some.countries.other.activities. | 
| 600c0 |  61 73 20 77 65 6c 6c 2e 0a 0a 20 20 54 6f 20 22    63 6f 6e 76 65 79 22 20 61 20 77 6f 72 6b 20 6d  | as.well.....To."convey".a.work.m | 
| 600e0 |  65 61 6e 73 20 61 6e 79 20 6b 69 6e 64 20 6f 66    20 70 72 6f 70 61 67 61 74 69 6f 6e 20 74 68 61  | eans.any.kind.of.propagation.tha | 
| 60100 |  74 20 65 6e 61 62 6c 65 73 20 6f 74 68 65 72 0a    70 61 72 74 69 65 73 20 74 6f 20 6d 61 6b 65 20  | t.enables.other.parties.to.make. | 
| 60120 |  6f 72 20 72 65 63 65 69 76 65 20 63 6f 70 69 65    73 2e 20 20 4d 65 72 65 20 69 6e 74 65 72 61 63  | or.receive.copies...Mere.interac | 
| 60140 |  74 69 6f 6e 20 77 69 74 68 20 61 20 75 73 65 72    20 74 68 72 6f 75 67 68 0a 61 20 63 6f 6d 70 75  | tion.with.a.user.through.a.compu | 
| 60160 |  74 65 72 20 6e 65 74 77 6f 72 6b 2c 20 77 69 74    68 20 6e 6f 20 74 72 61 6e 73 66 65 72 20 6f 66  | ter.network,.with.no.transfer.of | 
| 60180 |  20 61 20 63 6f 70 79 2c 20 69 73 20 6e 6f 74 20    63 6f 6e 76 65 79 69 6e 67 2e 0a 0a 20 20 41 6e  | .a.copy,.is.not.conveying.....An | 
| 601a0 |  20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65    72 20 69 6e 74 65 72 66 61 63 65 20 64 69 73 70  | .interactive.user.interface.disp | 
| 601c0 |  6c 61 79 73 20 22 41 70 70 72 6f 70 72 69 61 74    65 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 22  | lays."Appropriate.Legal.Notices" | 
| 601e0 |  0a 74 6f 20 74 68 65 20 65 78 74 65 6e 74 20 74    68 61 74 20 69 74 20 69 6e 63 6c 75 64 65 73 20  | .to.the.extent.that.it.includes. | 
| 60200 |  61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 6e 64    20 70 72 6f 6d 69 6e 65 6e 74 6c 79 20 76 69 73  | a.convenient.and.prominently.vis | 
| 60220 |  69 62 6c 65 0a 66 65 61 74 75 72 65 20 74 68 61    74 20 28 31 29 20 64 69 73 70 6c 61 79 73 20 61  | ible.feature.that.(1).displays.a | 
| 60240 |  6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f    70 79 72 69 67 68 74 20 6e 6f 74 69 63 65 2c 20  | n.appropriate.copyright.notice,. | 
| 60260 |  61 6e 64 20 28 32 29 0a 74 65 6c 6c 73 20 74 68    65 20 75 73 65 72 20 74 68 61 74 20 74 68 65 72  | and.(2).tells.the.user.that.ther | 
| 60280 |  65 20 69 73 20 6e 6f 20 77 61 72 72 61 6e 74 79    20 66 6f 72 20 74 68 65 20 77 6f 72 6b 20 28 65  | e.is.no.warranty.for.the.work.(e | 
| 602a0 |  78 63 65 70 74 20 74 6f 20 74 68 65 0a 65 78 74    65 6e 74 20 74 68 61 74 20 77 61 72 72 61 6e 74  | xcept.to.the.extent.that.warrant | 
| 602c0 |  69 65 73 20 61 72 65 20 70 72 6f 76 69 64 65 64    29 2c 20 74 68 61 74 20 6c 69 63 65 6e 73 65 65  | ies.are.provided),.that.licensee | 
| 602e0 |  73 20 6d 61 79 20 63 6f 6e 76 65 79 20 74 68 65    0a 77 6f 72 6b 20 75 6e 64 65 72 20 74 68 69 73  | s.may.convey.the.work.under.this | 
| 60300 |  20 4c 69 63 65 6e 73 65 2c 20 61 6e 64 20 68 6f    77 20 74 6f 20 76 69 65 77 20 61 20 63 6f 70 79  | .License,.and.how.to.view.a.copy | 
| 60320 |  20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65    2e 20 20 49 66 0a 74 68 65 20 69 6e 74 65 72 66  | .of.this.License...If.the.interf | 
| 60340 |  61 63 65 20 70 72 65 73 65 6e 74 73 20 61 20 6c    69 73 74 20 6f 66 20 75 73 65 72 20 63 6f 6d 6d  | ace.presents.a.list.of.user.comm | 
| 60360 |  61 6e 64 73 20 6f 72 20 6f 70 74 69 6f 6e 73 2c    20 73 75 63 68 20 61 73 20 61 0a 6d 65 6e 75 2c  | ands.or.options,.such.as.a.menu, | 
| 60380 |  20 61 20 70 72 6f 6d 69 6e 65 6e 74 20 69 74 65    6d 20 69 6e 20 74 68 65 20 6c 69 73 74 20 6d 65  | .a.prominent.item.in.the.list.me | 
| 603a0 |  65 74 73 20 74 68 69 73 20 63 72 69 74 65 72 69    6f 6e 2e 0a 0a 20 20 31 2e 20 53 6f 75 72 63 65  | ets.this.criterion.....1..Source | 
| 603c0 |  20 43 6f 64 65 2e 0a 0a 20 20 54 68 65 20 22 73    6f 75 72 63 65 20 63 6f 64 65 22 20 66 6f 72 20  | .Code.....The."source.code".for. | 
| 603e0 |  61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 68 65    20 70 72 65 66 65 72 72 65 64 20 66 6f 72 6d 20  | a.work.means.the.preferred.form. | 
| 60400 |  6f 66 20 74 68 65 20 77 6f 72 6b 0a 66 6f 72 20    6d 61 6b 69 6e 67 20 6d 6f 64 69 66 69 63 61 74  | of.the.work.for.making.modificat | 
| 60420 |  69 6f 6e 73 20 74 6f 20 69 74 2e 20 20 22 4f 62    6a 65 63 74 20 63 6f 64 65 22 20 6d 65 61 6e 73  | ions.to.it..."Object.code".means | 
| 60440 |  20 61 6e 79 20 6e 6f 6e 2d 73 6f 75 72 63 65 0a    66 6f 72 6d 20 6f 66 20 61 20 77 6f 72 6b 2e 0a  | .any.non-source.form.of.a.work.. | 
| 60460 |  0a 20 20 41 20 22 53 74 61 6e 64 61 72 64 20 49    6e 74 65 72 66 61 63 65 22 20 6d 65 61 6e 73 20  | ...A."Standard.Interface".means. | 
| 60480 |  61 6e 20 69 6e 74 65 72 66 61 63 65 20 74 68 61    74 20 65 69 74 68 65 72 20 69 73 20 61 6e 20 6f  | an.interface.that.either.is.an.o | 
| 604a0 |  66 66 69 63 69 61 6c 0a 73 74 61 6e 64 61 72 64    20 64 65 66 69 6e 65 64 20 62 79 20 61 20 72 65  | fficial.standard.defined.by.a.re | 
| 604c0 |  63 6f 67 6e 69 7a 65 64 20 73 74 61 6e 64 61 72    64 73 20 62 6f 64 79 2c 20 6f 72 2c 20 69 6e 20  | cognized.standards.body,.or,.in. | 
| 604e0 |  74 68 65 20 63 61 73 65 20 6f 66 0a 69 6e 74 65    72 66 61 63 65 73 20 73 70 65 63 69 66 69 65 64  | the.case.of.interfaces.specified | 
| 60500 |  20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61    72 20 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61  | .for.a.particular.programming.la | 
| 60520 |  6e 67 75 61 67 65 2c 20 6f 6e 65 20 74 68 61 74    0a 69 73 20 77 69 64 65 6c 79 20 75 73 65 64 20  | nguage,.one.that.is.widely.used. | 
| 60540 |  61 6d 6f 6e 67 20 64 65 76 65 6c 6f 70 65 72 73    20 77 6f 72 6b 69 6e 67 20 69 6e 20 74 68 61 74  | among.developers.working.in.that | 
| 60560 |  20 6c 61 6e 67 75 61 67 65 2e 0a 0a 20 20 54 68    65 20 22 53 79 73 74 65 6d 20 4c 69 62 72 61 72  | .language.....The."System.Librar | 
| 60580 |  69 65 73 22 20 6f 66 20 61 6e 20 65 78 65 63 75    74 61 62 6c 65 20 77 6f 72 6b 20 69 6e 63 6c 75  | ies".of.an.executable.work.inclu | 
| 605a0 |  64 65 20 61 6e 79 74 68 69 6e 67 2c 20 6f 74 68    65 72 0a 74 68 61 6e 20 74 68 65 20 77 6f 72 6b  | de.anything,.other.than.the.work | 
| 605c0 |  20 61 73 20 61 20 77 68 6f 6c 65 2c 20 74 68 61    74 20 28 61 29 20 69 73 20 69 6e 63 6c 75 64 65  | .as.a.whole,.that.(a).is.include | 
| 605e0 |  64 20 69 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 20    66 6f 72 6d 20 6f 66 0a 70 61 63 6b 61 67 69 6e  | d.in.the.normal.form.of.packagin | 
| 60600 |  67 20 61 20 4d 61 6a 6f 72 20 43 6f 6d 70 6f 6e    65 6e 74 2c 20 62 75 74 20 77 68 69 63 68 20 69  | g.a.Major.Component,.but.which.i | 
| 60620 |  73 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 74 68    61 74 20 4d 61 6a 6f 72 0a 43 6f 6d 70 6f 6e 65  | s.not.part.of.that.Major.Compone | 
| 60640 |  6e 74 2c 20 61 6e 64 20 28 62 29 20 73 65 72 76    65 73 20 6f 6e 6c 79 20 74 6f 20 65 6e 61 62 6c  | nt,.and.(b).serves.only.to.enabl | 
| 60660 |  65 20 75 73 65 20 6f 66 20 74 68 65 20 77 6f 72    6b 20 77 69 74 68 20 74 68 61 74 0a 4d 61 6a 6f  | e.use.of.the.work.with.that.Majo | 
| 60680 |  72 20 43 6f 6d 70 6f 6e 65 6e 74 2c 20 6f 72 20    74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 20 53  | r.Component,.or.to.implement.a.S | 
| 606a0 |  74 61 6e 64 61 72 64 20 49 6e 74 65 72 66 61 63    65 20 66 6f 72 20 77 68 69 63 68 20 61 6e 0a 69  | tandard.Interface.for.which.an.i | 
| 606c0 |  6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73    20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68  | mplementation.is.available.to.th | 
| 606e0 |  65 20 70 75 62 6c 69 63 20 69 6e 20 73 6f 75 72    63 65 20 63 6f 64 65 20 66 6f 72 6d 2e 20 20 41  | e.public.in.source.code.form...A | 
| 60700 |  0a 22 4d 61 6a 6f 72 20 43 6f 6d 70 6f 6e 65 6e    74 22 2c 20 69 6e 20 74 68 69 73 20 63 6f 6e 74  | ."Major.Component",.in.this.cont | 
| 60720 |  65 78 74 2c 20 6d 65 61 6e 73 20 61 20 6d 61 6a    6f 72 20 65 73 73 65 6e 74 69 61 6c 20 63 6f 6d  | ext,.means.a.major.essential.com | 
| 60740 |  70 6f 6e 65 6e 74 0a 28 6b 65 72 6e 65 6c 2c 20    77 69 6e 64 6f 77 20 73 79 73 74 65 6d 2c 20 61  | ponent.(kernel,.window.system,.a | 
| 60760 |  6e 64 20 73 6f 20 6f 6e 29 20 6f 66 20 74 68 65    20 73 70 65 63 69 66 69 63 20 6f 70 65 72 61 74  | nd.so.on).of.the.specific.operat | 
| 60780 |  69 6e 67 20 73 79 73 74 65 6d 0a 28 69 66 20 61    6e 79 29 20 6f 6e 20 77 68 69 63 68 20 74 68 65  | ing.system.(if.any).on.which.the | 
| 607a0 |  20 65 78 65 63 75 74 61 62 6c 65 20 77 6f 72 6b    20 72 75 6e 73 2c 20 6f 72 20 61 20 63 6f 6d 70  | .executable.work.runs,.or.a.comp | 
| 607c0 |  69 6c 65 72 20 75 73 65 64 20 74 6f 0a 70 72 6f    64 75 63 65 20 74 68 65 20 77 6f 72 6b 2c 20 6f  | iler.used.to.produce.the.work,.o | 
| 607e0 |  72 20 61 6e 20 6f 62 6a 65 63 74 20 63 6f 64 65    20 69 6e 74 65 72 70 72 65 74 65 72 20 75 73 65  | r.an.object.code.interpreter.use | 
| 60800 |  64 20 74 6f 20 72 75 6e 20 69 74 2e 0a 0a 20 20    54 68 65 20 22 43 6f 72 72 65 73 70 6f 6e 64 69  | d.to.run.it.....The."Correspondi | 
| 60820 |  6e 67 20 53 6f 75 72 63 65 22 20 66 6f 72 20 61    20 77 6f 72 6b 20 69 6e 20 6f 62 6a 65 63 74 20  | ng.Source".for.a.work.in.object. | 
| 60840 |  63 6f 64 65 20 66 6f 72 6d 20 6d 65 61 6e 73 20    61 6c 6c 0a 74 68 65 20 73 6f 75 72 63 65 20 63  | code.form.means.all.the.source.c | 
| 60860 |  6f 64 65 20 6e 65 65 64 65 64 20 74 6f 20 67 65    6e 65 72 61 74 65 2c 20 69 6e 73 74 61 6c 6c 2c  | ode.needed.to.generate,.install, | 
| 60880 |  20 61 6e 64 20 28 66 6f 72 20 61 6e 20 65 78 65    63 75 74 61 62 6c 65 0a 77 6f 72 6b 29 20 72 75  | .and.(for.an.executable.work).ru | 
| 608a0 |  6e 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64    65 20 61 6e 64 20 74 6f 20 6d 6f 64 69 66 79 20  | n.the.object.code.and.to.modify. | 
| 608c0 |  74 68 65 20 77 6f 72 6b 2c 20 69 6e 63 6c 75 64    69 6e 67 20 73 63 72 69 70 74 73 20 74 6f 0a 63  | the.work,.including.scripts.to.c | 
| 608e0 |  6f 6e 74 72 6f 6c 20 74 68 6f 73 65 20 61 63 74    69 76 69 74 69 65 73 2e 20 20 48 6f 77 65 76 65  | ontrol.those.activities...Howeve | 
| 60900 |  72 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 69    6e 63 6c 75 64 65 20 74 68 65 20 77 6f 72 6b 27  | r,.it.does.not.include.the.work' | 
| 60920 |  73 0a 53 79 73 74 65 6d 20 4c 69 62 72 61 72 69    65 73 2c 20 6f 72 20 67 65 6e 65 72 61 6c 2d 70  | s.System.Libraries,.or.general-p | 
| 60940 |  75 72 70 6f 73 65 20 74 6f 6f 6c 73 20 6f 72 20    67 65 6e 65 72 61 6c 6c 79 20 61 76 61 69 6c 61  | urpose.tools.or.generally.availa | 
| 60960 |  62 6c 65 20 66 72 65 65 0a 70 72 6f 67 72 61 6d    73 20 77 68 69 63 68 20 61 72 65 20 75 73 65 64  | ble.free.programs.which.are.used | 
| 60980 |  20 75 6e 6d 6f 64 69 66 69 65 64 20 69 6e 20 70    65 72 66 6f 72 6d 69 6e 67 20 74 68 6f 73 65 20  | .unmodified.in.performing.those. | 
| 609a0 |  61 63 74 69 76 69 74 69 65 73 20 62 75 74 0a 77    68 69 63 68 20 61 72 65 20 6e 6f 74 20 70 61 72  | activities.but.which.are.not.par | 
| 609c0 |  74 20 6f 66 20 74 68 65 20 77 6f 72 6b 2e 20 20    46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 43 6f 72  | t.of.the.work...For.example,.Cor | 
| 609e0 |  72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63    65 0a 69 6e 63 6c 75 64 65 73 20 69 6e 74 65 72  | responding.Source.includes.inter | 
| 60a00 |  66 61 63 65 20 64 65 66 69 6e 69 74 69 6f 6e 20    66 69 6c 65 73 20 61 73 73 6f 63 69 61 74 65 64  | face.definition.files.associated | 
| 60a20 |  20 77 69 74 68 20 73 6f 75 72 63 65 20 66 69 6c    65 73 20 66 6f 72 0a 74 68 65 20 77 6f 72 6b 2c  | .with.source.files.for.the.work, | 
| 60a40 |  20 61 6e 64 20 74 68 65 20 73 6f 75 72 63 65 20    63 6f 64 65 20 66 6f 72 20 73 68 61 72 65 64 20  | .and.the.source.code.for.shared. | 
| 60a60 |  6c 69 62 72 61 72 69 65 73 20 61 6e 64 20 64 79    6e 61 6d 69 63 61 6c 6c 79 0a 6c 69 6e 6b 65 64  | libraries.and.dynamically.linked | 
| 60a80 |  20 73 75 62 70 72 6f 67 72 61 6d 73 20 74 68 61    74 20 74 68 65 20 77 6f 72 6b 20 69 73 20 73 70  | .subprograms.that.the.work.is.sp | 
| 60aa0 |  65 63 69 66 69 63 61 6c 6c 79 20 64 65 73 69 67    6e 65 64 20 74 6f 20 72 65 71 75 69 72 65 2c 0a  | ecifically.designed.to.require,. | 
| 60ac0 |  73 75 63 68 20 61 73 20 62 79 20 69 6e 74 69 6d    61 74 65 20 64 61 74 61 20 63 6f 6d 6d 75 6e 69  | such.as.by.intimate.data.communi | 
| 60ae0 |  63 61 74 69 6f 6e 20 6f 72 20 63 6f 6e 74 72 6f    6c 20 66 6c 6f 77 20 62 65 74 77 65 65 6e 20 74  | cation.or.control.flow.between.t | 
| 60b00 |  68 6f 73 65 0a 73 75 62 70 72 6f 67 72 61 6d 73    20 61 6e 64 20 6f 74 68 65 72 20 70 61 72 74 73  | hose.subprograms.and.other.parts | 
| 60b20 |  20 6f 66 20 74 68 65 20 77 6f 72 6b 2e 0a 0a 20    20 54 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69  | .of.the.work.....The.Correspondi | 
| 60b40 |  6e 67 20 53 6f 75 72 63 65 20 6e 65 65 64 20 6e    6f 74 20 69 6e 63 6c 75 64 65 20 61 6e 79 74 68  | ng.Source.need.not.include.anyth | 
| 60b60 |  69 6e 67 20 74 68 61 74 20 75 73 65 72 73 0a 63    61 6e 20 72 65 67 65 6e 65 72 61 74 65 20 61 75  | ing.that.users.can.regenerate.au | 
| 60b80 |  74 6f 6d 61 74 69 63 61 6c 6c 79 20 66 72 6f 6d    20 6f 74 68 65 72 20 70 61 72 74 73 20 6f 66 20  | tomatically.from.other.parts.of. | 
| 60ba0 |  74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e    67 0a 53 6f 75 72 63 65 2e 0a 0a 20 20 54 68 65  | the.Corresponding.Source.....The | 
| 60bc0 |  20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53    6f 75 72 63 65 20 66 6f 72 20 61 20 77 6f 72 6b  | .Corresponding.Source.for.a.work | 
| 60be0 |  20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 20    66 6f 72 6d 20 69 73 20 74 68 61 74 0a 73 61 6d  | .in.source.code.form.is.that.sam | 
| 60c00 |  65 20 77 6f 72 6b 2e 0a 0a 20 20 32 2e 20 42 61    73 69 63 20 50 65 72 6d 69 73 73 69 6f 6e 73 2e  | e.work.....2..Basic.Permissions. | 
| 60c20 |  0a 0a 20 20 41 6c 6c 20 72 69 67 68 74 73 20 67    72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 69  | ....All.rights.granted.under.thi | 
| 60c40 |  73 20 4c 69 63 65 6e 73 65 20 61 72 65 20 67 72    61 6e 74 65 64 20 66 6f 72 20 74 68 65 20 74 65  | s.License.are.granted.for.the.te | 
| 60c60 |  72 6d 20 6f 66 0a 63 6f 70 79 72 69 67 68 74 20    6f 6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20  | rm.of.copyright.on.the.Program,. | 
| 60c80 |  61 6e 64 20 61 72 65 20 69 72 72 65 76 6f 63 61    62 6c 65 20 70 72 6f 76 69 64 65 64 20 74 68 65  | and.are.irrevocable.provided.the | 
| 60ca0 |  20 73 74 61 74 65 64 0a 63 6f 6e 64 69 74 69 6f    6e 73 20 61 72 65 20 6d 65 74 2e 20 20 54 68 69  | .stated.conditions.are.met...Thi | 
| 60cc0 |  73 20 4c 69 63 65 6e 73 65 20 65 78 70 6c 69 63    69 74 6c 79 20 61 66 66 69 72 6d 73 20 79 6f 75  | s.License.explicitly.affirms.you | 
| 60ce0 |  72 20 75 6e 6c 69 6d 69 74 65 64 0a 70 65 72 6d    69 73 73 69 6f 6e 20 74 6f 20 72 75 6e 20 74 68  | r.unlimited.permission.to.run.th | 
| 60d00 |  65 20 75 6e 6d 6f 64 69 66 69 65 64 20 50 72 6f    67 72 61 6d 2e 20 20 54 68 65 20 6f 75 74 70 75  | e.unmodified.Program...The.outpu | 
| 60d20 |  74 20 66 72 6f 6d 20 72 75 6e 6e 69 6e 67 20 61    0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 73  | t.from.running.a.covered.work.is | 
| 60d40 |  20 63 6f 76 65 72 65 64 20 62 79 20 74 68 69 73    20 4c 69 63 65 6e 73 65 20 6f 6e 6c 79 20 69 66  | .covered.by.this.License.only.if | 
| 60d60 |  20 74 68 65 20 6f 75 74 70 75 74 2c 20 67 69 76    65 6e 20 69 74 73 0a 63 6f 6e 74 65 6e 74 2c 20  | .the.output,.given.its.content,. | 
| 60d80 |  63 6f 6e 73 74 69 74 75 74 65 73 20 61 20 63 6f    76 65 72 65 64 20 77 6f 72 6b 2e 20 20 54 68 69  | constitutes.a.covered.work...Thi | 
| 60da0 |  73 20 4c 69 63 65 6e 73 65 20 61 63 6b 6e 6f 77    6c 65 64 67 65 73 20 79 6f 75 72 0a 72 69 67 68  | s.License.acknowledges.your.righ | 
| 60dc0 |  74 73 20 6f 66 20 66 61 69 72 20 75 73 65 20 6f    72 20 6f 74 68 65 72 20 65 71 75 69 76 61 6c 65  | ts.of.fair.use.or.other.equivale | 
| 60de0 |  6e 74 2c 20 61 73 20 70 72 6f 76 69 64 65 64 20    62 79 20 63 6f 70 79 72 69 67 68 74 20 6c 61 77  | nt,.as.provided.by.copyright.law | 
| 60e00 |  2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 6d 61 6b    65 2c 20 72 75 6e 20 61 6e 64 20 70 72 6f 70 61  | .....You.may.make,.run.and.propa | 
| 60e20 |  67 61 74 65 20 63 6f 76 65 72 65 64 20 77 6f 72    6b 73 20 74 68 61 74 20 79 6f 75 20 64 6f 20 6e  | gate.covered.works.that.you.do.n | 
| 60e40 |  6f 74 0a 63 6f 6e 76 65 79 2c 20 77 69 74 68 6f    75 74 20 63 6f 6e 64 69 74 69 6f 6e 73 20 73 6f  | ot.convey,.without.conditions.so | 
| 60e60 |  20 6c 6f 6e 67 20 61 73 20 79 6f 75 72 20 6c 69    63 65 6e 73 65 20 6f 74 68 65 72 77 69 73 65 20  | .long.as.your.license.otherwise. | 
| 60e80 |  72 65 6d 61 69 6e 73 0a 69 6e 20 66 6f 72 63 65    2e 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65  | remains.in.force...You.may.conve | 
| 60ea0 |  79 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 73 20    74 6f 20 6f 74 68 65 72 73 20 66 6f 72 20 74 68  | y.covered.works.to.others.for.th | 
| 60ec0 |  65 20 73 6f 6c 65 20 70 75 72 70 6f 73 65 0a 6f    66 20 68 61 76 69 6e 67 20 74 68 65 6d 20 6d 61  | e.sole.purpose.of.having.them.ma | 
| 60ee0 |  6b 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73    20 65 78 63 6c 75 73 69 76 65 6c 79 20 66 6f 72  | ke.modifications.exclusively.for | 
| 60f00 |  20 79 6f 75 2c 20 6f 72 20 70 72 6f 76 69 64 65    20 79 6f 75 0a 77 69 74 68 20 66 61 63 69 6c 69  | .you,.or.provide.you.with.facili | 
| 60f20 |  74 69 65 73 20 66 6f 72 20 72 75 6e 6e 69 6e 67    20 74 68 6f 73 65 20 77 6f 72 6b 73 2c 20 70 72  | ties.for.running.those.works,.pr | 
| 60f40 |  6f 76 69 64 65 64 20 74 68 61 74 20 79 6f 75 20    63 6f 6d 70 6c 79 20 77 69 74 68 0a 74 68 65 20  | ovided.that.you.comply.with.the. | 
| 60f60 |  74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 4c 69    63 65 6e 73 65 20 69 6e 20 63 6f 6e 76 65 79 69  | terms.of.this.License.in.conveyi | 
| 60f80 |  6e 67 20 61 6c 6c 20 6d 61 74 65 72 69 61 6c 20    66 6f 72 20 77 68 69 63 68 20 79 6f 75 20 64 6f  | ng.all.material.for.which.you.do | 
| 60fa0 |  0a 6e 6f 74 20 63 6f 6e 74 72 6f 6c 20 63 6f 70    79 72 69 67 68 74 2e 20 20 54 68 6f 73 65 20 74  | .not.control.copyright...Those.t | 
| 60fc0 |  68 75 73 20 6d 61 6b 69 6e 67 20 6f 72 20 72 75    6e 6e 69 6e 67 20 74 68 65 20 63 6f 76 65 72 65  | hus.making.or.running.the.covere | 
| 60fe0 |  64 20 77 6f 72 6b 73 0a 66 6f 72 20 79 6f 75 20    6d 75 73 74 20 64 6f 20 73 6f 20 65 78 63 6c 75  | d.works.for.you.must.do.so.exclu | 
| 61000 |  73 69 76 65 6c 79 20 6f 6e 20 79 6f 75 72 20 62    65 68 61 6c 66 2c 20 75 6e 64 65 72 20 79 6f 75  | sively.on.your.behalf,.under.you | 
| 61020 |  72 20 64 69 72 65 63 74 69 6f 6e 0a 61 6e 64 20    63 6f 6e 74 72 6f 6c 2c 20 6f 6e 20 74 65 72 6d  | r.direction.and.control,.on.term | 
| 61040 |  73 20 74 68 61 74 20 70 72 6f 68 69 62 69 74 20    74 68 65 6d 20 66 72 6f 6d 20 6d 61 6b 69 6e 67  | s.that.prohibit.them.from.making | 
| 61060 |  20 61 6e 79 20 63 6f 70 69 65 73 20 6f 66 0a 79    6f 75 72 20 63 6f 70 79 72 69 67 68 74 65 64 20  | .any.copies.of.your.copyrighted. | 
| 61080 |  6d 61 74 65 72 69 61 6c 20 6f 75 74 73 69 64 65    20 74 68 65 69 72 20 72 65 6c 61 74 69 6f 6e 73  | material.outside.their.relations | 
| 610a0 |  68 69 70 20 77 69 74 68 20 79 6f 75 2e 0a 0a 20    20 43 6f 6e 76 65 79 69 6e 67 20 75 6e 64 65 72  | hip.with.you.....Conveying.under | 
| 610c0 |  20 61 6e 79 20 6f 74 68 65 72 20 63 69 72 63 75    6d 73 74 61 6e 63 65 73 20 69 73 20 70 65 72 6d  | .any.other.circumstances.is.perm | 
| 610e0 |  69 74 74 65 64 20 73 6f 6c 65 6c 79 20 75 6e 64    65 72 0a 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e  | itted.solely.under.the.condition | 
| 61100 |  73 20 73 74 61 74 65 64 20 62 65 6c 6f 77 2e 20    20 53 75 62 6c 69 63 65 6e 73 69 6e 67 20 69 73  | s.stated.below...Sublicensing.is | 
| 61120 |  20 6e 6f 74 20 61 6c 6c 6f 77 65 64 3b 20 73 65    63 74 69 6f 6e 20 31 30 0a 6d 61 6b 65 73 20 69  | .not.allowed;.section.10.makes.i | 
| 61140 |  74 20 75 6e 6e 65 63 65 73 73 61 72 79 2e 0a 0a    20 20 33 2e 20 50 72 6f 74 65 63 74 69 6e 67 20  | t.unnecessary.....3..Protecting. | 
| 61160 |  55 73 65 72 73 27 20 4c 65 67 61 6c 20 52 69 67    68 74 73 20 46 72 6f 6d 20 41 6e 74 69 2d 43 69  | Users'.Legal.Rights.From.Anti-Ci | 
| 61180 |  72 63 75 6d 76 65 6e 74 69 6f 6e 20 4c 61 77 2e    0a 0a 20 20 4e 6f 20 63 6f 76 65 72 65 64 20 77  | rcumvention.Law.....No.covered.w | 
| 611a0 |  6f 72 6b 20 73 68 61 6c 6c 20 62 65 20 64 65 65    6d 65 64 20 70 61 72 74 20 6f 66 20 61 6e 20 65  | ork.shall.be.deemed.part.of.an.e | 
| 611c0 |  66 66 65 63 74 69 76 65 20 74 65 63 68 6e 6f 6c    6f 67 69 63 61 6c 0a 6d 65 61 73 75 72 65 20 75  | ffective.technological.measure.u | 
| 611e0 |  6e 64 65 72 20 61 6e 79 20 61 70 70 6c 69 63 61    62 6c 65 20 6c 61 77 20 66 75 6c 66 69 6c 6c 69  | nder.any.applicable.law.fulfilli | 
| 61200 |  6e 67 20 6f 62 6c 69 67 61 74 69 6f 6e 73 20 75    6e 64 65 72 20 61 72 74 69 63 6c 65 0a 31 31 20  | ng.obligations.under.article.11. | 
| 61220 |  6f 66 20 74 68 65 20 57 49 50 4f 20 63 6f 70 79    72 69 67 68 74 20 74 72 65 61 74 79 20 61 64 6f  | of.the.WIPO.copyright.treaty.ado | 
| 61240 |  70 74 65 64 20 6f 6e 20 32 30 20 44 65 63 65 6d    62 65 72 20 31 39 39 36 2c 20 6f 72 0a 73 69 6d  | pted.on.20.December.1996,.or.sim | 
| 61260 |  69 6c 61 72 20 6c 61 77 73 20 70 72 6f 68 69 62    69 74 69 6e 67 20 6f 72 20 72 65 73 74 72 69 63  | ilar.laws.prohibiting.or.restric | 
| 61280 |  74 69 6e 67 20 63 69 72 63 75 6d 76 65 6e 74 69    6f 6e 20 6f 66 20 73 75 63 68 0a 6d 65 61 73 75  | ting.circumvention.of.such.measu | 
| 612a0 |  72 65 73 2e 0a 0a 20 20 57 68 65 6e 20 79 6f 75    20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65  | res.....When.you.convey.a.covere | 
| 612c0 |  64 20 77 6f 72 6b 2c 20 79 6f 75 20 77 61 69 76    65 20 61 6e 79 20 6c 65 67 61 6c 20 70 6f 77 65  | d.work,.you.waive.any.legal.powe | 
| 612e0 |  72 20 74 6f 20 66 6f 72 62 69 64 0a 63 69 72 63    75 6d 76 65 6e 74 69 6f 6e 20 6f 66 20 74 65 63  | r.to.forbid.circumvention.of.tec | 
| 61300 |  68 6e 6f 6c 6f 67 69 63 61 6c 20 6d 65 61 73 75    72 65 73 20 74 6f 20 74 68 65 20 65 78 74 65 6e  | hnological.measures.to.the.exten | 
| 61320 |  74 20 73 75 63 68 20 63 69 72 63 75 6d 76 65 6e    74 69 6f 6e 0a 69 73 20 65 66 66 65 63 74 65 64  | t.such.circumvention.is.effected | 
| 61340 |  20 62 79 20 65 78 65 72 63 69 73 69 6e 67 20 72    69 67 68 74 73 20 75 6e 64 65 72 20 74 68 69 73  | .by.exercising.rights.under.this | 
| 61360 |  20 4c 69 63 65 6e 73 65 20 77 69 74 68 20 72 65    73 70 65 63 74 20 74 6f 0a 74 68 65 20 63 6f 76  | .License.with.respect.to.the.cov | 
| 61380 |  65 72 65 64 20 77 6f 72 6b 2c 20 61 6e 64 20 79    6f 75 20 64 69 73 63 6c 61 69 6d 20 61 6e 79 20  | ered.work,.and.you.disclaim.any. | 
| 613a0 |  69 6e 74 65 6e 74 69 6f 6e 20 74 6f 20 6c 69 6d    69 74 20 6f 70 65 72 61 74 69 6f 6e 20 6f 72 0a  | intention.to.limit.operation.or. | 
| 613c0 |  6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 66 20    74 68 65 20 77 6f 72 6b 20 61 73 20 61 20 6d 65  | modification.of.the.work.as.a.me | 
| 613e0 |  61 6e 73 20 6f 66 20 65 6e 66 6f 72 63 69 6e 67    2c 20 61 67 61 69 6e 73 74 20 74 68 65 20 77 6f  | ans.of.enforcing,.against.the.wo | 
| 61400 |  72 6b 27 73 0a 75 73 65 72 73 2c 20 79 6f 75 72    20 6f 72 20 74 68 69 72 64 20 70 61 72 74 69 65  | rk's.users,.your.or.third.partie | 
| 61420 |  73 27 20 6c 65 67 61 6c 20 72 69 67 68 74 73 20    74 6f 20 66 6f 72 62 69 64 20 63 69 72 63 75 6d  | s'.legal.rights.to.forbid.circum | 
| 61440 |  76 65 6e 74 69 6f 6e 20 6f 66 0a 74 65 63 68 6e    6f 6c 6f 67 69 63 61 6c 20 6d 65 61 73 75 72 65  | vention.of.technological.measure | 
| 61460 |  73 2e 0a 0a 20 20 34 2e 20 43 6f 6e 76 65 79 69    6e 67 20 56 65 72 62 61 74 69 6d 20 43 6f 70 69  | s.....4..Conveying.Verbatim.Copi | 
| 61480 |  65 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 63    6f 6e 76 65 79 20 76 65 72 62 61 74 69 6d 20 63  | es.....You.may.convey.verbatim.c | 
| 614a0 |  6f 70 69 65 73 20 6f 66 20 74 68 65 20 50 72 6f    67 72 61 6d 27 73 20 73 6f 75 72 63 65 20 63 6f  | opies.of.the.Program's.source.co | 
| 614c0 |  64 65 20 61 73 20 79 6f 75 0a 72 65 63 65 69 76    65 20 69 74 2c 20 69 6e 20 61 6e 79 20 6d 65 64  | de.as.you.receive.it,.in.any.med | 
| 614e0 |  69 75 6d 2c 20 70 72 6f 76 69 64 65 64 20 74 68    61 74 20 79 6f 75 20 63 6f 6e 73 70 69 63 75 6f  | ium,.provided.that.you.conspicuo | 
| 61500 |  75 73 6c 79 20 61 6e 64 0a 61 70 70 72 6f 70 72    69 61 74 65 6c 79 20 70 75 62 6c 69 73 68 20 6f  | usly.and.appropriately.publish.o | 
| 61520 |  6e 20 65 61 63 68 20 63 6f 70 79 20 61 6e 20 61    70 70 72 6f 70 72 69 61 74 65 20 63 6f 70 79 72  | n.each.copy.an.appropriate.copyr | 
| 61540 |  69 67 68 74 20 6e 6f 74 69 63 65 3b 0a 6b 65 65    70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f 74  | ight.notice;.keep.intact.all.not | 
| 61560 |  69 63 65 73 20 73 74 61 74 69 6e 67 20 74 68 61    74 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61  | ices.stating.that.this.License.a | 
| 61580 |  6e 64 20 61 6e 79 0a 6e 6f 6e 2d 70 65 72 6d 69    73 73 69 76 65 20 74 65 72 6d 73 20 61 64 64 65  | nd.any.non-permissive.terms.adde | 
| 615a0 |  64 20 69 6e 20 61 63 63 6f 72 64 20 77 69 74 68    20 73 65 63 74 69 6f 6e 20 37 20 61 70 70 6c 79  | d.in.accord.with.section.7.apply | 
| 615c0 |  20 74 6f 20 74 68 65 20 63 6f 64 65 3b 0a 6b 65    65 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f  | .to.the.code;.keep.intact.all.no | 
| 615e0 |  74 69 63 65 73 20 6f 66 20 74 68 65 20 61 62 73    65 6e 63 65 20 6f 66 20 61 6e 79 20 77 61 72 72  | tices.of.the.absence.of.any.warr | 
| 61600 |  61 6e 74 79 3b 20 61 6e 64 20 67 69 76 65 20 61    6c 6c 0a 72 65 63 69 70 69 65 6e 74 73 20 61 20  | anty;.and.give.all.recipients.a. | 
| 61620 |  63 6f 70 79 20 6f 66 20 74 68 69 73 20 4c 69 63    65 6e 73 65 20 61 6c 6f 6e 67 20 77 69 74 68 20  | copy.of.this.License.along.with. | 
| 61640 |  74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20    59 6f 75 20 6d 61 79 20 63 68 61 72 67 65 20 61  | the.Program.....You.may.charge.a | 
| 61660 |  6e 79 20 70 72 69 63 65 20 6f 72 20 6e 6f 20 70    72 69 63 65 20 66 6f 72 20 65 61 63 68 20 63 6f  | ny.price.or.no.price.for.each.co | 
| 61680 |  70 79 20 74 68 61 74 20 79 6f 75 20 63 6f 6e 76    65 79 2c 0a 61 6e 64 20 79 6f 75 20 6d 61 79 20  | py.that.you.convey,.and.you.may. | 
| 616a0 |  6f 66 66 65 72 20 73 75 70 70 6f 72 74 20 6f 72    20 77 61 72 72 61 6e 74 79 20 70 72 6f 74 65 63  | offer.support.or.warranty.protec | 
| 616c0 |  74 69 6f 6e 20 66 6f 72 20 61 20 66 65 65 2e 0a    0a 20 20 35 2e 20 43 6f 6e 76 65 79 69 6e 67 20  | tion.for.a.fee.....5..Conveying. | 
| 616e0 |  4d 6f 64 69 66 69 65 64 20 53 6f 75 72 63 65 20    56 65 72 73 69 6f 6e 73 2e 0a 0a 20 20 59 6f 75  | Modified.Source.Versions.....You | 
| 61700 |  20 6d 61 79 20 63 6f 6e 76 65 79 20 61 20 77 6f    72 6b 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  | .may.convey.a.work.based.on.the. | 
| 61720 |  50 72 6f 67 72 61 6d 2c 20 6f 72 20 74 68 65 20    6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 74 6f  | Program,.or.the.modifications.to | 
| 61740 |  0a 70 72 6f 64 75 63 65 20 69 74 20 66 72 6f 6d    20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 69 6e  | .produce.it.from.the.Program,.in | 
| 61760 |  20 74 68 65 20 66 6f 72 6d 20 6f 66 20 73 6f 75    72 63 65 20 63 6f 64 65 20 75 6e 64 65 72 20 74  | .the.form.of.source.code.under.t | 
| 61780 |  68 65 0a 74 65 72 6d 73 20 6f 66 20 73 65 63 74    69 6f 6e 20 34 2c 20 70 72 6f 76 69 64 65 64 20  | he.terms.of.section.4,.provided. | 
| 617a0 |  74 68 61 74 20 79 6f 75 20 61 6c 73 6f 20 6d 65    65 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20  | that.you.also.meet.all.of.these. | 
| 617c0 |  63 6f 6e 64 69 74 69 6f 6e 73 3a 0a 0a 20 20 20    20 61 29 20 54 68 65 20 77 6f 72 6b 20 6d 75 73  | conditions:......a).The.work.mus | 
| 617e0 |  74 20 63 61 72 72 79 20 70 72 6f 6d 69 6e 65 6e    74 20 6e 6f 74 69 63 65 73 20 73 74 61 74 69 6e  | t.carry.prominent.notices.statin | 
| 61800 |  67 20 74 68 61 74 20 79 6f 75 20 6d 6f 64 69 66    69 65 64 0a 20 20 20 20 69 74 2c 20 61 6e 64 20  | g.that.you.modified.....it,.and. | 
| 61820 |  67 69 76 69 6e 67 20 61 20 72 65 6c 65 76 61 6e    74 20 64 61 74 65 2e 0a 0a 20 20 20 20 62 29 20  | giving.a.relevant.date.......b). | 
| 61840 |  54 68 65 20 77 6f 72 6b 20 6d 75 73 74 20 63 61    72 72 79 20 70 72 6f 6d 69 6e 65 6e 74 20 6e 6f  | The.work.must.carry.prominent.no | 
| 61860 |  74 69 63 65 73 20 73 74 61 74 69 6e 67 20 74 68    61 74 20 69 74 20 69 73 0a 20 20 20 20 72 65 6c  | tices.stating.that.it.is.....rel | 
| 61880 |  65 61 73 65 64 20 75 6e 64 65 72 20 74 68 69 73    20 4c 69 63 65 6e 73 65 20 61 6e 64 20 61 6e 79  | eased.under.this.License.and.any | 
| 618a0 |  20 63 6f 6e 64 69 74 69 6f 6e 73 20 61 64 64 65    64 20 75 6e 64 65 72 20 73 65 63 74 69 6f 6e 0a  | .conditions.added.under.section. | 
| 618c0 |  20 20 20 20 37 2e 20 20 54 68 69 73 20 72 65 71    75 69 72 65 6d 65 6e 74 20 6d 6f 64 69 66 69 65  | ....7...This.requirement.modifie | 
| 618e0 |  73 20 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e    74 20 69 6e 20 73 65 63 74 69 6f 6e 20 34 20 74  | s.the.requirement.in.section.4.t | 
| 61900 |  6f 0a 20 20 20 20 22 6b 65 65 70 20 69 6e 74 61    63 74 20 61 6c 6c 20 6e 6f 74 69 63 65 73 22 2e  | o....."keep.intact.all.notices". | 
| 61920 |  0a 0a 20 20 20 20 63 29 20 59 6f 75 20 6d 75 73    74 20 6c 69 63 65 6e 73 65 20 74 68 65 20 65 6e  | ......c).You.must.license.the.en | 
| 61940 |  74 69 72 65 20 77 6f 72 6b 2c 20 61 73 20 61 20    77 68 6f 6c 65 2c 20 75 6e 64 65 72 20 74 68 69  | tire.work,.as.a.whole,.under.thi | 
| 61960 |  73 0a 20 20 20 20 4c 69 63 65 6e 73 65 20 74 6f    20 61 6e 79 6f 6e 65 20 77 68 6f 20 63 6f 6d 65  | s.....License.to.anyone.who.come | 
| 61980 |  73 20 69 6e 74 6f 20 70 6f 73 73 65 73 73 69 6f    6e 20 6f 66 20 61 20 63 6f 70 79 2e 20 20 54 68  | s.into.possession.of.a.copy...Th | 
| 619a0 |  69 73 0a 20 20 20 20 4c 69 63 65 6e 73 65 20 77    69 6c 6c 20 74 68 65 72 65 66 6f 72 65 20 61 70  | is.....License.will.therefore.ap | 
| 619c0 |  70 6c 79 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20    61 6e 79 20 61 70 70 6c 69 63 61 62 6c 65 20 73  | ply,.along.with.any.applicable.s | 
| 619e0 |  65 63 74 69 6f 6e 20 37 0a 20 20 20 20 61 64 64    69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 2c 20 74  | ection.7.....additional.terms,.t | 
| 61a00 |  6f 20 74 68 65 20 77 68 6f 6c 65 20 6f 66 20 74    68 65 20 77 6f 72 6b 2c 20 61 6e 64 20 61 6c 6c  | o.the.whole.of.the.work,.and.all | 
| 61a20 |  20 69 74 73 20 70 61 72 74 73 2c 0a 20 20 20 20    72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 68 6f  | .its.parts,.....regardless.of.ho | 
| 61a40 |  77 20 74 68 65 79 20 61 72 65 20 70 61 63 6b 61    67 65 64 2e 20 20 54 68 69 73 20 4c 69 63 65 6e  | w.they.are.packaged...This.Licen | 
| 61a60 |  73 65 20 67 69 76 65 73 20 6e 6f 0a 20 20 20 20    70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 6c 69  | se.gives.no.....permission.to.li | 
| 61a80 |  63 65 6e 73 65 20 74 68 65 20 77 6f 72 6b 20 69    6e 20 61 6e 79 20 6f 74 68 65 72 20 77 61 79 2c  | cense.the.work.in.any.other.way, | 
| 61aa0 |  20 62 75 74 20 69 74 20 64 6f 65 73 20 6e 6f 74    0a 20 20 20 20 69 6e 76 61 6c 69 64 61 74 65 20  | .but.it.does.not.....invalidate. | 
| 61ac0 |  73 75 63 68 20 70 65 72 6d 69 73 73 69 6f 6e 20    69 66 20 79 6f 75 20 68 61 76 65 20 73 65 70 61  | such.permission.if.you.have.sepa | 
| 61ae0 |  72 61 74 65 6c 79 20 72 65 63 65 69 76 65 64 20    69 74 2e 0a 0a 20 20 20 20 64 29 20 49 66 20 74  | rately.received.it.......d).If.t | 
| 61b00 |  68 65 20 77 6f 72 6b 20 68 61 73 20 69 6e 74 65    72 61 63 74 69 76 65 20 75 73 65 72 20 69 6e 74  | he.work.has.interactive.user.int | 
| 61b20 |  65 72 66 61 63 65 73 2c 20 65 61 63 68 20 6d 75    73 74 20 64 69 73 70 6c 61 79 0a 20 20 20 20 41  | erfaces,.each.must.display.....A | 
| 61b40 |  70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c    20 4e 6f 74 69 63 65 73 3b 20 68 6f 77 65 76 65  | ppropriate.Legal.Notices;.howeve | 
| 61b60 |  72 2c 20 69 66 20 74 68 65 20 50 72 6f 67 72 61    6d 20 68 61 73 20 69 6e 74 65 72 61 63 74 69 76  | r,.if.the.Program.has.interactiv | 
| 61b80 |  65 0a 20 20 20 20 69 6e 74 65 72 66 61 63 65 73    20 74 68 61 74 20 64 6f 20 6e 6f 74 20 64 69 73  | e.....interfaces.that.do.not.dis | 
| 61ba0 |  70 6c 61 79 20 41 70 70 72 6f 70 72 69 61 74 65    20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 2c 20  | play.Appropriate.Legal.Notices,. | 
| 61bc0 |  79 6f 75 72 0a 20 20 20 20 77 6f 72 6b 20 6e 65    65 64 20 6e 6f 74 20 6d 61 6b 65 20 74 68 65 6d  | your.....work.need.not.make.them | 
| 61be0 |  20 64 6f 20 73 6f 2e 0a 0a 20 20 41 20 63 6f 6d    70 69 6c 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f  | .do.so.....A.compilation.of.a.co | 
| 61c00 |  76 65 72 65 64 20 77 6f 72 6b 20 77 69 74 68 20    6f 74 68 65 72 20 73 65 70 61 72 61 74 65 20 61  | vered.work.with.other.separate.a | 
| 61c20 |  6e 64 20 69 6e 64 65 70 65 6e 64 65 6e 74 0a 77    6f 72 6b 73 2c 20 77 68 69 63 68 20 61 72 65 20  | nd.independent.works,.which.are. | 
| 61c40 |  6e 6f 74 20 62 79 20 74 68 65 69 72 20 6e 61 74    75 72 65 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f  | not.by.their.nature.extensions.o | 
| 61c60 |  66 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f    72 6b 2c 0a 61 6e 64 20 77 68 69 63 68 20 61 72  | f.the.covered.work,.and.which.ar | 
| 61c80 |  65 20 6e 6f 74 20 63 6f 6d 62 69 6e 65 64 20 77    69 74 68 20 69 74 20 73 75 63 68 20 61 73 20 74  | e.not.combined.with.it.such.as.t | 
| 61ca0 |  6f 20 66 6f 72 6d 20 61 20 6c 61 72 67 65 72 20    70 72 6f 67 72 61 6d 2c 0a 69 6e 20 6f 72 20 6f  | o.form.a.larger.program,.in.or.o | 
| 61cc0 |  6e 20 61 20 76 6f 6c 75 6d 65 20 6f 66 20 61 20    73 74 6f 72 61 67 65 20 6f 72 20 64 69 73 74 72  | n.a.volume.of.a.storage.or.distr | 
| 61ce0 |  69 62 75 74 69 6f 6e 20 6d 65 64 69 75 6d 2c 20    69 73 20 63 61 6c 6c 65 64 20 61 6e 0a 22 61 67  | ibution.medium,.is.called.an."ag | 
| 61d00 |  67 72 65 67 61 74 65 22 20 69 66 20 74 68 65 20    63 6f 6d 70 69 6c 61 74 69 6f 6e 20 61 6e 64 20  | gregate".if.the.compilation.and. | 
| 61d20 |  69 74 73 20 72 65 73 75 6c 74 69 6e 67 20 63 6f    70 79 72 69 67 68 74 20 61 72 65 20 6e 6f 74 0a  | its.resulting.copyright.are.not. | 
| 61d40 |  75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68    65 20 61 63 63 65 73 73 20 6f 72 20 6c 65 67 61  | used.to.limit.the.access.or.lega | 
| 61d60 |  6c 20 72 69 67 68 74 73 20 6f 66 20 74 68 65 20    63 6f 6d 70 69 6c 61 74 69 6f 6e 27 73 20 75 73  | l.rights.of.the.compilation's.us | 
| 61d80 |  65 72 73 0a 62 65 79 6f 6e 64 20 77 68 61 74 20    74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 77  | ers.beyond.what.the.individual.w | 
| 61da0 |  6f 72 6b 73 20 70 65 72 6d 69 74 2e 20 20 49 6e    63 6c 75 73 69 6f 6e 20 6f 66 20 61 20 63 6f 76  | orks.permit...Inclusion.of.a.cov | 
| 61dc0 |  65 72 65 64 20 77 6f 72 6b 0a 69 6e 20 61 6e 20    61 67 67 72 65 67 61 74 65 20 64 6f 65 73 20 6e  | ered.work.in.an.aggregate.does.n | 
| 61de0 |  6f 74 20 63 61 75 73 65 20 74 68 69 73 20 4c 69    63 65 6e 73 65 20 74 6f 20 61 70 70 6c 79 20 74  | ot.cause.this.License.to.apply.t | 
| 61e00 |  6f 20 74 68 65 20 6f 74 68 65 72 0a 70 61 72 74    73 20 6f 66 20 74 68 65 20 61 67 67 72 65 67 61  | o.the.other.parts.of.the.aggrega | 
| 61e20 |  74 65 2e 0a 0a 20 20 36 2e 20 43 6f 6e 76 65 79    69 6e 67 20 4e 6f 6e 2d 53 6f 75 72 63 65 20 46  | te.....6..Conveying.Non-Source.F | 
| 61e40 |  6f 72 6d 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79    20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65  | orms.....You.may.convey.a.covere | 
| 61e60 |  64 20 77 6f 72 6b 20 69 6e 20 6f 62 6a 65 63 74    20 63 6f 64 65 20 66 6f 72 6d 20 75 6e 64 65 72  | d.work.in.object.code.form.under | 
| 61e80 |  20 74 68 65 20 74 65 72 6d 73 0a 6f 66 20 73 65    63 74 69 6f 6e 73 20 34 20 61 6e 64 20 35 2c 20  | .the.terms.of.sections.4.and.5,. | 
| 61ea0 |  70 72 6f 76 69 64 65 64 20 74 68 61 74 20 79 6f    75 20 61 6c 73 6f 20 63 6f 6e 76 65 79 20 74 68  | provided.that.you.also.convey.th | 
| 61ec0 |  65 0a 6d 61 63 68 69 6e 65 2d 72 65 61 64 61 62    6c 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67  | e.machine-readable.Corresponding | 
| 61ee0 |  20 53 6f 75 72 63 65 20 75 6e 64 65 72 20 74 68    65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20  | .Source.under.the.terms.of.this. | 
| 61f00 |  4c 69 63 65 6e 73 65 2c 0a 69 6e 20 6f 6e 65 20    6f 66 20 74 68 65 73 65 20 77 61 79 73 3a 0a 0a  | License,.in.one.of.these.ways:.. | 
| 61f20 |  20 20 20 20 61 29 20 43 6f 6e 76 65 79 20 74 68    65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 6e  | ....a).Convey.the.object.code.in | 
| 61f40 |  2c 20 6f 72 20 65 6d 62 6f 64 69 65 64 20 69 6e    2c 20 61 20 70 68 79 73 69 63 61 6c 20 70 72 6f  | ,.or.embodied.in,.a.physical.pro | 
| 61f60 |  64 75 63 74 0a 20 20 20 20 28 69 6e 63 6c 75 64    69 6e 67 20 61 20 70 68 79 73 69 63 61 6c 20 64  | duct.....(including.a.physical.d | 
| 61f80 |  69 73 74 72 69 62 75 74 69 6f 6e 20 6d 65 64 69    75 6d 29 2c 20 61 63 63 6f 6d 70 61 6e 69 65 64  | istribution.medium),.accompanied | 
| 61fa0 |  20 62 79 20 74 68 65 0a 20 20 20 20 43 6f 72 72    65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65  | .by.the.....Corresponding.Source | 
| 61fc0 |  20 66 69 78 65 64 20 6f 6e 20 61 20 64 75 72 61    62 6c 65 20 70 68 79 73 69 63 61 6c 20 6d 65 64  | .fixed.on.a.durable.physical.med | 
| 61fe0 |  69 75 6d 0a 20 20 20 20 63 75 73 74 6f 6d 61 72    69 6c 79 20 75 73 65 64 20 66 6f 72 20 73 6f 66  | ium.....customarily.used.for.sof | 
| 62000 |  74 77 61 72 65 20 69 6e 74 65 72 63 68 61 6e 67    65 2e 0a 0a 20 20 20 20 62 29 20 43 6f 6e 76 65  | tware.interchange.......b).Conve | 
| 62020 |  79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64    65 20 69 6e 2c 20 6f 72 20 65 6d 62 6f 64 69 65  | y.the.object.code.in,.or.embodie | 
| 62040 |  64 20 69 6e 2c 20 61 20 70 68 79 73 69 63 61 6c    20 70 72 6f 64 75 63 74 0a 20 20 20 20 28 69 6e  | d.in,.a.physical.product.....(in | 
| 62060 |  63 6c 75 64 69 6e 67 20 61 20 70 68 79 73 69 63    61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20  | cluding.a.physical.distribution. | 
| 62080 |  6d 65 64 69 75 6d 29 2c 20 61 63 63 6f 6d 70 61    6e 69 65 64 20 62 79 20 61 0a 20 20 20 20 77 72  | medium),.accompanied.by.a.....wr | 
| 620a0 |  69 74 74 65 6e 20 6f 66 66 65 72 2c 20 76 61 6c    69 64 20 66 6f 72 20 61 74 20 6c 65 61 73 74 20  | itten.offer,.valid.for.at.least. | 
| 620c0 |  74 68 72 65 65 20 79 65 61 72 73 20 61 6e 64 20    76 61 6c 69 64 20 66 6f 72 20 61 73 0a 20 20 20  | three.years.and.valid.for.as.... | 
| 620e0 |  20 6c 6f 6e 67 20 61 73 20 79 6f 75 20 6f 66 66    65 72 20 73 70 61 72 65 20 70 61 72 74 73 20 6f  | .long.as.you.offer.spare.parts.o | 
| 62100 |  72 20 63 75 73 74 6f 6d 65 72 20 73 75 70 70 6f    72 74 20 66 6f 72 20 74 68 61 74 20 70 72 6f 64  | r.customer.support.for.that.prod | 
| 62120 |  75 63 74 0a 20 20 20 20 6d 6f 64 65 6c 2c 20 74    6f 20 67 69 76 65 20 61 6e 79 6f 6e 65 20 77 68  | uct.....model,.to.give.anyone.wh | 
| 62140 |  6f 20 70 6f 73 73 65 73 73 65 73 20 74 68 65 20    6f 62 6a 65 63 74 20 63 6f 64 65 20 65 69 74 68  | o.possesses.the.object.code.eith | 
| 62160 |  65 72 20 28 31 29 20 61 0a 20 20 20 20 63 6f 70    79 20 6f 66 20 74 68 65 20 43 6f 72 72 65 73 70  | er.(1).a.....copy.of.the.Corresp | 
| 62180 |  6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 6f    72 20 61 6c 6c 20 74 68 65 20 73 6f 66 74 77 61  | onding.Source.for.all.the.softwa | 
| 621a0 |  72 65 20 69 6e 20 74 68 65 0a 20 20 20 20 70 72    6f 64 75 63 74 20 74 68 61 74 20 69 73 20 63 6f  | re.in.the.....product.that.is.co | 
| 621c0 |  76 65 72 65 64 20 62 79 20 74 68 69 73 20 4c 69    63 65 6e 73 65 2c 20 6f 6e 20 61 20 64 75 72 61  | vered.by.this.License,.on.a.dura | 
| 621e0 |  62 6c 65 20 70 68 79 73 69 63 61 6c 0a 20 20 20    20 6d 65 64 69 75 6d 20 63 75 73 74 6f 6d 61 72  | ble.physical.....medium.customar | 
| 62200 |  69 6c 79 20 75 73 65 64 20 66 6f 72 20 73 6f 66    74 77 61 72 65 20 69 6e 74 65 72 63 68 61 6e 67  | ily.used.for.software.interchang | 
| 62220 |  65 2c 20 66 6f 72 20 61 20 70 72 69 63 65 20 6e    6f 0a 20 20 20 20 6d 6f 72 65 20 74 68 61 6e 20  | e,.for.a.price.no.....more.than. | 
| 62240 |  79 6f 75 72 20 72 65 61 73 6f 6e 61 62 6c 65 20    63 6f 73 74 20 6f 66 20 70 68 79 73 69 63 61 6c  | your.reasonable.cost.of.physical | 
| 62260 |  6c 79 20 70 65 72 66 6f 72 6d 69 6e 67 20 74 68    69 73 0a 20 20 20 20 63 6f 6e 76 65 79 69 6e 67  | ly.performing.this.....conveying | 
| 62280 |  20 6f 66 20 73 6f 75 72 63 65 2c 20 6f 72 20 28    32 29 20 61 63 63 65 73 73 20 74 6f 20 63 6f 70  | .of.source,.or.(2).access.to.cop | 
| 622a0 |  79 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73    70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66  | y.the.....Corresponding.Source.f | 
| 622c0 |  72 6f 6d 20 61 20 6e 65 74 77 6f 72 6b 20 73 65    72 76 65 72 20 61 74 20 6e 6f 20 63 68 61 72 67  | rom.a.network.server.at.no.charg | 
| 622e0 |  65 2e 0a 0a 20 20 20 20 63 29 20 43 6f 6e 76 65    79 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 70  | e.......c).Convey.individual.cop | 
| 62300 |  69 65 73 20 6f 66 20 74 68 65 20 6f 62 6a 65 63    74 20 63 6f 64 65 20 77 69 74 68 20 61 20 63 6f  | ies.of.the.object.code.with.a.co | 
| 62320 |  70 79 20 6f 66 20 74 68 65 0a 20 20 20 20 77 72    69 74 74 65 6e 20 6f 66 66 65 72 20 74 6f 20 70  | py.of.the.....written.offer.to.p | 
| 62340 |  72 6f 76 69 64 65 20 74 68 65 20 43 6f 72 72 65    73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2e  | rovide.the.Corresponding.Source. | 
| 62360 |  20 20 54 68 69 73 0a 20 20 20 20 61 6c 74 65 72    6e 61 74 69 76 65 20 69 73 20 61 6c 6c 6f 77 65  | ..This.....alternative.is.allowe | 
| 62380 |  64 20 6f 6e 6c 79 20 6f 63 63 61 73 69 6f 6e 61    6c 6c 79 20 61 6e 64 20 6e 6f 6e 63 6f 6d 6d 65  | d.only.occasionally.and.noncomme | 
| 623a0 |  72 63 69 61 6c 6c 79 2c 20 61 6e 64 0a 20 20 20    20 6f 6e 6c 79 20 69 66 20 79 6f 75 20 72 65 63  | rcially,.and.....only.if.you.rec | 
| 623c0 |  65 69 76 65 64 20 74 68 65 20 6f 62 6a 65 63 74    20 63 6f 64 65 20 77 69 74 68 20 73 75 63 68 20  | eived.the.object.code.with.such. | 
| 623e0 |  61 6e 20 6f 66 66 65 72 2c 20 69 6e 20 61 63 63    6f 72 64 0a 20 20 20 20 77 69 74 68 20 73 75 62  | an.offer,.in.accord.....with.sub | 
| 62400 |  73 65 63 74 69 6f 6e 20 36 62 2e 0a 0a 20 20 20    20 64 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f  | section.6b.......d).Convey.the.o | 
| 62420 |  62 6a 65 63 74 20 63 6f 64 65 20 62 79 20 6f 66    66 65 72 69 6e 67 20 61 63 63 65 73 73 20 66 72  | bject.code.by.offering.access.fr | 
| 62440 |  6f 6d 20 61 20 64 65 73 69 67 6e 61 74 65 64 0a    20 20 20 20 70 6c 61 63 65 20 28 67 72 61 74 69  | om.a.designated.....place.(grati | 
| 62460 |  73 20 6f 72 20 66 6f 72 20 61 20 63 68 61 72 67    65 29 2c 20 61 6e 64 20 6f 66 66 65 72 20 65 71  | s.or.for.a.charge),.and.offer.eq | 
| 62480 |  75 69 76 61 6c 65 6e 74 20 61 63 63 65 73 73 20    74 6f 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65  | uivalent.access.to.the.....Corre | 
| 624a0 |  73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20    69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20  | sponding.Source.in.the.same.way. | 
| 624c0 |  74 68 72 6f 75 67 68 20 74 68 65 20 73 61 6d 65    20 70 6c 61 63 65 20 61 74 20 6e 6f 0a 20 20 20  | through.the.same.place.at.no.... | 
| 624e0 |  20 66 75 72 74 68 65 72 20 63 68 61 72 67 65 2e    20 20 59 6f 75 20 6e 65 65 64 20 6e 6f 74 20 72  | .further.charge...You.need.not.r | 
| 62500 |  65 71 75 69 72 65 20 72 65 63 69 70 69 65 6e 74    73 20 74 6f 20 63 6f 70 79 20 74 68 65 0a 20 20  | equire.recipients.to.copy.the... | 
| 62520 |  20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20    53 6f 75 72 63 65 20 61 6c 6f 6e 67 20 77 69 74  | ..Corresponding.Source.along.wit | 
| 62540 |  68 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64    65 2e 20 20 49 66 20 74 68 65 20 70 6c 61 63 65  | h.the.object.code...If.the.place | 
| 62560 |  20 74 6f 0a 20 20 20 20 63 6f 70 79 20 74 68 65    20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 73 20  | .to.....copy.the.object.code.is. | 
| 62580 |  61 20 6e 65 74 77 6f 72 6b 20 73 65 72 76 65 72    2c 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64  | a.network.server,.the.Correspond | 
| 625a0 |  69 6e 67 20 53 6f 75 72 63 65 0a 20 20 20 20 6d    61 79 20 62 65 20 6f 6e 20 61 20 64 69 66 66 65  | ing.Source.....may.be.on.a.diffe | 
| 625c0 |  72 65 6e 74 20 73 65 72 76 65 72 20 28 6f 70 65    72 61 74 65 64 20 62 79 20 79 6f 75 20 6f 72 20  | rent.server.(operated.by.you.or. | 
| 625e0 |  61 20 74 68 69 72 64 20 70 61 72 74 79 29 0a 20    20 20 20 74 68 61 74 20 73 75 70 70 6f 72 74 73  | a.third.party).....that.supports | 
| 62600 |  20 65 71 75 69 76 61 6c 65 6e 74 20 63 6f 70 79    69 6e 67 20 66 61 63 69 6c 69 74 69 65 73 2c 20  | .equivalent.copying.facilities,. | 
| 62620 |  70 72 6f 76 69 64 65 64 20 79 6f 75 20 6d 61 69    6e 74 61 69 6e 0a 20 20 20 20 63 6c 65 61 72 20  | provided.you.maintain.....clear. | 
| 62640 |  64 69 72 65 63 74 69 6f 6e 73 20 6e 65 78 74 20    74 6f 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f  | directions.next.to.the.object.co | 
| 62660 |  64 65 20 73 61 79 69 6e 67 20 77 68 65 72 65 20    74 6f 20 66 69 6e 64 20 74 68 65 0a 20 20 20 20  | de.saying.where.to.find.the..... | 
| 62680 |  43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f    75 72 63 65 2e 20 20 52 65 67 61 72 64 6c 65 73  | Corresponding.Source...Regardles | 
| 626a0 |  73 20 6f 66 20 77 68 61 74 20 73 65 72 76 65 72    20 68 6f 73 74 73 20 74 68 65 0a 20 20 20 20 43  | s.of.what.server.hosts.the.....C | 
| 626c0 |  6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75    72 63 65 2c 20 79 6f 75 20 72 65 6d 61 69 6e 20  | orresponding.Source,.you.remain. | 
| 626e0 |  6f 62 6c 69 67 61 74 65 64 20 74 6f 20 65 6e 73    75 72 65 20 74 68 61 74 20 69 74 20 69 73 0a 20  | obligated.to.ensure.that.it.is.. | 
| 62700 |  20 20 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72    20 61 73 20 6c 6f 6e 67 20 61 73 20 6e 65 65 64  | ...available.for.as.long.as.need | 
| 62720 |  65 64 20 74 6f 20 73 61 74 69 73 66 79 20 74 68    65 73 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73  | ed.to.satisfy.these.requirements | 
| 62740 |  2e 0a 0a 20 20 20 20 65 29 20 43 6f 6e 76 65 79    20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65  | .......e).Convey.the.object.code | 
| 62760 |  20 75 73 69 6e 67 20 70 65 65 72 2d 74 6f 2d 70    65 65 72 20 74 72 61 6e 73 6d 69 73 73 69 6f 6e  | .using.peer-to-peer.transmission | 
| 62780 |  2c 20 70 72 6f 76 69 64 65 64 0a 20 20 20 20 79    6f 75 20 69 6e 66 6f 72 6d 20 6f 74 68 65 72 20  | ,.provided.....you.inform.other. | 
| 627a0 |  70 65 65 72 73 20 77 68 65 72 65 20 74 68 65 20    6f 62 6a 65 63 74 20 63 6f 64 65 20 61 6e 64 20  | peers.where.the.object.code.and. | 
| 627c0 |  43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 20 20    20 20 53 6f 75 72 63 65 20 6f 66 20 74 68 65 20  | Corresponding.....Source.of.the. | 
| 627e0 |  77 6f 72 6b 20 61 72 65 20 62 65 69 6e 67 20 6f    66 66 65 72 65 64 20 74 6f 20 74 68 65 20 67 65  | work.are.being.offered.to.the.ge | 
| 62800 |  6e 65 72 61 6c 20 70 75 62 6c 69 63 20 61 74 20    6e 6f 0a 20 20 20 20 63 68 61 72 67 65 20 75 6e  | neral.public.at.no.....charge.un | 
| 62820 |  64 65 72 20 73 75 62 73 65 63 74 69 6f 6e 20 36    64 2e 0a 0a 20 20 41 20 73 65 70 61 72 61 62 6c  | der.subsection.6d.....A.separabl | 
| 62840 |  65 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65    20 6f 62 6a 65 63 74 20 63 6f 64 65 2c 20 77 68  | e.portion.of.the.object.code,.wh | 
| 62860 |  6f 73 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20    69 73 20 65 78 63 6c 75 64 65 64 0a 66 72 6f 6d  | ose.source.code.is.excluded.from | 
| 62880 |  20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69    6e 67 20 53 6f 75 72 63 65 20 61 73 20 61 20 53  | .the.Corresponding.Source.as.a.S | 
| 628a0 |  79 73 74 65 6d 20 4c 69 62 72 61 72 79 2c 20 6e    65 65 64 20 6e 6f 74 20 62 65 0a 69 6e 63 6c 75  | ystem.Library,.need.not.be.inclu | 
| 628c0 |  64 65 64 20 69 6e 20 63 6f 6e 76 65 79 69 6e 67    20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65  | ded.in.conveying.the.object.code | 
| 628e0 |  20 77 6f 72 6b 2e 0a 0a 20 20 41 20 22 55 73 65    72 20 50 72 6f 64 75 63 74 22 20 69 73 20 65 69  | .work.....A."User.Product".is.ei | 
| 62900 |  74 68 65 72 20 28 31 29 20 61 20 22 63 6f 6e 73    75 6d 65 72 20 70 72 6f 64 75 63 74 22 2c 20 77  | ther.(1).a."consumer.product",.w | 
| 62920 |  68 69 63 68 20 6d 65 61 6e 73 20 61 6e 79 0a 74    61 6e 67 69 62 6c 65 20 70 65 72 73 6f 6e 61 6c  | hich.means.any.tangible.personal | 
| 62940 |  20 70 72 6f 70 65 72 74 79 20 77 68 69 63 68 20    69 73 20 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64  | .property.which.is.normally.used | 
| 62960 |  20 66 6f 72 20 70 65 72 73 6f 6e 61 6c 2c 20 66    61 6d 69 6c 79 2c 0a 6f 72 20 68 6f 75 73 65 68  | .for.personal,.family,.or.househ | 
| 62980 |  6f 6c 64 20 70 75 72 70 6f 73 65 73 2c 20 6f 72    20 28 32 29 20 61 6e 79 74 68 69 6e 67 20 64 65  | old.purposes,.or.(2).anything.de | 
| 629a0 |  73 69 67 6e 65 64 20 6f 72 20 73 6f 6c 64 20 66    6f 72 20 69 6e 63 6f 72 70 6f 72 61 74 69 6f 6e  | signed.or.sold.for.incorporation | 
| 629c0 |  0a 69 6e 74 6f 20 61 20 64 77 65 6c 6c 69 6e 67    2e 20 20 49 6e 20 64 65 74 65 72 6d 69 6e 69 6e  | .into.a.dwelling...In.determinin | 
| 629e0 |  67 20 77 68 65 74 68 65 72 20 61 20 70 72 6f 64    75 63 74 20 69 73 20 61 20 63 6f 6e 73 75 6d 65  | g.whether.a.product.is.a.consume | 
| 62a00 |  72 20 70 72 6f 64 75 63 74 2c 0a 64 6f 75 62 74    66 75 6c 20 63 61 73 65 73 20 73 68 61 6c 6c 20  | r.product,.doubtful.cases.shall. | 
| 62a20 |  62 65 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 66    61 76 6f 72 20 6f 66 20 63 6f 76 65 72 61 67 65  | be.resolved.in.favor.of.coverage | 
| 62a40 |  2e 20 20 46 6f 72 20 61 20 70 61 72 74 69 63 75    6c 61 72 0a 70 72 6f 64 75 63 74 20 72 65 63 65  | ...For.a.particular.product.rece | 
| 62a60 |  69 76 65 64 20 62 79 20 61 20 70 61 72 74 69 63    75 6c 61 72 20 75 73 65 72 2c 20 22 6e 6f 72 6d  | ived.by.a.particular.user,."norm | 
| 62a80 |  61 6c 6c 79 20 75 73 65 64 22 20 72 65 66 65 72    73 20 74 6f 20 61 0a 74 79 70 69 63 61 6c 20 6f  | ally.used".refers.to.a.typical.o | 
| 62aa0 |  72 20 63 6f 6d 6d 6f 6e 20 75 73 65 20 6f 66 20    74 68 61 74 20 63 6c 61 73 73 20 6f 66 20 70 72  | r.common.use.of.that.class.of.pr | 
| 62ac0 |  6f 64 75 63 74 2c 20 72 65 67 61 72 64 6c 65 73    73 20 6f 66 20 74 68 65 20 73 74 61 74 75 73 0a  | oduct,.regardless.of.the.status. | 
| 62ae0 |  6f 66 20 74 68 65 20 70 61 72 74 69 63 75 6c 61    72 20 75 73 65 72 20 6f 72 20 6f 66 20 74 68 65  | of.the.particular.user.or.of.the | 
| 62b00 |  20 77 61 79 20 69 6e 20 77 68 69 63 68 20 74 68    65 20 70 61 72 74 69 63 75 6c 61 72 20 75 73 65  | .way.in.which.the.particular.use | 
| 62b20 |  72 0a 61 63 74 75 61 6c 6c 79 20 75 73 65 73 2c    20 6f 72 20 65 78 70 65 63 74 73 20 6f 72 20 69  | r.actually.uses,.or.expects.or.i | 
| 62b40 |  73 20 65 78 70 65 63 74 65 64 20 74 6f 20 75 73    65 2c 20 74 68 65 20 70 72 6f 64 75 63 74 2e 20  | s.expected.to.use,.the.product.. | 
| 62b60 |  20 41 20 70 72 6f 64 75 63 74 0a 69 73 20 61 20    63 6f 6e 73 75 6d 65 72 20 70 72 6f 64 75 63 74  | .A.product.is.a.consumer.product | 
| 62b80 |  20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77    68 65 74 68 65 72 20 74 68 65 20 70 72 6f 64 75  | .regardless.of.whether.the.produ | 
| 62ba0 |  63 74 20 68 61 73 20 73 75 62 73 74 61 6e 74 69    61 6c 0a 63 6f 6d 6d 65 72 63 69 61 6c 2c 20 69  | ct.has.substantial.commercial,.i | 
| 62bc0 |  6e 64 75 73 74 72 69 61 6c 20 6f 72 20 6e 6f 6e    2d 63 6f 6e 73 75 6d 65 72 20 75 73 65 73 2c 20  | ndustrial.or.non-consumer.uses,. | 
| 62be0 |  75 6e 6c 65 73 73 20 73 75 63 68 20 75 73 65 73    20 72 65 70 72 65 73 65 6e 74 0a 74 68 65 20 6f  | unless.such.uses.represent.the.o | 
| 62c00 |  6e 6c 79 20 73 69 67 6e 69 66 69 63 61 6e 74 20    6d 6f 64 65 20 6f 66 20 75 73 65 20 6f 66 20 74  | nly.significant.mode.of.use.of.t | 
| 62c20 |  68 65 20 70 72 6f 64 75 63 74 2e 0a 0a 20 20 22    49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66  | he.product....."Installation.Inf | 
| 62c40 |  6f 72 6d 61 74 69 6f 6e 22 20 66 6f 72 20 61 20    55 73 65 72 20 50 72 6f 64 75 63 74 20 6d 65 61  | ormation".for.a.User.Product.mea | 
| 62c60 |  6e 73 20 61 6e 79 20 6d 65 74 68 6f 64 73 2c 0a    70 72 6f 63 65 64 75 72 65 73 2c 20 61 75 74 68  | ns.any.methods,.procedures,.auth | 
| 62c80 |  6f 72 69 7a 61 74 69 6f 6e 20 6b 65 79 73 2c 20    6f 72 20 6f 74 68 65 72 20 69 6e 66 6f 72 6d 61  | orization.keys,.or.other.informa | 
| 62ca0 |  74 69 6f 6e 20 72 65 71 75 69 72 65 64 20 74 6f    20 69 6e 73 74 61 6c 6c 0a 61 6e 64 20 65 78 65  | tion.required.to.install.and.exe | 
| 62cc0 |  63 75 74 65 20 6d 6f 64 69 66 69 65 64 20 76 65    72 73 69 6f 6e 73 20 6f 66 20 61 20 63 6f 76 65  | cute.modified.versions.of.a.cove | 
| 62ce0 |  72 65 64 20 77 6f 72 6b 20 69 6e 20 74 68 61 74    20 55 73 65 72 20 50 72 6f 64 75 63 74 20 66 72  | red.work.in.that.User.Product.fr | 
| 62d00 |  6f 6d 0a 61 20 6d 6f 64 69 66 69 65 64 20 76 65    72 73 69 6f 6e 20 6f 66 20 69 74 73 20 43 6f 72  | om.a.modified.version.of.its.Cor | 
| 62d20 |  72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63    65 2e 20 20 54 68 65 20 69 6e 66 6f 72 6d 61 74  | responding.Source...The.informat | 
| 62d40 |  69 6f 6e 20 6d 75 73 74 0a 73 75 66 66 69 63 65    20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20  | ion.must.suffice.to.ensure.that. | 
| 62d60 |  74 68 65 20 63 6f 6e 74 69 6e 75 65 64 20 66 75    6e 63 74 69 6f 6e 69 6e 67 20 6f 66 20 74 68 65  | the.continued.functioning.of.the | 
| 62d80 |  20 6d 6f 64 69 66 69 65 64 20 6f 62 6a 65 63 74    0a 63 6f 64 65 20 69 73 20 69 6e 20 6e 6f 20 63  | .modified.object.code.is.in.no.c | 
| 62da0 |  61 73 65 20 70 72 65 76 65 6e 74 65 64 20 6f 72    20 69 6e 74 65 72 66 65 72 65 64 20 77 69 74 68  | ase.prevented.or.interfered.with | 
| 62dc0 |  20 73 6f 6c 65 6c 79 20 62 65 63 61 75 73 65 0a    6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 68 61 73  | .solely.because.modification.has | 
| 62de0 |  20 62 65 65 6e 20 6d 61 64 65 2e 0a 0a 20 20 49    66 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 6e 20  | .been.made.....If.you.convey.an. | 
| 62e00 |  6f 62 6a 65 63 74 20 63 6f 64 65 20 77 6f 72 6b    20 75 6e 64 65 72 20 74 68 69 73 20 73 65 63 74  | object.code.work.under.this.sect | 
| 62e20 |  69 6f 6e 20 69 6e 2c 20 6f 72 20 77 69 74 68 2c    20 6f 72 0a 73 70 65 63 69 66 69 63 61 6c 6c 79  | ion.in,.or.with,.or.specifically | 
| 62e40 |  20 66 6f 72 20 75 73 65 20 69 6e 2c 20 61 20 55    73 65 72 20 50 72 6f 64 75 63 74 2c 20 61 6e 64  | .for.use.in,.a.User.Product,.and | 
| 62e60 |  20 74 68 65 20 63 6f 6e 76 65 79 69 6e 67 20 6f    63 63 75 72 73 20 61 73 0a 70 61 72 74 20 6f 66  | .the.conveying.occurs.as.part.of | 
| 62e80 |  20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69    6e 20 77 68 69 63 68 20 74 68 65 20 72 69 67 68  | .a.transaction.in.which.the.righ | 
| 62ea0 |  74 20 6f 66 20 70 6f 73 73 65 73 73 69 6f 6e 20    61 6e 64 20 75 73 65 20 6f 66 20 74 68 65 0a 55  | t.of.possession.and.use.of.the.U | 
| 62ec0 |  73 65 72 20 50 72 6f 64 75 63 74 20 69 73 20 74    72 61 6e 73 66 65 72 72 65 64 20 74 6f 20 74 68  | ser.Product.is.transferred.to.th | 
| 62ee0 |  65 20 72 65 63 69 70 69 65 6e 74 20 69 6e 20 70    65 72 70 65 74 75 69 74 79 20 6f 72 20 66 6f 72  | e.recipient.in.perpetuity.or.for | 
| 62f00 |  20 61 0a 66 69 78 65 64 20 74 65 72 6d 20 28 72    65 67 61 72 64 6c 65 73 73 20 6f 66 20 68 6f 77  | .a.fixed.term.(regardless.of.how | 
| 62f20 |  20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e    20 69 73 20 63 68 61 72 61 63 74 65 72 69 7a 65  | .the.transaction.is.characterize | 
| 62f40 |  64 29 2c 20 74 68 65 0a 43 6f 72 72 65 73 70 6f    6e 64 69 6e 67 20 53 6f 75 72 63 65 20 63 6f 6e  | d),.the.Corresponding.Source.con | 
| 62f60 |  76 65 79 65 64 20 75 6e 64 65 72 20 74 68 69 73    20 73 65 63 74 69 6f 6e 20 6d 75 73 74 20 62 65  | veyed.under.this.section.must.be | 
| 62f80 |  20 61 63 63 6f 6d 70 61 6e 69 65 64 0a 62 79 20    74 68 65 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e  | .accompanied.by.the.Installation | 
| 62fa0 |  20 49 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 20 42    75 74 20 74 68 69 73 20 72 65 71 75 69 72 65 6d  | .Information...But.this.requirem | 
| 62fc0 |  65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 61 70 70    6c 79 0a 69 66 20 6e 65 69 74 68 65 72 20 79 6f  | ent.does.not.apply.if.neither.yo | 
| 62fe0 |  75 20 6e 6f 72 20 61 6e 79 20 74 68 69 72 64 20    70 61 72 74 79 20 72 65 74 61 69 6e 73 20 74 68  | u.nor.any.third.party.retains.th | 
| 63000 |  65 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e 73    74 61 6c 6c 0a 6d 6f 64 69 66 69 65 64 20 6f 62  | e.ability.to.install.modified.ob | 
| 63020 |  6a 65 63 74 20 63 6f 64 65 20 6f 6e 20 74 68 65    20 55 73 65 72 20 50 72 6f 64 75 63 74 20 28 66  | ject.code.on.the.User.Product.(f | 
| 63040 |  6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20    77 6f 72 6b 20 68 61 73 0a 62 65 65 6e 20 69 6e  | or.example,.the.work.has.been.in | 
| 63060 |  73 74 61 6c 6c 65 64 20 69 6e 20 52 4f 4d 29 2e    0a 0a 20 20 54 68 65 20 72 65 71 75 69 72 65 6d  | stalled.in.ROM).....The.requirem | 
| 63080 |  65 6e 74 20 74 6f 20 70 72 6f 76 69 64 65 20 49    6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f  | ent.to.provide.Installation.Info | 
| 630a0 |  72 6d 61 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74    20 69 6e 63 6c 75 64 65 20 61 0a 72 65 71 75 69  | rmation.does.not.include.a.requi | 
| 630c0 |  72 65 6d 65 6e 74 20 74 6f 20 63 6f 6e 74 69 6e    75 65 20 74 6f 20 70 72 6f 76 69 64 65 20 73 75  | rement.to.continue.to.provide.su | 
| 630e0 |  70 70 6f 72 74 20 73 65 72 76 69 63 65 2c 20 77    61 72 72 61 6e 74 79 2c 20 6f 72 20 75 70 64 61  | pport.service,.warranty,.or.upda | 
| 63100 |  74 65 73 0a 66 6f 72 20 61 20 77 6f 72 6b 20 74    68 61 74 20 68 61 73 20 62 65 65 6e 20 6d 6f 64  | tes.for.a.work.that.has.been.mod | 
| 63120 |  69 66 69 65 64 20 6f 72 20 69 6e 73 74 61 6c 6c    65 64 20 62 79 20 74 68 65 20 72 65 63 69 70 69  | ified.or.installed.by.the.recipi | 
| 63140 |  65 6e 74 2c 20 6f 72 20 66 6f 72 0a 74 68 65 20    55 73 65 72 20 50 72 6f 64 75 63 74 20 69 6e 20  | ent,.or.for.the.User.Product.in. | 
| 63160 |  77 68 69 63 68 20 69 74 20 68 61 73 20 62 65 65    6e 20 6d 6f 64 69 66 69 65 64 20 6f 72 20 69 6e  | which.it.has.been.modified.or.in | 
| 63180 |  73 74 61 6c 6c 65 64 2e 20 20 41 63 63 65 73 73    20 74 6f 20 61 0a 6e 65 74 77 6f 72 6b 20 6d 61  | stalled...Access.to.a.network.ma | 
| 631a0 |  79 20 62 65 20 64 65 6e 69 65 64 20 77 68 65 6e    20 74 68 65 20 6d 6f 64 69 66 69 63 61 74 69 6f  | y.be.denied.when.the.modificatio | 
| 631c0 |  6e 20 69 74 73 65 6c 66 20 6d 61 74 65 72 69 61    6c 6c 79 20 61 6e 64 0a 61 64 76 65 72 73 65 6c  | n.itself.materially.and.adversel | 
| 631e0 |  79 20 61 66 66 65 63 74 73 20 74 68 65 20 6f 70    65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e  | y.affects.the.operation.of.the.n | 
| 63200 |  65 74 77 6f 72 6b 20 6f 72 20 76 69 6f 6c 61 74    65 73 20 74 68 65 20 72 75 6c 65 73 20 61 6e 64  | etwork.or.violates.the.rules.and | 
| 63220 |  0a 70 72 6f 74 6f 63 6f 6c 73 20 66 6f 72 20 63    6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 20 61 63 72  | .protocols.for.communication.acr | 
| 63240 |  6f 73 73 20 74 68 65 20 6e 65 74 77 6f 72 6b 2e    0a 0a 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e  | oss.the.network.....Correspondin | 
| 63260 |  67 20 53 6f 75 72 63 65 20 63 6f 6e 76 65 79 65    64 2c 20 61 6e 64 20 49 6e 73 74 61 6c 6c 61 74  | g.Source.conveyed,.and.Installat | 
| 63280 |  69 6f 6e 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20    70 72 6f 76 69 64 65 64 2c 0a 69 6e 20 61 63 63  | ion.Information.provided,.in.acc | 
| 632a0 |  6f 72 64 20 77 69 74 68 20 74 68 69 73 20 73 65    63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 69 6e  | ord.with.this.section.must.be.in | 
| 632c0 |  20 61 20 66 6f 72 6d 61 74 20 74 68 61 74 20 69    73 20 70 75 62 6c 69 63 6c 79 0a 64 6f 63 75 6d  | .a.format.that.is.publicly.docum | 
| 632e0 |  65 6e 74 65 64 20 28 61 6e 64 20 77 69 74 68 20    61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  | ented.(and.with.an.implementatio | 
| 63300 |  6e 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74    68 65 20 70 75 62 6c 69 63 20 69 6e 0a 73 6f 75  | n.available.to.the.public.in.sou | 
| 63320 |  72 63 65 20 63 6f 64 65 20 66 6f 72 6d 29 2c 20    61 6e 64 20 6d 75 73 74 20 72 65 71 75 69 72 65  | rce.code.form),.and.must.require | 
| 63340 |  20 6e 6f 20 73 70 65 63 69 61 6c 20 70 61 73 73    77 6f 72 64 20 6f 72 20 6b 65 79 20 66 6f 72 0a  | .no.special.password.or.key.for. | 
| 63360 |  75 6e 70 61 63 6b 69 6e 67 2c 20 72 65 61 64 69    6e 67 20 6f 72 20 63 6f 70 79 69 6e 67 2e 0a 0a  | unpacking,.reading.or.copying... | 
| 63380 |  20 20 37 2e 20 41 64 64 69 74 69 6f 6e 61 6c 20    54 65 72 6d 73 2e 0a 0a 20 20 22 41 64 64 69 74  | ..7..Additional.Terms....."Addit | 
| 633a0 |  69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e    73 22 20 61 72 65 20 74 65 72 6d 73 20 74 68 61  | ional.permissions".are.terms.tha | 
| 633c0 |  74 20 73 75 70 70 6c 65 6d 65 6e 74 20 74 68 65    20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 0a 4c  | t.supplement.the.terms.of.this.L | 
| 633e0 |  69 63 65 6e 73 65 20 62 79 20 6d 61 6b 69 6e 67    20 65 78 63 65 70 74 69 6f 6e 73 20 66 72 6f 6d  | icense.by.making.exceptions.from | 
| 63400 |  20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20    69 74 73 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a  | .one.or.more.of.its.conditions.. | 
| 63420 |  41 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69    73 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20  | Additional.permissions.that.are. | 
| 63440 |  61 70 70 6c 69 63 61 62 6c 65 20 74 6f 20 74 68    65 20 65 6e 74 69 72 65 20 50 72 6f 67 72 61 6d  | applicable.to.the.entire.Program | 
| 63460 |  20 73 68 61 6c 6c 0a 62 65 20 74 72 65 61 74 65    64 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79  | .shall.be.treated.as.though.they | 
| 63480 |  20 77 65 72 65 20 69 6e 63 6c 75 64 65 64 20 69    6e 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20  | .were.included.in.this.License,. | 
| 634a0 |  74 6f 20 74 68 65 20 65 78 74 65 6e 74 0a 74 68    61 74 20 74 68 65 79 20 61 72 65 20 76 61 6c 69  | to.the.extent.that.they.are.vali | 
| 634c0 |  64 20 75 6e 64 65 72 20 61 70 70 6c 69 63 61 62    6c 65 20 6c 61 77 2e 20 20 49 66 20 61 64 64 69  | d.under.applicable.law...If.addi | 
| 634e0 |  74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f    6e 73 0a 61 70 70 6c 79 20 6f 6e 6c 79 20 74 6f  | tional.permissions.apply.only.to | 
| 63500 |  20 70 61 72 74 20 6f 66 20 74 68 65 20 50 72 6f    67 72 61 6d 2c 20 74 68 61 74 20 70 61 72 74 20  | .part.of.the.Program,.that.part. | 
| 63520 |  6d 61 79 20 62 65 20 75 73 65 64 20 73 65 70 61    72 61 74 65 6c 79 0a 75 6e 64 65 72 20 74 68 6f  | may.be.used.separately.under.tho | 
| 63540 |  73 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 2c 20    62 75 74 20 74 68 65 20 65 6e 74 69 72 65 20 50  | se.permissions,.but.the.entire.P | 
| 63560 |  72 6f 67 72 61 6d 20 72 65 6d 61 69 6e 73 20 67    6f 76 65 72 6e 65 64 20 62 79 0a 74 68 69 73 20  | rogram.remains.governed.by.this. | 
| 63580 |  4c 69 63 65 6e 73 65 20 77 69 74 68 6f 75 74 20    72 65 67 61 72 64 20 74 6f 20 74 68 65 20 61 64  | License.without.regard.to.the.ad | 
| 635a0 |  64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73    69 6f 6e 73 2e 0a 0a 20 20 57 68 65 6e 20 79 6f  | ditional.permissions.....When.yo | 
| 635c0 |  75 20 63 6f 6e 76 65 79 20 61 20 63 6f 70 79 20    6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72  | u.convey.a.copy.of.a.covered.wor | 
| 635e0 |  6b 2c 20 79 6f 75 20 6d 61 79 20 61 74 20 79 6f    75 72 20 6f 70 74 69 6f 6e 0a 72 65 6d 6f 76 65  | k,.you.may.at.your.option.remove | 
| 63600 |  20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20    70 65 72 6d 69 73 73 69 6f 6e 73 20 66 72 6f 6d  | .any.additional.permissions.from | 
| 63620 |  20 74 68 61 74 20 63 6f 70 79 2c 20 6f 72 20 66    72 6f 6d 20 61 6e 79 20 70 61 72 74 20 6f 66 0a  | .that.copy,.or.from.any.part.of. | 
| 63640 |  69 74 2e 20 20 28 41 64 64 69 74 69 6f 6e 61 6c    20 70 65 72 6d 69 73 73 69 6f 6e 73 20 6d 61 79  | it...(Additional.permissions.may | 
| 63660 |  20 62 65 20 77 72 69 74 74 65 6e 20 74 6f 20 72    65 71 75 69 72 65 20 74 68 65 69 72 20 6f 77 6e  | .be.written.to.require.their.own | 
| 63680 |  0a 72 65 6d 6f 76 61 6c 20 69 6e 20 63 65 72 74    61 69 6e 20 63 61 73 65 73 20 77 68 65 6e 20 79  | .removal.in.certain.cases.when.y | 
| 636a0 |  6f 75 20 6d 6f 64 69 66 79 20 74 68 65 20 77 6f    72 6b 2e 29 20 20 59 6f 75 20 6d 61 79 20 70 6c  | ou.modify.the.work.)..You.may.pl | 
| 636c0 |  61 63 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 70    65 72 6d 69 73 73 69 6f 6e 73 20 6f 6e 20 6d 61  | ace.additional.permissions.on.ma | 
| 636e0 |  74 65 72 69 61 6c 2c 20 61 64 64 65 64 20 62 79    20 79 6f 75 20 74 6f 20 61 20 63 6f 76 65 72 65  | terial,.added.by.you.to.a.covere | 
| 63700 |  64 20 77 6f 72 6b 2c 0a 66 6f 72 20 77 68 69 63    68 20 79 6f 75 20 68 61 76 65 20 6f 72 20 63 61  | d.work,.for.which.you.have.or.ca | 
| 63720 |  6e 20 67 69 76 65 20 61 70 70 72 6f 70 72 69 61    74 65 20 63 6f 70 79 72 69 67 68 74 20 70 65 72  | n.give.appropriate.copyright.per | 
| 63740 |  6d 69 73 73 69 6f 6e 2e 0a 0a 20 20 4e 6f 74 77    69 74 68 73 74 61 6e 64 69 6e 67 20 61 6e 79 20  | mission.....Notwithstanding.any. | 
| 63760 |  6f 74 68 65 72 20 70 72 6f 76 69 73 69 6f 6e 20    6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c  | other.provision.of.this.License, | 
| 63780 |  20 66 6f 72 20 6d 61 74 65 72 69 61 6c 20 79 6f    75 0a 61 64 64 20 74 6f 20 61 20 63 6f 76 65 72  | .for.material.you.add.to.a.cover | 
| 637a0 |  65 64 20 77 6f 72 6b 2c 20 79 6f 75 20 6d 61 79    20 28 69 66 20 61 75 74 68 6f 72 69 7a 65 64 20  | ed.work,.you.may.(if.authorized. | 
| 637c0 |  62 79 20 74 68 65 20 63 6f 70 79 72 69 67 68 74    20 68 6f 6c 64 65 72 73 20 6f 66 0a 74 68 61 74  | by.the.copyright.holders.of.that | 
| 637e0 |  20 6d 61 74 65 72 69 61 6c 29 20 73 75 70 70 6c    65 6d 65 6e 74 20 74 68 65 20 74 65 72 6d 73 20  | .material).supplement.the.terms. | 
| 63800 |  6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20    77 69 74 68 20 74 65 72 6d 73 3a 0a 0a 20 20 20  | of.this.License.with.terms:..... | 
| 63820 |  20 61 29 20 44 69 73 63 6c 61 69 6d 69 6e 67 20    77 61 72 72 61 6e 74 79 20 6f 72 20 6c 69 6d 69  | .a).Disclaiming.warranty.or.limi | 
| 63840 |  74 69 6e 67 20 6c 69 61 62 69 6c 69 74 79 20 64    69 66 66 65 72 65 6e 74 6c 79 20 66 72 6f 6d 20  | ting.liability.differently.from. | 
| 63860 |  74 68 65 0a 20 20 20 20 74 65 72 6d 73 20 6f 66    20 73 65 63 74 69 6f 6e 73 20 31 35 20 61 6e 64  | the.....terms.of.sections.15.and | 
| 63880 |  20 31 36 20 6f 66 20 74 68 69 73 20 4c 69 63 65    6e 73 65 3b 20 6f 72 0a 0a 20 20 20 20 62 29 20  | .16.of.this.License;.or......b). | 
| 638a0 |  52 65 71 75 69 72 69 6e 67 20 70 72 65 73 65 72    76 61 74 69 6f 6e 20 6f 66 20 73 70 65 63 69 66  | Requiring.preservation.of.specif | 
| 638c0 |  69 65 64 20 72 65 61 73 6f 6e 61 62 6c 65 20 6c    65 67 61 6c 20 6e 6f 74 69 63 65 73 20 6f 72 0a  | ied.reasonable.legal.notices.or. | 
| 638e0 |  20 20 20 20 61 75 74 68 6f 72 20 61 74 74 72 69    62 75 74 69 6f 6e 73 20 69 6e 20 74 68 61 74 20  | ....author.attributions.in.that. | 
| 63900 |  6d 61 74 65 72 69 61 6c 20 6f 72 20 69 6e 20 74    68 65 20 41 70 70 72 6f 70 72 69 61 74 65 20 4c  | material.or.in.the.Appropriate.L | 
| 63920 |  65 67 61 6c 0a 20 20 20 20 4e 6f 74 69 63 65 73    20 64 69 73 70 6c 61 79 65 64 20 62 79 20 77 6f  | egal.....Notices.displayed.by.wo | 
| 63940 |  72 6b 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69    74 3b 20 6f 72 0a 0a 20 20 20 20 63 29 20 50 72  | rks.containing.it;.or......c).Pr | 
| 63960 |  6f 68 69 62 69 74 69 6e 67 20 6d 69 73 72 65 70    72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  | ohibiting.misrepresentation.of.t | 
| 63980 |  68 65 20 6f 72 69 67 69 6e 20 6f 66 20 74 68 61    74 20 6d 61 74 65 72 69 61 6c 2c 20 6f 72 0a 20  | he.origin.of.that.material,.or.. | 
| 639a0 |  20 20 20 72 65 71 75 69 72 69 6e 67 20 74 68 61    74 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69  | ...requiring.that.modified.versi | 
| 639c0 |  6f 6e 73 20 6f 66 20 73 75 63 68 20 6d 61 74 65    72 69 61 6c 20 62 65 20 6d 61 72 6b 65 64 20 69  | ons.of.such.material.be.marked.i | 
| 639e0 |  6e 0a 20 20 20 20 72 65 61 73 6f 6e 61 62 6c 65    20 77 61 79 73 20 61 73 20 64 69 66 66 65 72 65  | n.....reasonable.ways.as.differe | 
| 63a00 |  6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67    69 6e 61 6c 20 76 65 72 73 69 6f 6e 3b 20 6f 72  | nt.from.the.original.version;.or | 
| 63a20 |  0a 0a 20 20 20 20 64 29 20 4c 69 6d 69 74 69 6e    67 20 74 68 65 20 75 73 65 20 66 6f 72 20 70 75  | ......d).Limiting.the.use.for.pu | 
| 63a40 |  62 6c 69 63 69 74 79 20 70 75 72 70 6f 73 65 73    20 6f 66 20 6e 61 6d 65 73 20 6f 66 20 6c 69 63  | blicity.purposes.of.names.of.lic | 
| 63a60 |  65 6e 73 6f 72 73 20 6f 72 0a 20 20 20 20 61 75    74 68 6f 72 73 20 6f 66 20 74 68 65 20 6d 61 74  | ensors.or.....authors.of.the.mat | 
| 63a80 |  65 72 69 61 6c 3b 20 6f 72 0a 0a 20 20 20 20 65    29 20 44 65 63 6c 69 6e 69 6e 67 20 74 6f 20 67  | erial;.or......e).Declining.to.g | 
| 63aa0 |  72 61 6e 74 20 72 69 67 68 74 73 20 75 6e 64 65    72 20 74 72 61 64 65 6d 61 72 6b 20 6c 61 77 20  | rant.rights.under.trademark.law. | 
| 63ac0 |  66 6f 72 20 75 73 65 20 6f 66 20 73 6f 6d 65 0a    20 20 20 20 74 72 61 64 65 20 6e 61 6d 65 73 2c  | for.use.of.some.....trade.names, | 
| 63ae0 |  20 74 72 61 64 65 6d 61 72 6b 73 2c 20 6f 72 20    73 65 72 76 69 63 65 20 6d 61 72 6b 73 3b 20 6f  | .trademarks,.or.service.marks;.o | 
| 63b00 |  72 0a 0a 20 20 20 20 66 29 20 52 65 71 75 69 72    69 6e 67 20 69 6e 64 65 6d 6e 69 66 69 63 61 74  | r......f).Requiring.indemnificat | 
| 63b20 |  69 6f 6e 20 6f 66 20 6c 69 63 65 6e 73 6f 72 73    20 61 6e 64 20 61 75 74 68 6f 72 73 20 6f 66 20  | ion.of.licensors.and.authors.of. | 
| 63b40 |  74 68 61 74 0a 20 20 20 20 6d 61 74 65 72 69 61    6c 20 62 79 20 61 6e 79 6f 6e 65 20 77 68 6f 20  | that.....material.by.anyone.who. | 
| 63b60 |  63 6f 6e 76 65 79 73 20 74 68 65 20 6d 61 74 65    72 69 61 6c 20 28 6f 72 20 6d 6f 64 69 66 69 65  | conveys.the.material.(or.modifie | 
| 63b80 |  64 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 20 20    20 20 69 74 29 20 77 69 74 68 20 63 6f 6e 74 72  | d.versions.of.....it).with.contr | 
| 63ba0 |  61 63 74 75 61 6c 20 61 73 73 75 6d 70 74 69 6f    6e 73 20 6f 66 20 6c 69 61 62 69 6c 69 74 79 20  | actual.assumptions.of.liability. | 
| 63bc0 |  74 6f 20 74 68 65 20 72 65 63 69 70 69 65 6e 74    2c 20 66 6f 72 0a 20 20 20 20 61 6e 79 20 6c 69  | to.the.recipient,.for.....any.li | 
| 63be0 |  61 62 69 6c 69 74 79 20 74 68 61 74 20 74 68 65    73 65 20 63 6f 6e 74 72 61 63 74 75 61 6c 20 61  | ability.that.these.contractual.a | 
| 63c00 |  73 73 75 6d 70 74 69 6f 6e 73 20 64 69 72 65 63    74 6c 79 20 69 6d 70 6f 73 65 20 6f 6e 0a 20 20  | ssumptions.directly.impose.on... | 
| 63c20 |  20 20 74 68 6f 73 65 20 6c 69 63 65 6e 73 6f 72    73 20 61 6e 64 20 61 75 74 68 6f 72 73 2e 0a 0a  | ..those.licensors.and.authors... | 
| 63c40 |  20 20 41 6c 6c 20 6f 74 68 65 72 20 6e 6f 6e 2d    70 65 72 6d 69 73 73 69 76 65 20 61 64 64 69 74  | ..All.other.non-permissive.addit | 
| 63c60 |  69 6f 6e 61 6c 20 74 65 72 6d 73 20 61 72 65 20    63 6f 6e 73 69 64 65 72 65 64 20 22 66 75 72 74  | ional.terms.are.considered."furt | 
| 63c80 |  68 65 72 0a 72 65 73 74 72 69 63 74 69 6f 6e 73    22 20 77 69 74 68 69 6e 20 74 68 65 20 6d 65 61  | her.restrictions".within.the.mea | 
| 63ca0 |  6e 69 6e 67 20 6f 66 20 73 65 63 74 69 6f 6e 20    31 30 2e 20 20 49 66 20 74 68 65 20 50 72 6f 67  | ning.of.section.10...If.the.Prog | 
| 63cc0 |  72 61 6d 20 61 73 20 79 6f 75 0a 72 65 63 65 69    76 65 64 20 69 74 2c 20 6f 72 20 61 6e 79 20 70  | ram.as.you.received.it,.or.any.p | 
| 63ce0 |  61 72 74 20 6f 66 20 69 74 2c 20 63 6f 6e 74 61    69 6e 73 20 61 20 6e 6f 74 69 63 65 20 73 74 61  | art.of.it,.contains.a.notice.sta | 
| 63d00 |  74 69 6e 67 20 74 68 61 74 20 69 74 20 69 73 0a    67 6f 76 65 72 6e 65 64 20 62 79 20 74 68 69 73  | ting.that.it.is.governed.by.this | 
| 63d20 |  20 4c 69 63 65 6e 73 65 20 61 6c 6f 6e 67 20 77    69 74 68 20 61 20 74 65 72 6d 20 74 68 61 74 20  | .License.along.with.a.term.that. | 
| 63d40 |  69 73 20 61 20 66 75 72 74 68 65 72 0a 72 65 73    74 72 69 63 74 69 6f 6e 2c 20 79 6f 75 20 6d 61  | is.a.further.restriction,.you.ma | 
| 63d60 |  79 20 72 65 6d 6f 76 65 20 74 68 61 74 20 74 65    72 6d 2e 20 20 49 66 20 61 20 6c 69 63 65 6e 73  | y.remove.that.term...If.a.licens | 
| 63d80 |  65 20 64 6f 63 75 6d 65 6e 74 20 63 6f 6e 74 61    69 6e 73 0a 61 20 66 75 72 74 68 65 72 20 72 65  | e.document.contains.a.further.re | 
| 63da0 |  73 74 72 69 63 74 69 6f 6e 20 62 75 74 20 70 65    72 6d 69 74 73 20 72 65 6c 69 63 65 6e 73 69 6e  | striction.but.permits.relicensin | 
| 63dc0 |  67 20 6f 72 20 63 6f 6e 76 65 79 69 6e 67 20 75    6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73  | g.or.conveying.under.this.Licens | 
| 63de0 |  65 2c 20 79 6f 75 20 6d 61 79 20 61 64 64 20 74    6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b  | e,.you.may.add.to.a.covered.work | 
| 63e00 |  20 6d 61 74 65 72 69 61 6c 20 67 6f 76 65 72 6e    65 64 20 62 79 20 74 68 65 20 74 65 72 6d 73 0a  | .material.governed.by.the.terms. | 
| 63e20 |  6f 66 20 74 68 61 74 20 6c 69 63 65 6e 73 65 20    64 6f 63 75 6d 65 6e 74 2c 20 70 72 6f 76 69 64  | of.that.license.document,.provid | 
| 63e40 |  65 64 20 74 68 61 74 20 74 68 65 20 66 75 72 74    68 65 72 20 72 65 73 74 72 69 63 74 69 6f 6e 20  | ed.that.the.further.restriction. | 
| 63e60 |  64 6f 65 73 0a 6e 6f 74 20 73 75 72 76 69 76 65    20 73 75 63 68 20 72 65 6c 69 63 65 6e 73 69 6e  | does.not.survive.such.relicensin | 
| 63e80 |  67 20 6f 72 20 63 6f 6e 76 65 79 69 6e 67 2e 0a    0a 20 20 49 66 20 79 6f 75 20 61 64 64 20 74 65  | g.or.conveying.....If.you.add.te | 
| 63ea0 |  72 6d 73 20 74 6f 20 61 20 63 6f 76 65 72 65 64    20 77 6f 72 6b 20 69 6e 20 61 63 63 6f 72 64 20  | rms.to.a.covered.work.in.accord. | 
| 63ec0 |  77 69 74 68 20 74 68 69 73 20 73 65 63 74 69 6f    6e 2c 20 79 6f 75 0a 6d 75 73 74 20 70 6c 61 63  | with.this.section,.you.must.plac | 
| 63ee0 |  65 2c 20 69 6e 20 74 68 65 20 72 65 6c 65 76 61    6e 74 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2c  | e,.in.the.relevant.source.files, | 
| 63f00 |  20 61 20 73 74 61 74 65 6d 65 6e 74 20 6f 66 20    74 68 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74  | .a.statement.of.the.additional.t | 
| 63f20 |  65 72 6d 73 20 74 68 61 74 20 61 70 70 6c 79 20    74 6f 20 74 68 6f 73 65 20 66 69 6c 65 73 2c 20  | erms.that.apply.to.those.files,. | 
| 63f40 |  6f 72 20 61 20 6e 6f 74 69 63 65 20 69 6e 64 69    63 61 74 69 6e 67 0a 77 68 65 72 65 20 74 6f 20  | or.a.notice.indicating.where.to. | 
| 63f60 |  66 69 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61    62 6c 65 20 74 65 72 6d 73 2e 0a 0a 20 20 41 64  | find.the.applicable.terms.....Ad | 
| 63f80 |  64 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 2c 20    70 65 72 6d 69 73 73 69 76 65 20 6f 72 20 6e 6f  | ditional.terms,.permissive.or.no | 
| 63fa0 |  6e 2d 70 65 72 6d 69 73 73 69 76 65 2c 20 6d 61    79 20 62 65 20 73 74 61 74 65 64 20 69 6e 20 74  | n-permissive,.may.be.stated.in.t | 
| 63fc0 |  68 65 0a 66 6f 72 6d 20 6f 66 20 61 20 73 65 70    61 72 61 74 65 6c 79 20 77 72 69 74 74 65 6e 20  | he.form.of.a.separately.written. | 
| 63fe0 |  6c 69 63 65 6e 73 65 2c 20 6f 72 20 73 74 61 74    65 64 20 61 73 20 65 78 63 65 70 74 69 6f 6e 73  | license,.or.stated.as.exceptions | 
| 64000 |  3b 0a 74 68 65 20 61 62 6f 76 65 20 72 65 71 75    69 72 65 6d 65 6e 74 73 20 61 70 70 6c 79 20 65  | ;.the.above.requirements.apply.e | 
| 64020 |  69 74 68 65 72 20 77 61 79 2e 0a 0a 20 20 38 2e    20 54 65 72 6d 69 6e 61 74 69 6f 6e 2e 0a 0a 20  | ither.way.....8..Termination.... | 
| 64040 |  20 59 6f 75 20 6d 61 79 20 6e 6f 74 20 70 72 6f    70 61 67 61 74 65 20 6f 72 20 6d 6f 64 69 66 79  | .You.may.not.propagate.or.modify | 
| 64060 |  20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20    65 78 63 65 70 74 20 61 73 20 65 78 70 72 65 73  | .a.covered.work.except.as.expres | 
| 64080 |  73 6c 79 0a 70 72 6f 76 69 64 65 64 20 75 6e 64    65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e  | sly.provided.under.this.License. | 
| 640a0 |  20 20 41 6e 79 20 61 74 74 65 6d 70 74 20 6f 74    68 65 72 77 69 73 65 20 74 6f 20 70 72 6f 70 61  | ..Any.attempt.otherwise.to.propa | 
| 640c0 |  67 61 74 65 20 6f 72 0a 6d 6f 64 69 66 79 20 69    74 20 69 73 20 76 6f 69 64 2c 20 61 6e 64 20 77  | gate.or.modify.it.is.void,.and.w | 
| 640e0 |  69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c    79 20 74 65 72 6d 69 6e 61 74 65 20 79 6f 75 72  | ill.automatically.terminate.your | 
| 64100 |  20 72 69 67 68 74 73 20 75 6e 64 65 72 0a 74 68    69 73 20 4c 69 63 65 6e 73 65 20 28 69 6e 63 6c  | .rights.under.this.License.(incl | 
| 64120 |  75 64 69 6e 67 20 61 6e 79 20 70 61 74 65 6e 74    20 6c 69 63 65 6e 73 65 73 20 67 72 61 6e 74 65  | uding.any.patent.licenses.grante | 
| 64140 |  64 20 75 6e 64 65 72 20 74 68 65 20 74 68 69 72    64 0a 70 61 72 61 67 72 61 70 68 20 6f 66 20 73  | d.under.the.third.paragraph.of.s | 
| 64160 |  65 63 74 69 6f 6e 20 31 31 29 2e 0a 0a 20 20 48    6f 77 65 76 65 72 2c 20 69 66 20 79 6f 75 20 63  | ection.11).....However,.if.you.c | 
| 64180 |  65 61 73 65 20 61 6c 6c 20 76 69 6f 6c 61 74 69    6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e  | ease.all.violation.of.this.Licen | 
| 641a0 |  73 65 2c 20 74 68 65 6e 20 79 6f 75 72 0a 6c 69    63 65 6e 73 65 20 66 72 6f 6d 20 61 20 70 61 72  | se,.then.your.license.from.a.par | 
| 641c0 |  74 69 63 75 6c 61 72 20 63 6f 70 79 72 69 67 68    74 20 68 6f 6c 64 65 72 20 69 73 20 72 65 69 6e  | ticular.copyright.holder.is.rein | 
| 641e0 |  73 74 61 74 65 64 20 28 61 29 0a 70 72 6f 76 69    73 69 6f 6e 61 6c 6c 79 2c 20 75 6e 6c 65 73 73  | stated.(a).provisionally,.unless | 
| 64200 |  20 61 6e 64 20 75 6e 74 69 6c 20 74 68 65 20 63    6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20  | .and.until.the.copyright.holder. | 
| 64220 |  65 78 70 6c 69 63 69 74 6c 79 20 61 6e 64 0a 66    69 6e 61 6c 6c 79 20 74 65 72 6d 69 6e 61 74 65  | explicitly.and.finally.terminate | 
| 64240 |  73 20 79 6f 75 72 20 6c 69 63 65 6e 73 65 2c 20    61 6e 64 20 28 62 29 20 70 65 72 6d 61 6e 65 6e  | s.your.license,.and.(b).permanen | 
| 64260 |  74 6c 79 2c 20 69 66 20 74 68 65 20 63 6f 70 79    72 69 67 68 74 0a 68 6f 6c 64 65 72 20 66 61 69  | tly,.if.the.copyright.holder.fai | 
| 64280 |  6c 73 20 74 6f 20 6e 6f 74 69 66 79 20 79 6f 75    20 6f 66 20 74 68 65 20 76 69 6f 6c 61 74 69 6f  | ls.to.notify.you.of.the.violatio | 
| 642a0 |  6e 20 62 79 20 73 6f 6d 65 20 72 65 61 73 6f 6e    61 62 6c 65 20 6d 65 61 6e 73 0a 70 72 69 6f 72  | n.by.some.reasonable.means.prior | 
| 642c0 |  20 74 6f 20 36 30 20 64 61 79 73 20 61 66 74 65    72 20 74 68 65 20 63 65 73 73 61 74 69 6f 6e 2e  | .to.60.days.after.the.cessation. | 
| 642e0 |  0a 0a 20 20 4d 6f 72 65 6f 76 65 72 2c 20 79 6f    75 72 20 6c 69 63 65 6e 73 65 20 66 72 6f 6d 20  | ....Moreover,.your.license.from. | 
| 64300 |  61 20 70 61 72 74 69 63 75 6c 61 72 20 63 6f 70    79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 69 73  | a.particular.copyright.holder.is | 
| 64320 |  0a 72 65 69 6e 73 74 61 74 65 64 20 70 65 72 6d    61 6e 65 6e 74 6c 79 20 69 66 20 74 68 65 20 63  | .reinstated.permanently.if.the.c | 
| 64340 |  6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20    6e 6f 74 69 66 69 65 73 20 79 6f 75 20 6f 66 20  | opyright.holder.notifies.you.of. | 
| 64360 |  74 68 65 0a 76 69 6f 6c 61 74 69 6f 6e 20 62 79    20 73 6f 6d 65 20 72 65 61 73 6f 6e 61 62 6c 65  | the.violation.by.some.reasonable | 
| 64380 |  20 6d 65 61 6e 73 2c 20 74 68 69 73 20 69 73 20    74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 79  | .means,.this.is.the.first.time.y | 
| 643a0 |  6f 75 20 68 61 76 65 0a 72 65 63 65 69 76 65 64    20 6e 6f 74 69 63 65 20 6f 66 20 76 69 6f 6c 61  | ou.have.received.notice.of.viola | 
| 643c0 |  74 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63    65 6e 73 65 20 28 66 6f 72 20 61 6e 79 20 77 6f  | tion.of.this.License.(for.any.wo | 
| 643e0 |  72 6b 29 20 66 72 6f 6d 20 74 68 61 74 0a 63 6f    70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 2c 20  | rk).from.that.copyright.holder,. | 
| 64400 |  61 6e 64 20 79 6f 75 20 63 75 72 65 20 74 68 65    20 76 69 6f 6c 61 74 69 6f 6e 20 70 72 69 6f 72  | and.you.cure.the.violation.prior | 
| 64420 |  20 74 6f 20 33 30 20 64 61 79 73 20 61 66 74 65    72 0a 79 6f 75 72 20 72 65 63 65 69 70 74 20 6f  | .to.30.days.after.your.receipt.o | 
| 64440 |  66 20 74 68 65 20 6e 6f 74 69 63 65 2e 0a 0a 20    20 54 65 72 6d 69 6e 61 74 69 6f 6e 20 6f 66 20  | f.the.notice.....Termination.of. | 
| 64460 |  79 6f 75 72 20 72 69 67 68 74 73 20 75 6e 64 65    72 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 64  | your.rights.under.this.section.d | 
| 64480 |  6f 65 73 20 6e 6f 74 20 74 65 72 6d 69 6e 61 74    65 20 74 68 65 0a 6c 69 63 65 6e 73 65 73 20 6f  | oes.not.terminate.the.licenses.o | 
| 644a0 |  66 20 70 61 72 74 69 65 73 20 77 68 6f 20 68 61    76 65 20 72 65 63 65 69 76 65 64 20 63 6f 70 69  | f.parties.who.have.received.copi | 
| 644c0 |  65 73 20 6f 72 20 72 69 67 68 74 73 20 66 72 6f    6d 20 79 6f 75 20 75 6e 64 65 72 0a 74 68 69 73  | es.or.rights.from.you.under.this | 
| 644e0 |  20 4c 69 63 65 6e 73 65 2e 20 20 49 66 20 79 6f    75 72 20 72 69 67 68 74 73 20 68 61 76 65 20 62  | .License...If.your.rights.have.b | 
| 64500 |  65 65 6e 20 74 65 72 6d 69 6e 61 74 65 64 20 61    6e 64 20 6e 6f 74 20 70 65 72 6d 61 6e 65 6e 74  | een.terminated.and.not.permanent | 
| 64520 |  6c 79 0a 72 65 69 6e 73 74 61 74 65 64 2c 20 79    6f 75 20 64 6f 20 6e 6f 74 20 71 75 61 6c 69 66  | ly.reinstated,.you.do.not.qualif | 
| 64540 |  79 20 74 6f 20 72 65 63 65 69 76 65 20 6e 65 77    20 6c 69 63 65 6e 73 65 73 20 66 6f 72 20 74 68  | y.to.receive.new.licenses.for.th | 
| 64560 |  65 20 73 61 6d 65 0a 6d 61 74 65 72 69 61 6c 20    75 6e 64 65 72 20 73 65 63 74 69 6f 6e 20 31 30  | e.same.material.under.section.10 | 
| 64580 |  2e 0a 0a 20 20 39 2e 20 41 63 63 65 70 74 61 6e    63 65 20 4e 6f 74 20 52 65 71 75 69 72 65 64 20  | .....9..Acceptance.Not.Required. | 
| 645a0 |  66 6f 72 20 48 61 76 69 6e 67 20 43 6f 70 69 65    73 2e 0a 0a 20 20 59 6f 75 20 61 72 65 20 6e 6f  | for.Having.Copies.....You.are.no | 
| 645c0 |  74 20 72 65 71 75 69 72 65 64 20 74 6f 20 61 63    63 65 70 74 20 74 68 69 73 20 4c 69 63 65 6e 73  | t.required.to.accept.this.Licens | 
| 645e0 |  65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65    63 65 69 76 65 20 6f 72 0a 72 75 6e 20 61 20 63  | e.in.order.to.receive.or.run.a.c | 
| 64600 |  6f 70 79 20 6f 66 20 74 68 65 20 50 72 6f 67 72    61 6d 2e 20 20 41 6e 63 69 6c 6c 61 72 79 20 70  | opy.of.the.Program...Ancillary.p | 
| 64620 |  72 6f 70 61 67 61 74 69 6f 6e 20 6f 66 20 61 20    63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 6f 63 63  | ropagation.of.a.covered.work.occ | 
| 64640 |  75 72 72 69 6e 67 20 73 6f 6c 65 6c 79 20 61 73    20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f  | urring.solely.as.a.consequence.o | 
| 64660 |  66 20 75 73 69 6e 67 20 70 65 65 72 2d 74 6f 2d    70 65 65 72 20 74 72 61 6e 73 6d 69 73 73 69 6f  | f.using.peer-to-peer.transmissio | 
| 64680 |  6e 0a 74 6f 20 72 65 63 65 69 76 65 20 61 20 63    6f 70 79 20 6c 69 6b 65 77 69 73 65 20 64 6f 65  | n.to.receive.a.copy.likewise.doe | 
| 646a0 |  73 20 6e 6f 74 20 72 65 71 75 69 72 65 20 61 63    63 65 70 74 61 6e 63 65 2e 20 20 48 6f 77 65 76  | s.not.require.acceptance...Howev | 
| 646c0 |  65 72 2c 0a 6e 6f 74 68 69 6e 67 20 6f 74 68 65    72 20 74 68 61 6e 20 74 68 69 73 20 4c 69 63 65  | er,.nothing.other.than.this.Lice | 
| 646e0 |  6e 73 65 20 67 72 61 6e 74 73 20 79 6f 75 20 70    65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 70 72 6f  | nse.grants.you.permission.to.pro | 
| 64700 |  70 61 67 61 74 65 20 6f 72 0a 6d 6f 64 69 66 79    20 61 6e 79 20 63 6f 76 65 72 65 64 20 77 6f 72  | pagate.or.modify.any.covered.wor | 
| 64720 |  6b 2e 20 20 54 68 65 73 65 20 61 63 74 69 6f 6e    73 20 69 6e 66 72 69 6e 67 65 20 63 6f 70 79 72  | k...These.actions.infringe.copyr | 
| 64740 |  69 67 68 74 20 69 66 20 79 6f 75 20 64 6f 0a 6e    6f 74 20 61 63 63 65 70 74 20 74 68 69 73 20 4c  | ight.if.you.do.not.accept.this.L | 
| 64760 |  69 63 65 6e 73 65 2e 20 20 54 68 65 72 65 66 6f    72 65 2c 20 62 79 20 6d 6f 64 69 66 79 69 6e 67  | icense...Therefore,.by.modifying | 
| 64780 |  20 6f 72 20 70 72 6f 70 61 67 61 74 69 6e 67 20    61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20  | .or.propagating.a.covered.work,. | 
| 647a0 |  79 6f 75 20 69 6e 64 69 63 61 74 65 20 79 6f 75    72 20 61 63 63 65 70 74 61 6e 63 65 20 6f 66 20  | you.indicate.your.acceptance.of. | 
| 647c0 |  74 68 69 73 20 4c 69 63 65 6e 73 65 20 74 6f 20    64 6f 20 73 6f 2e 0a 0a 20 20 31 30 2e 20 41 75  | this.License.to.do.so.....10..Au | 
| 647e0 |  74 6f 6d 61 74 69 63 20 4c 69 63 65 6e 73 69 6e    67 20 6f 66 20 44 6f 77 6e 73 74 72 65 61 6d 20  | tomatic.Licensing.of.Downstream. | 
| 64800 |  52 65 63 69 70 69 65 6e 74 73 2e 0a 0a 20 20 45    61 63 68 20 74 69 6d 65 20 79 6f 75 20 63 6f 6e  | Recipients.....Each.time.you.con | 
| 64820 |  76 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f    72 6b 2c 20 74 68 65 20 72 65 63 69 70 69 65 6e  | vey.a.covered.work,.the.recipien | 
| 64840 |  74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a    72 65 63 65 69 76 65 73 20 61 20 6c 69 63 65 6e  | t.automatically.receives.a.licen | 
| 64860 |  73 65 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67    69 6e 61 6c 20 6c 69 63 65 6e 73 6f 72 73 2c 20  | se.from.the.original.licensors,. | 
| 64880 |  74 6f 20 72 75 6e 2c 20 6d 6f 64 69 66 79 20 61    6e 64 0a 70 72 6f 70 61 67 61 74 65 20 74 68 61  | to.run,.modify.and.propagate.tha | 
| 648a0 |  74 20 77 6f 72 6b 2c 20 73 75 62 6a 65 63 74 20    74 6f 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e  | t.work,.subject.to.this.License. | 
| 648c0 |  20 20 59 6f 75 20 61 72 65 20 6e 6f 74 20 72 65    73 70 6f 6e 73 69 62 6c 65 0a 66 6f 72 20 65 6e  | ..You.are.not.responsible.for.en | 
| 648e0 |  66 6f 72 63 69 6e 67 20 63 6f 6d 70 6c 69 61 6e    63 65 20 62 79 20 74 68 69 72 64 20 70 61 72 74  | forcing.compliance.by.third.part | 
| 64900 |  69 65 73 20 77 69 74 68 20 74 68 69 73 20 4c 69    63 65 6e 73 65 2e 0a 0a 20 20 41 6e 20 22 65 6e  | ies.with.this.License.....An."en | 
| 64920 |  74 69 74 79 20 74 72 61 6e 73 61 63 74 69 6f 6e    22 20 69 73 20 61 20 74 72 61 6e 73 61 63 74 69  | tity.transaction".is.a.transacti | 
| 64940 |  6f 6e 20 74 72 61 6e 73 66 65 72 72 69 6e 67 20    63 6f 6e 74 72 6f 6c 20 6f 66 20 61 6e 0a 6f 72  | on.transferring.control.of.an.or | 
| 64960 |  67 61 6e 69 7a 61 74 69 6f 6e 2c 20 6f 72 20 73    75 62 73 74 61 6e 74 69 61 6c 6c 79 20 61 6c 6c  | ganization,.or.substantially.all | 
| 64980 |  20 61 73 73 65 74 73 20 6f 66 20 6f 6e 65 2c 20    6f 72 20 73 75 62 64 69 76 69 64 69 6e 67 20 61  | .assets.of.one,.or.subdividing.a | 
| 649a0 |  6e 0a 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 2c 20    6f 72 20 6d 65 72 67 69 6e 67 20 6f 72 67 61 6e  | n.organization,.or.merging.organ | 
| 649c0 |  69 7a 61 74 69 6f 6e 73 2e 20 20 49 66 20 70 72    6f 70 61 67 61 74 69 6f 6e 20 6f 66 20 61 20 63  | izations...If.propagation.of.a.c | 
| 649e0 |  6f 76 65 72 65 64 0a 77 6f 72 6b 20 72 65 73 75    6c 74 73 20 66 72 6f 6d 20 61 6e 20 65 6e 74 69  | overed.work.results.from.an.enti | 
| 64a00 |  74 79 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20    65 61 63 68 20 70 61 72 74 79 20 74 6f 20 74 68  | ty.transaction,.each.party.to.th | 
| 64a20 |  61 74 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 77    68 6f 20 72 65 63 65 69 76 65 73 20 61 20 63 6f  | at.transaction.who.receives.a.co | 
| 64a40 |  70 79 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 61    6c 73 6f 20 72 65 63 65 69 76 65 73 20 77 68 61  | py.of.the.work.also.receives.wha | 
| 64a60 |  74 65 76 65 72 0a 6c 69 63 65 6e 73 65 73 20 74    6f 20 74 68 65 20 77 6f 72 6b 20 74 68 65 20 70  | tever.licenses.to.the.work.the.p | 
| 64a80 |  61 72 74 79 27 73 20 70 72 65 64 65 63 65 73 73    6f 72 20 69 6e 20 69 6e 74 65 72 65 73 74 20 68  | arty's.predecessor.in.interest.h | 
| 64aa0 |  61 64 20 6f 72 20 63 6f 75 6c 64 0a 67 69 76 65    20 75 6e 64 65 72 20 74 68 65 20 70 72 65 76 69  | ad.or.could.give.under.the.previ | 
| 64ac0 |  6f 75 73 20 70 61 72 61 67 72 61 70 68 2c 20 70    6c 75 73 20 61 20 72 69 67 68 74 20 74 6f 20 70  | ous.paragraph,.plus.a.right.to.p | 
| 64ae0 |  6f 73 73 65 73 73 69 6f 6e 20 6f 66 20 74 68 65    0a 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53  | ossession.of.the.Corresponding.S | 
| 64b00 |  6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f 72    6b 20 66 72 6f 6d 20 74 68 65 20 70 72 65 64 65  | ource.of.the.work.from.the.prede | 
| 64b20 |  63 65 73 73 6f 72 20 69 6e 20 69 6e 74 65 72 65    73 74 2c 20 69 66 0a 74 68 65 20 70 72 65 64 65  | cessor.in.interest,.if.the.prede | 
| 64b40 |  63 65 73 73 6f 72 20 68 61 73 20 69 74 20 6f 72    20 63 61 6e 20 67 65 74 20 69 74 20 77 69 74 68  | cessor.has.it.or.can.get.it.with | 
| 64b60 |  20 72 65 61 73 6f 6e 61 62 6c 65 20 65 66 66 6f    72 74 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20  | .reasonable.efforts.....You.may. | 
| 64b80 |  6e 6f 74 20 69 6d 70 6f 73 65 20 61 6e 79 20 66    75 72 74 68 65 72 20 72 65 73 74 72 69 63 74 69  | not.impose.any.further.restricti | 
| 64ba0 |  6f 6e 73 20 6f 6e 20 74 68 65 20 65 78 65 72 63    69 73 65 20 6f 66 20 74 68 65 0a 72 69 67 68 74  | ons.on.the.exercise.of.the.right | 
| 64bc0 |  73 20 67 72 61 6e 74 65 64 20 6f 72 20 61 66 66    69 72 6d 65 64 20 75 6e 64 65 72 20 74 68 69 73  | s.granted.or.affirmed.under.this | 
| 64be0 |  20 4c 69 63 65 6e 73 65 2e 20 20 46 6f 72 20 65    78 61 6d 70 6c 65 2c 20 79 6f 75 20 6d 61 79 0a  | .License...For.example,.you.may. | 
| 64c00 |  6e 6f 74 20 69 6d 70 6f 73 65 20 61 20 6c 69 63    65 6e 73 65 20 66 65 65 2c 20 72 6f 79 61 6c 74  | not.impose.a.license.fee,.royalt | 
| 64c20 |  79 2c 20 6f 72 20 6f 74 68 65 72 20 63 68 61 72    67 65 20 66 6f 72 20 65 78 65 72 63 69 73 65 20  | y,.or.other.charge.for.exercise. | 
| 64c40 |  6f 66 0a 72 69 67 68 74 73 20 67 72 61 6e 74 65    64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63  | of.rights.granted.under.this.Lic | 
| 64c60 |  65 6e 73 65 2c 20 61 6e 64 20 79 6f 75 20 6d 61    79 20 6e 6f 74 20 69 6e 69 74 69 61 74 65 20 6c  | ense,.and.you.may.not.initiate.l | 
| 64c80 |  69 74 69 67 61 74 69 6f 6e 0a 28 69 6e 63 6c 75    64 69 6e 67 20 61 20 63 72 6f 73 73 2d 63 6c 61  | itigation.(including.a.cross-cla | 
| 64ca0 |  69 6d 20 6f 72 20 63 6f 75 6e 74 65 72 63 6c 61    69 6d 20 69 6e 20 61 20 6c 61 77 73 75 69 74 29  | im.or.counterclaim.in.a.lawsuit) | 
| 64cc0 |  20 61 6c 6c 65 67 69 6e 67 20 74 68 61 74 0a 61    6e 79 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 20  | .alleging.that.any.patent.claim. | 
| 64ce0 |  69 73 20 69 6e 66 72 69 6e 67 65 64 20 62 79 20    6d 61 6b 69 6e 67 2c 20 75 73 69 6e 67 2c 20 73  | is.infringed.by.making,.using,.s | 
| 64d00 |  65 6c 6c 69 6e 67 2c 20 6f 66 66 65 72 69 6e 67    20 66 6f 72 0a 73 61 6c 65 2c 20 6f 72 20 69 6d  | elling,.offering.for.sale,.or.im | 
| 64d20 |  70 6f 72 74 69 6e 67 20 74 68 65 20 50 72 6f 67    72 61 6d 20 6f 72 20 61 6e 79 20 70 6f 72 74 69  | porting.the.Program.or.any.porti | 
| 64d40 |  6f 6e 20 6f 66 20 69 74 2e 0a 0a 20 20 31 31 2e    20 50 61 74 65 6e 74 73 2e 0a 0a 20 20 41 20 22  | on.of.it.....11..Patents.....A." | 
| 64d60 |  63 6f 6e 74 72 69 62 75 74 6f 72 22 20 69 73 20    61 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64  | contributor".is.a.copyright.hold | 
| 64d80 |  65 72 20 77 68 6f 20 61 75 74 68 6f 72 69 7a 65    73 20 75 73 65 20 75 6e 64 65 72 20 74 68 69 73  | er.who.authorizes.use.under.this | 
| 64da0 |  0a 4c 69 63 65 6e 73 65 20 6f 66 20 74 68 65 20    50 72 6f 67 72 61 6d 20 6f 72 20 61 20 77 6f 72  | .License.of.the.Program.or.a.wor | 
| 64dc0 |  6b 20 6f 6e 20 77 68 69 63 68 20 74 68 65 20 50    72 6f 67 72 61 6d 20 69 73 20 62 61 73 65 64 2e  | k.on.which.the.Program.is.based. | 
| 64de0 |  20 20 54 68 65 0a 77 6f 72 6b 20 74 68 75 73 20    6c 69 63 65 6e 73 65 64 20 69 73 20 63 61 6c 6c  | ..The.work.thus.licensed.is.call | 
| 64e00 |  65 64 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74    6f 72 27 73 20 22 63 6f 6e 74 72 69 62 75 74 6f  | ed.the.contributor's."contributo | 
| 64e20 |  72 20 76 65 72 73 69 6f 6e 22 2e 0a 0a 20 20 41    20 63 6f 6e 74 72 69 62 75 74 6f 72 27 73 20 22  | r.version".....A.contributor's." | 
| 64e40 |  65 73 73 65 6e 74 69 61 6c 20 70 61 74 65 6e 74    20 63 6c 61 69 6d 73 22 20 61 72 65 20 61 6c 6c  | essential.patent.claims".are.all | 
| 64e60 |  20 70 61 74 65 6e 74 20 63 6c 61 69 6d 73 0a 6f    77 6e 65 64 20 6f 72 20 63 6f 6e 74 72 6f 6c 6c  | .patent.claims.owned.or.controll | 
| 64e80 |  65 64 20 62 79 20 74 68 65 20 63 6f 6e 74 72 69    62 75 74 6f 72 2c 20 77 68 65 74 68 65 72 20 61  | ed.by.the.contributor,.whether.a | 
| 64ea0 |  6c 72 65 61 64 79 20 61 63 71 75 69 72 65 64 20    6f 72 0a 68 65 72 65 61 66 74 65 72 20 61 63 71  | lready.acquired.or.hereafter.acq | 
| 64ec0 |  75 69 72 65 64 2c 20 74 68 61 74 20 77 6f 75 6c    64 20 62 65 20 69 6e 66 72 69 6e 67 65 64 20 62  | uired,.that.would.be.infringed.b | 
| 64ee0 |  79 20 73 6f 6d 65 20 6d 61 6e 6e 65 72 2c 20 70    65 72 6d 69 74 74 65 64 0a 62 79 20 74 68 69 73  | y.some.manner,.permitted.by.this | 
| 64f00 |  20 4c 69 63 65 6e 73 65 2c 20 6f 66 20 6d 61 6b    69 6e 67 2c 20 75 73 69 6e 67 2c 20 6f 72 20 73  | .License,.of.making,.using,.or.s | 
| 64f20 |  65 6c 6c 69 6e 67 20 69 74 73 20 63 6f 6e 74 72    69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 2c 0a  | elling.its.contributor.version,. | 
| 64f40 |  62 75 74 20 64 6f 20 6e 6f 74 20 69 6e 63 6c 75    64 65 20 63 6c 61 69 6d 73 20 74 68 61 74 20 77  | but.do.not.include.claims.that.w | 
| 64f60 |  6f 75 6c 64 20 62 65 20 69 6e 66 72 69 6e 67 65    64 20 6f 6e 6c 79 20 61 73 20 61 0a 63 6f 6e 73  | ould.be.infringed.only.as.a.cons | 
| 64f80 |  65 71 75 65 6e 63 65 20 6f 66 20 66 75 72 74 68    65 72 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20  | equence.of.further.modification. | 
| 64fa0 |  6f 66 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74    6f 72 20 76 65 72 73 69 6f 6e 2e 20 20 46 6f 72  | of.the.contributor.version...For | 
| 64fc0 |  0a 70 75 72 70 6f 73 65 73 20 6f 66 20 74 68 69    73 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 22 63  | .purposes.of.this.definition,."c | 
| 64fe0 |  6f 6e 74 72 6f 6c 22 20 69 6e 63 6c 75 64 65 73    20 74 68 65 20 72 69 67 68 74 20 74 6f 20 67 72  | ontrol".includes.the.right.to.gr | 
| 65000 |  61 6e 74 0a 70 61 74 65 6e 74 20 73 75 62 6c 69    63 65 6e 73 65 73 20 69 6e 20 61 20 6d 61 6e 6e  | ant.patent.sublicenses.in.a.mann | 
| 65020 |  65 72 20 63 6f 6e 73 69 73 74 65 6e 74 20 77 69    74 68 20 74 68 65 20 72 65 71 75 69 72 65 6d 65  | er.consistent.with.the.requireme | 
| 65040 |  6e 74 73 20 6f 66 0a 74 68 69 73 20 4c 69 63 65    6e 73 65 2e 0a 0a 20 20 45 61 63 68 20 63 6f 6e  | nts.of.this.License.....Each.con | 
| 65060 |  74 72 69 62 75 74 6f 72 20 67 72 61 6e 74 73 20    79 6f 75 20 61 20 6e 6f 6e 2d 65 78 63 6c 75 73  | tributor.grants.you.a.non-exclus | 
| 65080 |  69 76 65 2c 20 77 6f 72 6c 64 77 69 64 65 2c 20    72 6f 79 61 6c 74 79 2d 66 72 65 65 0a 70 61 74  | ive,.worldwide,.royalty-free.pat | 
| 650a0 |  65 6e 74 20 6c 69 63 65 6e 73 65 20 75 6e 64 65    72 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 6f  | ent.license.under.the.contributo | 
| 650c0 |  72 27 73 20 65 73 73 65 6e 74 69 61 6c 20 70 61    74 65 6e 74 20 63 6c 61 69 6d 73 2c 20 74 6f 0a  | r's.essential.patent.claims,.to. | 
| 650e0 |  6d 61 6b 65 2c 20 75 73 65 2c 20 73 65 6c 6c 2c    20 6f 66 66 65 72 20 66 6f 72 20 73 61 6c 65 2c  | make,.use,.sell,.offer.for.sale, | 
| 65100 |  20 69 6d 70 6f 72 74 20 61 6e 64 20 6f 74 68 65    72 77 69 73 65 20 72 75 6e 2c 20 6d 6f 64 69 66  | .import.and.otherwise.run,.modif | 
| 65120 |  79 20 61 6e 64 0a 70 72 6f 70 61 67 61 74 65 20    74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20  | y.and.propagate.the.contents.of. | 
| 65140 |  69 74 73 20 63 6f 6e 74 72 69 62 75 74 6f 72 20    76 65 72 73 69 6f 6e 2e 0a 0a 20 20 49 6e 20 74  | its.contributor.version.....In.t | 
| 65160 |  68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 72    65 65 20 70 61 72 61 67 72 61 70 68 73 2c 20 61  | he.following.three.paragraphs,.a | 
| 65180 |  20 22 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65    22 20 69 73 20 61 6e 79 20 65 78 70 72 65 73 73  | ."patent.license".is.any.express | 
| 651a0 |  0a 61 67 72 65 65 6d 65 6e 74 20 6f 72 20 63 6f    6d 6d 69 74 6d 65 6e 74 2c 20 68 6f 77 65 76 65  | .agreement.or.commitment,.howeve | 
| 651c0 |  72 20 64 65 6e 6f 6d 69 6e 61 74 65 64 2c 20 6e    6f 74 20 74 6f 20 65 6e 66 6f 72 63 65 20 61 20  | r.denominated,.not.to.enforce.a. | 
| 651e0 |  70 61 74 65 6e 74 0a 28 73 75 63 68 20 61 73 20    61 6e 20 65 78 70 72 65 73 73 20 70 65 72 6d 69  | patent.(such.as.an.express.permi | 
| 65200 |  73 73 69 6f 6e 20 74 6f 20 70 72 61 63 74 69 63    65 20 61 20 70 61 74 65 6e 74 20 6f 72 20 63 6f  | ssion.to.practice.a.patent.or.co | 
| 65220 |  76 65 6e 61 6e 74 20 6e 6f 74 20 74 6f 0a 73 75    65 20 66 6f 72 20 70 61 74 65 6e 74 20 69 6e 66  | venant.not.to.sue.for.patent.inf | 
| 65240 |  72 69 6e 67 65 6d 65 6e 74 29 2e 20 20 54 6f 20    22 67 72 61 6e 74 22 20 73 75 63 68 20 61 20 70  | ringement)...To."grant".such.a.p | 
| 65260 |  61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 74 6f    20 61 0a 70 61 72 74 79 20 6d 65 61 6e 73 20 74  | atent.license.to.a.party.means.t | 
| 65280 |  6f 20 6d 61 6b 65 20 73 75 63 68 20 61 6e 20 61    67 72 65 65 6d 65 6e 74 20 6f 72 20 63 6f 6d 6d  | o.make.such.an.agreement.or.comm | 
| 652a0 |  69 74 6d 65 6e 74 20 6e 6f 74 20 74 6f 20 65 6e    66 6f 72 63 65 20 61 0a 70 61 74 65 6e 74 20 61  | itment.not.to.enforce.a.patent.a | 
| 652c0 |  67 61 69 6e 73 74 20 74 68 65 20 70 61 72 74 79    2e 0a 0a 20 20 49 66 20 79 6f 75 20 63 6f 6e 76  | gainst.the.party.....If.you.conv | 
| 652e0 |  65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72    6b 2c 20 6b 6e 6f 77 69 6e 67 6c 79 20 72 65 6c  | ey.a.covered.work,.knowingly.rel | 
| 65300 |  79 69 6e 67 20 6f 6e 20 61 20 70 61 74 65 6e 74    20 6c 69 63 65 6e 73 65 2c 0a 61 6e 64 20 74 68  | ying.on.a.patent.license,.and.th | 
| 65320 |  65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20    53 6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f  | e.Corresponding.Source.of.the.wo | 
| 65340 |  72 6b 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61    62 6c 65 20 66 6f 72 20 61 6e 79 6f 6e 65 0a 74  | rk.is.not.available.for.anyone.t | 
| 65360 |  6f 20 63 6f 70 79 2c 20 66 72 65 65 20 6f 66 20    63 68 61 72 67 65 20 61 6e 64 20 75 6e 64 65 72  | o.copy,.free.of.charge.and.under | 
| 65380 |  20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68    69 73 20 4c 69 63 65 6e 73 65 2c 20 74 68 72 6f  | .the.terms.of.this.License,.thro | 
| 653a0 |  75 67 68 20 61 0a 70 75 62 6c 69 63 6c 79 20 61    76 61 69 6c 61 62 6c 65 20 6e 65 74 77 6f 72 6b  | ugh.a.publicly.available.network | 
| 653c0 |  20 73 65 72 76 65 72 20 6f 72 20 6f 74 68 65 72    20 72 65 61 64 69 6c 79 20 61 63 63 65 73 73 69  | .server.or.other.readily.accessi | 
| 653e0 |  62 6c 65 20 6d 65 61 6e 73 2c 0a 74 68 65 6e 20    79 6f 75 20 6d 75 73 74 20 65 69 74 68 65 72 20  | ble.means,.then.you.must.either. | 
| 65400 |  28 31 29 20 63 61 75 73 65 20 74 68 65 20 43 6f    72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72  | (1).cause.the.Corresponding.Sour | 
| 65420 |  63 65 20 74 6f 20 62 65 20 73 6f 0a 61 76 61 69    6c 61 62 6c 65 2c 20 6f 72 20 28 32 29 20 61 72  | ce.to.be.so.available,.or.(2).ar | 
| 65440 |  72 61 6e 67 65 20 74 6f 20 64 65 70 72 69 76 65    20 79 6f 75 72 73 65 6c 66 20 6f 66 20 74 68 65  | range.to.deprive.yourself.of.the | 
| 65460 |  20 62 65 6e 65 66 69 74 20 6f 66 20 74 68 65 0a    70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 66  | .benefit.of.the.patent.license.f | 
| 65480 |  6f 72 20 74 68 69 73 20 70 61 72 74 69 63 75 6c    61 72 20 77 6f 72 6b 2c 20 6f 72 20 28 33 29 20  | or.this.particular.work,.or.(3). | 
| 654a0 |  61 72 72 61 6e 67 65 2c 20 69 6e 20 61 20 6d 61    6e 6e 65 72 0a 63 6f 6e 73 69 73 74 65 6e 74 20  | arrange,.in.a.manner.consistent. | 
| 654c0 |  77 69 74 68 20 74 68 65 20 72 65 71 75 69 72 65    6d 65 6e 74 73 20 6f 66 20 74 68 69 73 20 4c 69  | with.the.requirements.of.this.Li | 
| 654e0 |  63 65 6e 73 65 2c 20 74 6f 20 65 78 74 65 6e 64    20 74 68 65 20 70 61 74 65 6e 74 0a 6c 69 63 65  | cense,.to.extend.the.patent.lice | 
| 65500 |  6e 73 65 20 74 6f 20 64 6f 77 6e 73 74 72 65 61    6d 20 72 65 63 69 70 69 65 6e 74 73 2e 20 20 22  | nse.to.downstream.recipients..." | 
| 65520 |  4b 6e 6f 77 69 6e 67 6c 79 20 72 65 6c 79 69 6e    67 22 20 6d 65 61 6e 73 20 79 6f 75 20 68 61 76  | Knowingly.relying".means.you.hav | 
| 65540 |  65 0a 61 63 74 75 61 6c 20 6b 6e 6f 77 6c 65 64    67 65 20 74 68 61 74 2c 20 62 75 74 20 66 6f 72  | e.actual.knowledge.that,.but.for | 
| 65560 |  20 74 68 65 20 70 61 74 65 6e 74 20 6c 69 63 65    6e 73 65 2c 20 79 6f 75 72 20 63 6f 6e 76 65 79  | .the.patent.license,.your.convey | 
| 65580 |  69 6e 67 20 74 68 65 0a 63 6f 76 65 72 65 64 20    77 6f 72 6b 20 69 6e 20 61 20 63 6f 75 6e 74 72  | ing.the.covered.work.in.a.countr | 
| 655a0 |  79 2c 20 6f 72 20 79 6f 75 72 20 72 65 63 69 70    69 65 6e 74 27 73 20 75 73 65 20 6f 66 20 74 68  | y,.or.your.recipient's.use.of.th | 
| 655c0 |  65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 69    6e 20 61 20 63 6f 75 6e 74 72 79 2c 20 77 6f 75  | e.covered.work.in.a.country,.wou | 
| 655e0 |  6c 64 20 69 6e 66 72 69 6e 67 65 20 6f 6e 65 20    6f 72 20 6d 6f 72 65 20 69 64 65 6e 74 69 66 69  | ld.infringe.one.or.more.identifi | 
| 65600 |  61 62 6c 65 20 70 61 74 65 6e 74 73 20 69 6e 20    74 68 61 74 0a 63 6f 75 6e 74 72 79 20 74 68 61  | able.patents.in.that.country.tha | 
| 65620 |  74 20 79 6f 75 20 68 61 76 65 20 72 65 61 73 6f    6e 20 74 6f 20 62 65 6c 69 65 76 65 20 61 72 65  | t.you.have.reason.to.believe.are | 
| 65640 |  20 76 61 6c 69 64 2e 0a 0a 20 20 49 66 2c 20 70    75 72 73 75 61 6e 74 20 74 6f 20 6f 72 20 69 6e  | .valid.....If,.pursuant.to.or.in | 
| 65660 |  20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68    20 61 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 61  | .connection.with.a.single.transa | 
| 65680 |  63 74 69 6f 6e 20 6f 72 0a 61 72 72 61 6e 67 65    6d 65 6e 74 2c 20 79 6f 75 20 63 6f 6e 76 65 79  | ction.or.arrangement,.you.convey | 
| 656a0 |  2c 20 6f 72 20 70 72 6f 70 61 67 61 74 65 20 62    79 20 70 72 6f 63 75 72 69 6e 67 20 63 6f 6e 76  | ,.or.propagate.by.procuring.conv | 
| 656c0 |  65 79 61 6e 63 65 20 6f 66 2c 20 61 0a 63 6f 76    65 72 65 64 20 77 6f 72 6b 2c 20 61 6e 64 20 67  | eyance.of,.a.covered.work,.and.g | 
| 656e0 |  72 61 6e 74 20 61 20 70 61 74 65 6e 74 20 6c 69    63 65 6e 73 65 20 74 6f 20 73 6f 6d 65 20 6f 66  | rant.a.patent.license.to.some.of | 
| 65700 |  20 74 68 65 20 70 61 72 74 69 65 73 0a 72 65 63    65 69 76 69 6e 67 20 74 68 65 20 63 6f 76 65 72  | .the.parties.receiving.the.cover | 
| 65720 |  65 64 20 77 6f 72 6b 20 61 75 74 68 6f 72 69 7a    69 6e 67 20 74 68 65 6d 20 74 6f 20 75 73 65 2c  | ed.work.authorizing.them.to.use, | 
| 65740 |  20 70 72 6f 70 61 67 61 74 65 2c 20 6d 6f 64 69    66 79 0a 6f 72 20 63 6f 6e 76 65 79 20 61 20 73  | .propagate,.modify.or.convey.a.s | 
| 65760 |  70 65 63 69 66 69 63 20 63 6f 70 79 20 6f 66 20    74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b  | pecific.copy.of.the.covered.work | 
| 65780 |  2c 20 74 68 65 6e 20 74 68 65 20 70 61 74 65 6e    74 20 6c 69 63 65 6e 73 65 0a 79 6f 75 20 67 72  | ,.then.the.patent.license.you.gr | 
| 657a0 |  61 6e 74 20 69 73 20 61 75 74 6f 6d 61 74 69 63    61 6c 6c 79 20 65 78 74 65 6e 64 65 64 20 74 6f  | ant.is.automatically.extended.to | 
| 657c0 |  20 61 6c 6c 20 72 65 63 69 70 69 65 6e 74 73 20    6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 0a 77  | .all.recipients.of.the.covered.w | 
| 657e0 |  6f 72 6b 20 61 6e 64 20 77 6f 72 6b 73 20 62 61    73 65 64 20 6f 6e 20 69 74 2e 0a 0a 20 20 41 20  | ork.and.works.based.on.it.....A. | 
| 65800 |  70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 69    73 20 22 64 69 73 63 72 69 6d 69 6e 61 74 6f 72  | patent.license.is."discriminator | 
| 65820 |  79 22 20 69 66 20 69 74 20 64 6f 65 73 20 6e 6f    74 20 69 6e 63 6c 75 64 65 20 77 69 74 68 69 6e  | y".if.it.does.not.include.within | 
| 65840 |  0a 74 68 65 20 73 63 6f 70 65 20 6f 66 20 69 74    73 20 63 6f 76 65 72 61 67 65 2c 20 70 72 6f 68  | .the.scope.of.its.coverage,.proh | 
| 65860 |  69 62 69 74 73 20 74 68 65 20 65 78 65 72 63 69    73 65 20 6f 66 2c 20 6f 72 20 69 73 0a 63 6f 6e  | ibits.the.exercise.of,.or.is.con | 
| 65880 |  64 69 74 69 6f 6e 65 64 20 6f 6e 20 74 68 65 20    6e 6f 6e 2d 65 78 65 72 63 69 73 65 20 6f 66 20  | ditioned.on.the.non-exercise.of. | 
| 658a0 |  6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74    68 65 20 72 69 67 68 74 73 20 74 68 61 74 20 61  | one.or.more.of.the.rights.that.a | 
| 658c0 |  72 65 0a 73 70 65 63 69 66 69 63 61 6c 6c 79 20    67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68  | re.specifically.granted.under.th | 
| 658e0 |  69 73 20 4c 69 63 65 6e 73 65 2e 20 20 59 6f 75    20 6d 61 79 20 6e 6f 74 20 63 6f 6e 76 65 79 20  | is.License...You.may.not.convey. | 
| 65900 |  61 20 63 6f 76 65 72 65 64 0a 77 6f 72 6b 20 69    66 20 79 6f 75 20 61 72 65 20 61 20 70 61 72 74  | a.covered.work.if.you.are.a.part | 
| 65920 |  79 20 74 6f 20 61 6e 20 61 72 72 61 6e 67 65 6d    65 6e 74 20 77 69 74 68 20 61 20 74 68 69 72 64  | y.to.an.arrangement.with.a.third | 
| 65940 |  20 70 61 72 74 79 20 74 68 61 74 20 69 73 0a 69    6e 20 74 68 65 20 62 75 73 69 6e 65 73 73 20 6f  | .party.that.is.in.the.business.o | 
| 65960 |  66 20 64 69 73 74 72 69 62 75 74 69 6e 67 20 73    6f 66 74 77 61 72 65 2c 20 75 6e 64 65 72 20 77  | f.distributing.software,.under.w | 
| 65980 |  68 69 63 68 20 79 6f 75 20 6d 61 6b 65 20 70 61    79 6d 65 6e 74 0a 74 6f 20 74 68 65 20 74 68 69  | hich.you.make.payment.to.the.thi | 
| 659a0 |  72 64 20 70 61 72 74 79 20 62 61 73 65 64 20 6f    6e 20 74 68 65 20 65 78 74 65 6e 74 20 6f 66 20  | rd.party.based.on.the.extent.of. | 
| 659c0 |  79 6f 75 72 20 61 63 74 69 76 69 74 79 20 6f 66    20 63 6f 6e 76 65 79 69 6e 67 0a 74 68 65 20 77  | your.activity.of.conveying.the.w | 
| 659e0 |  6f 72 6b 2c 20 61 6e 64 20 75 6e 64 65 72 20 77    68 69 63 68 20 74 68 65 20 74 68 69 72 64 20 70  | ork,.and.under.which.the.third.p | 
| 65a00 |  61 72 74 79 20 67 72 61 6e 74 73 2c 20 74 6f 20    61 6e 79 20 6f 66 20 74 68 65 0a 70 61 72 74 69  | arty.grants,.to.any.of.the.parti | 
| 65a20 |  65 73 20 77 68 6f 20 77 6f 75 6c 64 20 72 65 63    65 69 76 65 20 74 68 65 20 63 6f 76 65 72 65 64  | es.who.would.receive.the.covered | 
| 65a40 |  20 77 6f 72 6b 20 66 72 6f 6d 20 79 6f 75 2c 20    61 20 64 69 73 63 72 69 6d 69 6e 61 74 6f 72 79  | .work.from.you,.a.discriminatory | 
| 65a60 |  0a 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20    28 61 29 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f  | .patent.license.(a).in.connectio | 
| 65a80 |  6e 20 77 69 74 68 20 63 6f 70 69 65 73 20 6f 66    20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72  | n.with.copies.of.the.covered.wor | 
| 65aa0 |  6b 0a 63 6f 6e 76 65 79 65 64 20 62 79 20 79 6f    75 20 28 6f 72 20 63 6f 70 69 65 73 20 6d 61 64  | k.conveyed.by.you.(or.copies.mad | 
| 65ac0 |  65 20 66 72 6f 6d 20 74 68 6f 73 65 20 63 6f 70    69 65 73 29 2c 20 6f 72 20 28 62 29 20 70 72 69  | e.from.those.copies),.or.(b).pri | 
| 65ae0 |  6d 61 72 69 6c 79 0a 66 6f 72 20 61 6e 64 20 69    6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74  | marily.for.and.in.connection.wit | 
| 65b00 |  68 20 73 70 65 63 69 66 69 63 20 70 72 6f 64 75    63 74 73 20 6f 72 20 63 6f 6d 70 69 6c 61 74 69  | h.specific.products.or.compilati | 
| 65b20 |  6f 6e 73 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e    20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72  | ons.that.contain.the.covered.wor | 
| 65b40 |  6b 2c 20 75 6e 6c 65 73 73 20 79 6f 75 20 65 6e    74 65 72 65 64 20 69 6e 74 6f 20 74 68 61 74 20  | k,.unless.you.entered.into.that. | 
| 65b60 |  61 72 72 61 6e 67 65 6d 65 6e 74 2c 0a 6f 72 20    74 68 61 74 20 70 61 74 65 6e 74 20 6c 69 63 65  | arrangement,.or.that.patent.lice | 
| 65b80 |  6e 73 65 20 77 61 73 20 67 72 61 6e 74 65 64 2c    20 70 72 69 6f 72 20 74 6f 20 32 38 20 4d 61 72  | nse.was.granted,.prior.to.28.Mar | 
| 65ba0 |  63 68 20 32 30 30 37 2e 0a 0a 20 20 4e 6f 74 68    69 6e 67 20 69 6e 20 74 68 69 73 20 4c 69 63 65  | ch.2007.....Nothing.in.this.Lice | 
| 65bc0 |  6e 73 65 20 73 68 61 6c 6c 20 62 65 20 63 6f 6e    73 74 72 75 65 64 20 61 73 20 65 78 63 6c 75 64  | nse.shall.be.construed.as.exclud | 
| 65be0 |  69 6e 67 20 6f 72 20 6c 69 6d 69 74 69 6e 67 0a    61 6e 79 20 69 6d 70 6c 69 65 64 20 6c 69 63 65  | ing.or.limiting.any.implied.lice | 
| 65c00 |  6e 73 65 20 6f 72 20 6f 74 68 65 72 20 64 65 66    65 6e 73 65 73 20 74 6f 20 69 6e 66 72 69 6e 67  | nse.or.other.defenses.to.infring | 
| 65c20 |  65 6d 65 6e 74 20 74 68 61 74 20 6d 61 79 0a 6f    74 68 65 72 77 69 73 65 20 62 65 20 61 76 61 69  | ement.that.may.otherwise.be.avai | 
| 65c40 |  6c 61 62 6c 65 20 74 6f 20 79 6f 75 20 75 6e 64    65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 70 61  | lable.to.you.under.applicable.pa | 
| 65c60 |  74 65 6e 74 20 6c 61 77 2e 0a 0a 20 20 31 32 2e    20 4e 6f 20 53 75 72 72 65 6e 64 65 72 20 6f 66  | tent.law.....12..No.Surrender.of | 
| 65c80 |  20 4f 74 68 65 72 73 27 20 46 72 65 65 64 6f 6d    2e 0a 0a 20 20 49 66 20 63 6f 6e 64 69 74 69 6f  | .Others'.Freedom.....If.conditio | 
| 65ca0 |  6e 73 20 61 72 65 20 69 6d 70 6f 73 65 64 20 6f    6e 20 79 6f 75 20 28 77 68 65 74 68 65 72 20 62  | ns.are.imposed.on.you.(whether.b | 
| 65cc0 |  79 20 63 6f 75 72 74 20 6f 72 64 65 72 2c 20 61    67 72 65 65 6d 65 6e 74 20 6f 72 0a 6f 74 68 65  | y.court.order,.agreement.or.othe | 
| 65ce0 |  72 77 69 73 65 29 20 74 68 61 74 20 63 6f 6e 74    72 61 64 69 63 74 20 74 68 65 20 63 6f 6e 64 69  | rwise).that.contradict.the.condi | 
| 65d00 |  74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 4c 69    63 65 6e 73 65 2c 20 74 68 65 79 20 64 6f 20 6e  | tions.of.this.License,.they.do.n | 
| 65d20 |  6f 74 0a 65 78 63 75 73 65 20 79 6f 75 20 66 72    6f 6d 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e  | ot.excuse.you.from.the.condition | 
| 65d40 |  73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73    65 2e 20 20 49 66 20 79 6f 75 20 63 61 6e 6e 6f  | s.of.this.License...If.you.canno | 
| 65d60 |  74 20 63 6f 6e 76 65 79 20 61 0a 63 6f 76 65 72    65 64 20 77 6f 72 6b 20 73 6f 20 61 73 20 74 6f  | t.convey.a.covered.work.so.as.to | 
| 65d80 |  20 73 61 74 69 73 66 79 20 73 69 6d 75 6c 74 61    6e 65 6f 75 73 6c 79 20 79 6f 75 72 20 6f 62 6c  | .satisfy.simultaneously.your.obl | 
| 65da0 |  69 67 61 74 69 6f 6e 73 20 75 6e 64 65 72 20 74    68 69 73 0a 4c 69 63 65 6e 73 65 20 61 6e 64 20  | igations.under.this.License.and. | 
| 65dc0 |  61 6e 79 20 6f 74 68 65 72 20 70 65 72 74 69 6e    65 6e 74 20 6f 62 6c 69 67 61 74 69 6f 6e 73 2c  | any.other.pertinent.obligations, | 
| 65de0 |  20 74 68 65 6e 20 61 73 20 61 20 63 6f 6e 73 65    71 75 65 6e 63 65 20 79 6f 75 20 6d 61 79 0a 6e  | .then.as.a.consequence.you.may.n | 
| 65e00 |  6f 74 20 63 6f 6e 76 65 79 20 69 74 20 61 74 20    61 6c 6c 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  | ot.convey.it.at.all...For.exampl | 
| 65e20 |  65 2c 20 69 66 20 79 6f 75 20 61 67 72 65 65 20    74 6f 20 74 65 72 6d 73 20 74 68 61 74 20 6f 62  | e,.if.you.agree.to.terms.that.ob | 
| 65e40 |  6c 69 67 61 74 65 20 79 6f 75 0a 74 6f 20 63 6f    6c 6c 65 63 74 20 61 20 72 6f 79 61 6c 74 79 20  | ligate.you.to.collect.a.royalty. | 
| 65e60 |  66 6f 72 20 66 75 72 74 68 65 72 20 63 6f 6e 76    65 79 69 6e 67 20 66 72 6f 6d 20 74 68 6f 73 65  | for.further.conveying.from.those | 
| 65e80 |  20 74 6f 20 77 68 6f 6d 20 79 6f 75 20 63 6f 6e    76 65 79 0a 74 68 65 20 50 72 6f 67 72 61 6d 2c  | .to.whom.you.convey.the.Program, | 
| 65ea0 |  20 74 68 65 20 6f 6e 6c 79 20 77 61 79 20 79 6f    75 20 63 6f 75 6c 64 20 73 61 74 69 73 66 79 20  | .the.only.way.you.could.satisfy. | 
| 65ec0 |  62 6f 74 68 20 74 68 6f 73 65 20 74 65 72 6d 73    20 61 6e 64 20 74 68 69 73 0a 4c 69 63 65 6e 73  | both.those.terms.and.this.Licens | 
| 65ee0 |  65 20 77 6f 75 6c 64 20 62 65 20 74 6f 20 72 65    66 72 61 69 6e 20 65 6e 74 69 72 65 6c 79 20 66  | e.would.be.to.refrain.entirely.f | 
| 65f00 |  72 6f 6d 20 63 6f 6e 76 65 79 69 6e 67 20 74 68    65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 31 33  | rom.conveying.the.Program.....13 | 
| 65f20 |  2e 20 55 73 65 20 77 69 74 68 20 74 68 65 20 47    4e 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61  | ..Use.with.the.GNU.Affero.Genera | 
| 65f40 |  6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65    2e 0a 0a 20 20 4e 6f 74 77 69 74 68 73 74 61 6e  | l.Public.License.....Notwithstan | 
| 65f60 |  64 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 70    72 6f 76 69 73 69 6f 6e 20 6f 66 20 74 68 69 73  | ding.any.other.provision.of.this | 
| 65f80 |  20 4c 69 63 65 6e 73 65 2c 20 79 6f 75 20 68 61    76 65 0a 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f  | .License,.you.have.permission.to | 
| 65fa0 |  20 6c 69 6e 6b 20 6f 72 20 63 6f 6d 62 69 6e 65    20 61 6e 79 20 63 6f 76 65 72 65 64 20 77 6f 72  | .link.or.combine.any.covered.wor | 
| 65fc0 |  6b 20 77 69 74 68 20 61 20 77 6f 72 6b 20 6c 69    63 65 6e 73 65 64 0a 75 6e 64 65 72 20 76 65 72  | k.with.a.work.licensed.under.ver | 
| 65fe0 |  73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 47 4e    55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c  | sion.3.of.the.GNU.Affero.General | 
| 66000 |  20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20    69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 0a 63 6f  | .Public.License.into.a.single.co | 
| 66020 |  6d 62 69 6e 65 64 20 77 6f 72 6b 2c 20 61 6e 64    20 74 6f 20 63 6f 6e 76 65 79 20 74 68 65 20 72  | mbined.work,.and.to.convey.the.r | 
| 66040 |  65 73 75 6c 74 69 6e 67 20 77 6f 72 6b 2e 20 20    54 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69  | esulting.work...The.terms.of.thi | 
| 66060 |  73 0a 4c 69 63 65 6e 73 65 20 77 69 6c 6c 20 63    6f 6e 74 69 6e 75 65 20 74 6f 20 61 70 70 6c 79  | s.License.will.continue.to.apply | 
| 66080 |  20 74 6f 20 74 68 65 20 70 61 72 74 20 77 68 69    63 68 20 69 73 20 74 68 65 20 63 6f 76 65 72 65  | .to.the.part.which.is.the.covere | 
| 660a0 |  64 20 77 6f 72 6b 2c 0a 62 75 74 20 74 68 65 20    73 70 65 63 69 61 6c 20 72 65 71 75 69 72 65 6d  | d.work,.but.the.special.requirem | 
| 660c0 |  65 6e 74 73 20 6f 66 20 74 68 65 20 47 4e 55 20    41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50  | ents.of.the.GNU.Affero.General.P | 
| 660e0 |  75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2c 0a 73    65 63 74 69 6f 6e 20 31 33 2c 20 63 6f 6e 63 65  | ublic.License,.section.13,.conce | 
| 66100 |  72 6e 69 6e 67 20 69 6e 74 65 72 61 63 74 69 6f    6e 20 74 68 72 6f 75 67 68 20 61 20 6e 65 74 77  | rning.interaction.through.a.netw | 
| 66120 |  6f 72 6b 20 77 69 6c 6c 20 61 70 70 6c 79 20 74    6f 20 74 68 65 0a 63 6f 6d 62 69 6e 61 74 69 6f  | ork.will.apply.to.the.combinatio | 
| 66140 |  6e 20 61 73 20 73 75 63 68 2e 0a 0a 20 20 31 34    2e 20 52 65 76 69 73 65 64 20 56 65 72 73 69 6f  | n.as.such.....14..Revised.Versio | 
| 66160 |  6e 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e    73 65 2e 0a 0a 20 20 54 68 65 20 46 72 65 65 20  | ns.of.this.License.....The.Free. | 
| 66180 |  53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74    69 6f 6e 20 6d 61 79 20 70 75 62 6c 69 73 68 20  | Software.Foundation.may.publish. | 
| 661a0 |  72 65 76 69 73 65 64 20 61 6e 64 2f 6f 72 20 6e    65 77 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 74  | revised.and/or.new.versions.of.t | 
| 661c0 |  68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50    75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 72  | he.GNU.General.Public.License.fr | 
| 661e0 |  6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 2e    20 20 53 75 63 68 20 6e 65 77 20 76 65 72 73 69  | om.time.to.time...Such.new.versi | 
| 66200 |  6f 6e 73 20 77 69 6c 6c 0a 62 65 20 73 69 6d 69    6c 61 72 20 69 6e 20 73 70 69 72 69 74 20 74 6f  | ons.will.be.similar.in.spirit.to | 
| 66220 |  20 74 68 65 20 70 72 65 73 65 6e 74 20 76 65 72    73 69 6f 6e 2c 20 62 75 74 20 6d 61 79 20 64 69  | .the.present.version,.but.may.di | 
| 66240 |  66 66 65 72 20 69 6e 20 64 65 74 61 69 6c 20 74    6f 0a 61 64 64 72 65 73 73 20 6e 65 77 20 70 72  | ffer.in.detail.to.address.new.pr | 
| 66260 |  6f 62 6c 65 6d 73 20 6f 72 20 63 6f 6e 63 65 72    6e 73 2e 0a 0a 20 20 45 61 63 68 20 76 65 72 73  | oblems.or.concerns.....Each.vers | 
| 66280 |  69 6f 6e 20 69 73 20 67 69 76 65 6e 20 61 20 64    69 73 74 69 6e 67 75 69 73 68 69 6e 67 20 76 65  | ion.is.given.a.distinguishing.ve | 
| 662a0 |  72 73 69 6f 6e 20 6e 75 6d 62 65 72 2e 20 20 49    66 20 74 68 65 0a 50 72 6f 67 72 61 6d 20 73 70  | rsion.number...If.the.Program.sp | 
| 662c0 |  65 63 69 66 69 65 73 20 74 68 61 74 20 61 20 63    65 72 74 61 69 6e 20 6e 75 6d 62 65 72 65 64 20  | ecifies.that.a.certain.numbered. | 
| 662e0 |  76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 47    4e 55 20 47 65 6e 65 72 61 6c 0a 50 75 62 6c 69  | version.of.the.GNU.General.Publi | 
| 66300 |  63 20 4c 69 63 65 6e 73 65 20 22 6f 72 20 61 6e    79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 22  | c.License."or.any.later.version" | 
| 66320 |  20 61 70 70 6c 69 65 73 20 74 6f 20 69 74 2c 20    79 6f 75 20 68 61 76 65 20 74 68 65 0a 6f 70 74  | .applies.to.it,.you.have.the.opt | 
| 66340 |  69 6f 6e 20 6f 66 20 66 6f 6c 6c 6f 77 69 6e 67    20 74 68 65 20 74 65 72 6d 73 20 61 6e 64 20 63  | ion.of.following.the.terms.and.c | 
| 66360 |  6f 6e 64 69 74 69 6f 6e 73 20 65 69 74 68 65 72    20 6f 66 20 74 68 61 74 20 6e 75 6d 62 65 72 65  | onditions.either.of.that.numbere | 
| 66380 |  64 0a 76 65 72 73 69 6f 6e 20 6f 72 20 6f 66 20    61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f  | d.version.or.of.any.later.versio | 
| 663a0 |  6e 20 70 75 62 6c 69 73 68 65 64 20 62 79 20 74    68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65  | n.published.by.the.Free.Software | 
| 663c0 |  0a 46 6f 75 6e 64 61 74 69 6f 6e 2e 20 20 49 66    20 74 68 65 20 50 72 6f 67 72 61 6d 20 64 6f 65  | .Foundation...If.the.Program.doe | 
| 663e0 |  73 20 6e 6f 74 20 73 70 65 63 69 66 79 20 61 20    76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f  | s.not.specify.a.version.number.o | 
| 66400 |  66 20 74 68 65 0a 47 4e 55 20 47 65 6e 65 72 61    6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65  | f.the.GNU.General.Public.License | 
| 66420 |  2c 20 79 6f 75 20 6d 61 79 20 63 68 6f 6f 73 65    20 61 6e 79 20 76 65 72 73 69 6f 6e 20 65 76 65  | ,.you.may.choose.any.version.eve | 
| 66440 |  72 20 70 75 62 6c 69 73 68 65 64 0a 62 79 20 74    68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65  | r.published.by.the.Free.Software | 
| 66460 |  20 46 6f 75 6e 64 61 74 69 6f 6e 2e 0a 0a 20 20    49 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 73  | .Foundation.....If.the.Program.s | 
| 66480 |  70 65 63 69 66 69 65 73 20 74 68 61 74 20 61 20    70 72 6f 78 79 20 63 61 6e 20 64 65 63 69 64 65  | pecifies.that.a.proxy.can.decide | 
| 664a0 |  20 77 68 69 63 68 20 66 75 74 75 72 65 0a 76 65    72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 47 4e  | .which.future.versions.of.the.GN | 
| 664c0 |  55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63    20 4c 69 63 65 6e 73 65 20 63 61 6e 20 62 65 20  | U.General.Public.License.can.be. | 
| 664e0 |  75 73 65 64 2c 20 74 68 61 74 20 70 72 6f 78 79    27 73 0a 70 75 62 6c 69 63 20 73 74 61 74 65 6d  | used,.that.proxy's.public.statem | 
| 66500 |  65 6e 74 20 6f 66 20 61 63 63 65 70 74 61 6e 63    65 20 6f 66 20 61 20 76 65 72 73 69 6f 6e 20 70  | ent.of.acceptance.of.a.version.p | 
| 66520 |  65 72 6d 61 6e 65 6e 74 6c 79 20 61 75 74 68 6f    72 69 7a 65 73 20 79 6f 75 0a 74 6f 20 63 68 6f  | ermanently.authorizes.you.to.cho | 
| 66540 |  6f 73 65 20 74 68 61 74 20 76 65 72 73 69 6f 6e    20 66 6f 72 20 74 68 65 20 50 72 6f 67 72 61 6d  | ose.that.version.for.the.Program | 
| 66560 |  2e 0a 0a 20 20 4c 61 74 65 72 20 6c 69 63 65 6e    73 65 20 76 65 72 73 69 6f 6e 73 20 6d 61 79 20  | .....Later.license.versions.may. | 
| 66580 |  67 69 76 65 20 79 6f 75 20 61 64 64 69 74 69 6f    6e 61 6c 20 6f 72 20 64 69 66 66 65 72 65 6e 74  | give.you.additional.or.different | 
| 665a0 |  0a 70 65 72 6d 69 73 73 69 6f 6e 73 2e 20 20 48    6f 77 65 76 65 72 2c 20 6e 6f 20 61 64 64 69 74  | .permissions...However,.no.addit | 
| 665c0 |  69 6f 6e 61 6c 20 6f 62 6c 69 67 61 74 69 6f 6e    73 20 61 72 65 20 69 6d 70 6f 73 65 64 20 6f 6e  | ional.obligations.are.imposed.on | 
| 665e0 |  20 61 6e 79 0a 61 75 74 68 6f 72 20 6f 72 20 63    6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20  | .any.author.or.copyright.holder. | 
| 66600 |  61 73 20 61 20 72 65 73 75 6c 74 20 6f 66 20 79    6f 75 72 20 63 68 6f 6f 73 69 6e 67 20 74 6f 20  | as.a.result.of.your.choosing.to. | 
| 66620 |  66 6f 6c 6c 6f 77 20 61 0a 6c 61 74 65 72 20 76    65 72 73 69 6f 6e 2e 0a 0a 20 20 31 35 2e 20 44  | follow.a.later.version.....15..D | 
| 66640 |  69 73 63 6c 61 69 6d 65 72 20 6f 66 20 57 61 72    72 61 6e 74 79 2e 0a 0a 20 20 54 48 45 52 45 20  | isclaimer.of.Warranty.....THERE. | 
| 66660 |  49 53 20 4e 4f 20 57 41 52 52 41 4e 54 59 20 46    4f 52 20 54 48 45 20 50 52 4f 47 52 41 4d 2c 20  | IS.NO.WARRANTY.FOR.THE.PROGRAM,. | 
| 66680 |  54 4f 20 54 48 45 20 45 58 54 45 4e 54 20 50 45    52 4d 49 54 54 45 44 20 42 59 0a 41 50 50 4c 49  | TO.THE.EXTENT.PERMITTED.BY.APPLI | 
| 666a0 |  43 41 42 4c 45 20 4c 41 57 2e 20 20 45 58 43 45    50 54 20 57 48 45 4e 20 4f 54 48 45 52 57 49 53  | CABLE.LAW...EXCEPT.WHEN.OTHERWIS | 
| 666c0 |  45 20 53 54 41 54 45 44 20 49 4e 20 57 52 49 54    49 4e 47 20 54 48 45 20 43 4f 50 59 52 49 47 48  | E.STATED.IN.WRITING.THE.COPYRIGH | 
| 666e0 |  54 0a 48 4f 4c 44 45 52 53 20 41 4e 44 2f 4f 52    20 4f 54 48 45 52 20 50 41 52 54 49 45 53 20 50  | T.HOLDERS.AND/OR.OTHER.PARTIES.P | 
| 66700 |  52 4f 56 49 44 45 20 54 48 45 20 50 52 4f 47 52    41 4d 20 22 41 53 20 49 53 22 20 57 49 54 48 4f  | ROVIDE.THE.PROGRAM."AS.IS".WITHO | 
| 66720 |  55 54 20 57 41 52 52 41 4e 54 59 0a 4f 46 20 41    4e 59 20 4b 49 4e 44 2c 20 45 49 54 48 45 52 20  | UT.WARRANTY.OF.ANY.KIND,.EITHER. | 
| 66740 |  45 58 50 52 45 53 53 45 44 20 4f 52 20 49 4d 50    4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e 47 2c  | EXPRESSED.OR.IMPLIED,.INCLUDING, | 
| 66760 |  20 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44    20 54 4f 2c 0a 54 48 45 20 49 4d 50 4c 49 45 44  | .BUT.NOT.LIMITED.TO,.THE.IMPLIED | 
| 66780 |  20 57 41 52 52 41 4e 54 49 45 53 20 4f 46 20 4d    45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 41  | .WARRANTIES.OF.MERCHANTABILITY.A | 
| 667a0 |  4e 44 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41    20 50 41 52 54 49 43 55 4c 41 52 0a 50 55 52 50  | ND.FITNESS.FOR.A.PARTICULAR.PURP | 
| 667c0 |  4f 53 45 2e 20 20 54 48 45 20 45 4e 54 49 52 45    20 52 49 53 4b 20 41 53 20 54 4f 20 54 48 45 20  | OSE...THE.ENTIRE.RISK.AS.TO.THE. | 
| 667e0 |  51 55 41 4c 49 54 59 20 41 4e 44 20 50 45 52 46    4f 52 4d 41 4e 43 45 20 4f 46 20 54 48 45 20 50  | QUALITY.AND.PERFORMANCE.OF.THE.P | 
| 66800 |  52 4f 47 52 41 4d 0a 49 53 20 57 49 54 48 20 59    4f 55 2e 20 20 53 48 4f 55 4c 44 20 54 48 45 20  | ROGRAM.IS.WITH.YOU...SHOULD.THE. | 
| 66820 |  50 52 4f 47 52 41 4d 20 50 52 4f 56 45 20 44 45    46 45 43 54 49 56 45 2c 20 59 4f 55 20 41 53 53  | PROGRAM.PROVE.DEFECTIVE,.YOU.ASS | 
| 66840 |  55 4d 45 20 54 48 45 20 43 4f 53 54 20 4f 46 0a    41 4c 4c 20 4e 45 43 45 53 53 41 52 59 20 53 45  | UME.THE.COST.OF.ALL.NECESSARY.SE | 
| 66860 |  52 56 49 43 49 4e 47 2c 20 52 45 50 41 49 52 20    4f 52 20 43 4f 52 52 45 43 54 49 4f 4e 2e 0a 0a  | RVICING,.REPAIR.OR.CORRECTION... | 
| 66880 |  20 20 31 36 2e 20 4c 69 6d 69 74 61 74 69 6f 6e    20 6f 66 20 4c 69 61 62 69 6c 69 74 79 2e 0a 0a  | ..16..Limitation.of.Liability... | 
| 668a0 |  20 20 49 4e 20 4e 4f 20 45 56 45 4e 54 20 55 4e    4c 45 53 53 20 52 45 51 55 49 52 45 44 20 42 59  | ..IN.NO.EVENT.UNLESS.REQUIRED.BY | 
| 668c0 |  20 41 50 50 4c 49 43 41 42 4c 45 20 4c 41 57 20    4f 52 20 41 47 52 45 45 44 20 54 4f 20 49 4e 20  | .APPLICABLE.LAW.OR.AGREED.TO.IN. | 
| 668e0 |  57 52 49 54 49 4e 47 0a 57 49 4c 4c 20 41 4e 59    20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c 44 45  | WRITING.WILL.ANY.COPYRIGHT.HOLDE | 
| 66900 |  52 2c 20 4f 52 20 41 4e 59 20 4f 54 48 45 52 20    50 41 52 54 59 20 57 48 4f 20 4d 4f 44 49 46 49  | R,.OR.ANY.OTHER.PARTY.WHO.MODIFI | 
| 66920 |  45 53 20 41 4e 44 2f 4f 52 20 43 4f 4e 56 45 59    53 0a 54 48 45 20 50 52 4f 47 52 41 4d 20 41 53  | ES.AND/OR.CONVEYS.THE.PROGRAM.AS | 
| 66940 |  20 50 45 52 4d 49 54 54 45 44 20 41 42 4f 56 45    2c 20 42 45 20 4c 49 41 42 4c 45 20 54 4f 20 59  | .PERMITTED.ABOVE,.BE.LIABLE.TO.Y | 
| 66960 |  4f 55 20 46 4f 52 20 44 41 4d 41 47 45 53 2c 20    49 4e 43 4c 55 44 49 4e 47 20 41 4e 59 0a 47 45  | OU.FOR.DAMAGES,.INCLUDING.ANY.GE | 
| 66980 |  4e 45 52 41 4c 2c 20 53 50 45 43 49 41 4c 2c 20    49 4e 43 49 44 45 4e 54 41 4c 20 4f 52 20 43 4f  | NERAL,.SPECIAL,.INCIDENTAL.OR.CO | 
| 669a0 |  4e 53 45 51 55 45 4e 54 49 41 4c 20 44 41 4d 41    47 45 53 20 41 52 49 53 49 4e 47 20 4f 55 54 20  | NSEQUENTIAL.DAMAGES.ARISING.OUT. | 
| 669c0 |  4f 46 20 54 48 45 0a 55 53 45 20 4f 52 20 49 4e    41 42 49 4c 49 54 59 20 54 4f 20 55 53 45 20 54  | OF.THE.USE.OR.INABILITY.TO.USE.T | 
| 669e0 |  48 45 20 50 52 4f 47 52 41 4d 20 28 49 4e 43 4c    55 44 49 4e 47 20 42 55 54 20 4e 4f 54 20 4c 49  | HE.PROGRAM.(INCLUDING.BUT.NOT.LI | 
| 66a00 |  4d 49 54 45 44 20 54 4f 20 4c 4f 53 53 20 4f 46    0a 44 41 54 41 20 4f 52 20 44 41 54 41 20 42 45  | MITED.TO.LOSS.OF.DATA.OR.DATA.BE | 
| 66a20 |  49 4e 47 20 52 45 4e 44 45 52 45 44 20 49 4e 41    43 43 55 52 41 54 45 20 4f 52 20 4c 4f 53 53 45  | ING.RENDERED.INACCURATE.OR.LOSSE | 
| 66a40 |  53 20 53 55 53 54 41 49 4e 45 44 20 42 59 20 59    4f 55 20 4f 52 20 54 48 49 52 44 0a 50 41 52 54  | S.SUSTAINED.BY.YOU.OR.THIRD.PART | 
| 66a60 |  49 45 53 20 4f 52 20 41 20 46 41 49 4c 55 52 45    20 4f 46 20 54 48 45 20 50 52 4f 47 52 41 4d 20  | IES.OR.A.FAILURE.OF.THE.PROGRAM. | 
| 66a80 |  54 4f 20 4f 50 45 52 41 54 45 20 57 49 54 48 20    41 4e 59 20 4f 54 48 45 52 20 50 52 4f 47 52 41  | TO.OPERATE.WITH.ANY.OTHER.PROGRA | 
| 66aa0 |  4d 53 29 2c 0a 45 56 45 4e 20 49 46 20 53 55 43    48 20 48 4f 4c 44 45 52 20 4f 52 20 4f 54 48 45  | MS),.EVEN.IF.SUCH.HOLDER.OR.OTHE | 
| 66ac0 |  52 20 50 41 52 54 59 20 48 41 53 20 42 45 45 4e    20 41 44 56 49 53 45 44 20 4f 46 20 54 48 45 20  | R.PARTY.HAS.BEEN.ADVISED.OF.THE. | 
| 66ae0 |  50 4f 53 53 49 42 49 4c 49 54 59 20 4f 46 0a 53    55 43 48 20 44 41 4d 41 47 45 53 2e 0a 0a 20 20  | POSSIBILITY.OF.SUCH.DAMAGES..... | 
| 66b00 |  31 37 2e 20 49 6e 74 65 72 70 72 65 74 61 74 69    6f 6e 20 6f 66 20 53 65 63 74 69 6f 6e 73 20 31  | 17..Interpretation.of.Sections.1 | 
| 66b20 |  35 20 61 6e 64 20 31 36 2e 0a 0a 20 20 49 66 20    74 68 65 20 64 69 73 63 6c 61 69 6d 65 72 20 6f  | 5.and.16.....If.the.disclaimer.o | 
| 66b40 |  66 20 77 61 72 72 61 6e 74 79 20 61 6e 64 20 6c    69 6d 69 74 61 74 69 6f 6e 20 6f 66 20 6c 69 61  | f.warranty.and.limitation.of.lia | 
| 66b60 |  62 69 6c 69 74 79 20 70 72 6f 76 69 64 65 64 0a    61 62 6f 76 65 20 63 61 6e 6e 6f 74 20 62 65 20  | bility.provided.above.cannot.be. | 
| 66b80 |  67 69 76 65 6e 20 6c 6f 63 61 6c 20 6c 65 67 61    6c 20 65 66 66 65 63 74 20 61 63 63 6f 72 64 69  | given.local.legal.effect.accordi | 
| 66ba0 |  6e 67 20 74 6f 20 74 68 65 69 72 20 74 65 72 6d    73 2c 0a 72 65 76 69 65 77 69 6e 67 20 63 6f 75  | ng.to.their.terms,.reviewing.cou | 
| 66bc0 |  72 74 73 20 73 68 61 6c 6c 20 61 70 70 6c 79 20    6c 6f 63 61 6c 20 6c 61 77 20 74 68 61 74 20 6d  | rts.shall.apply.local.law.that.m | 
| 66be0 |  6f 73 74 20 63 6c 6f 73 65 6c 79 20 61 70 70 72    6f 78 69 6d 61 74 65 73 0a 61 6e 20 61 62 73 6f  | ost.closely.approximates.an.abso | 
| 66c00 |  6c 75 74 65 20 77 61 69 76 65 72 20 6f 66 20 61    6c 6c 20 63 69 76 69 6c 20 6c 69 61 62 69 6c 69  | lute.waiver.of.all.civil.liabili | 
| 66c20 |  74 79 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e    20 77 69 74 68 20 74 68 65 0a 50 72 6f 67 72 61  | ty.in.connection.with.the.Progra | 
| 66c40 |  6d 2c 20 75 6e 6c 65 73 73 20 61 20 77 61 72 72    61 6e 74 79 20 6f 72 20 61 73 73 75 6d 70 74 69  | m,.unless.a.warranty.or.assumpti | 
| 66c60 |  6f 6e 20 6f 66 20 6c 69 61 62 69 6c 69 74 79 20    61 63 63 6f 6d 70 61 6e 69 65 73 20 61 0a 63 6f  | on.of.liability.accompanies.a.co | 
| 66c80 |  70 79 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61    6d 20 69 6e 20 72 65 74 75 72 6e 20 66 6f 72 20  | py.of.the.Program.in.return.for. | 
| 66ca0 |  61 20 66 65 65 2e 0a 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 45 4e 44  | a.fee........................END | 
| 66cc0 |  20 4f 46 20 54 45 52 4d 53 20 41 4e 44 20 43 4f    4e 44 49 54 49 4f 4e 53 0a 0a 20 20 20 20 20 20  | .OF.TERMS.AND.CONDITIONS........ | 
| 66ce0 |  20 20 20 20 20 20 48 6f 77 20 74 6f 20 41 70 70    6c 79 20 54 68 65 73 65 20 54 65 72 6d 73 20 74  | ......How.to.Apply.These.Terms.t | 
| 66d00 |  6f 20 59 6f 75 72 20 4e 65 77 20 50 72 6f 67 72    61 6d 73 0a 0a 20 20 49 66 20 79 6f 75 20 64 65  | o.Your.New.Programs....If.you.de | 
| 66d20 |  76 65 6c 6f 70 20 61 20 6e 65 77 20 70 72 6f 67    72 61 6d 2c 20 61 6e 64 20 79 6f 75 20 77 61 6e  | velop.a.new.program,.and.you.wan | 
| 66d40 |  74 20 69 74 20 74 6f 20 62 65 20 6f 66 20 74 68    65 20 67 72 65 61 74 65 73 74 0a 70 6f 73 73 69  | t.it.to.be.of.the.greatest.possi | 
| 66d60 |  62 6c 65 20 75 73 65 20 74 6f 20 74 68 65 20 70    75 62 6c 69 63 2c 20 74 68 65 20 62 65 73 74 20  | ble.use.to.the.public,.the.best. | 
| 66d80 |  77 61 79 20 74 6f 20 61 63 68 69 65 76 65 20 74    68 69 73 20 69 73 20 74 6f 20 6d 61 6b 65 20 69  | way.to.achieve.this.is.to.make.i | 
| 66da0 |  74 0a 66 72 65 65 20 73 6f 66 74 77 61 72 65 20    77 68 69 63 68 20 65 76 65 72 79 6f 6e 65 20 63  | t.free.software.which.everyone.c | 
| 66dc0 |  61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20    61 6e 64 20 63 68 61 6e 67 65 20 75 6e 64 65 72  | an.redistribute.and.change.under | 
| 66de0 |  20 74 68 65 73 65 20 74 65 72 6d 73 2e 0a 0a 20    20 54 6f 20 64 6f 20 73 6f 2c 20 61 74 74 61 63  | .these.terms.....To.do.so,.attac | 
| 66e00 |  68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20    6e 6f 74 69 63 65 73 20 74 6f 20 74 68 65 20 70  | h.the.following.notices.to.the.p | 
| 66e20 |  72 6f 67 72 61 6d 2e 20 20 49 74 20 69 73 20 73    61 66 65 73 74 0a 74 6f 20 61 74 74 61 63 68 20  | rogram...It.is.safest.to.attach. | 
| 66e40 |  74 68 65 6d 20 74 6f 20 74 68 65 20 73 74 61 72    74 20 6f 66 20 65 61 63 68 20 73 6f 75 72 63 65  | them.to.the.start.of.each.source | 
| 66e60 |  20 66 69 6c 65 20 74 6f 20 6d 6f 73 74 20 65 66    66 65 63 74 69 76 65 6c 79 0a 73 74 61 74 65 20  | .file.to.most.effectively.state. | 
| 66e80 |  74 68 65 20 65 78 63 6c 75 73 69 6f 6e 20 6f 66    20 77 61 72 72 61 6e 74 79 3b 20 61 6e 64 20 65  | the.exclusion.of.warranty;.and.e | 
| 66ea0 |  61 63 68 20 66 69 6c 65 20 73 68 6f 75 6c 64 20    68 61 76 65 20 61 74 20 6c 65 61 73 74 0a 74 68  | ach.file.should.have.at.least.th | 
| 66ec0 |  65 20 22 63 6f 70 79 72 69 67 68 74 22 20 6c 69    6e 65 20 61 6e 64 20 61 20 70 6f 69 6e 74 65 72  | e."copyright".line.and.a.pointer | 
| 66ee0 |  20 74 6f 20 77 68 65 72 65 20 74 68 65 20 66 75    6c 6c 20 6e 6f 74 69 63 65 20 69 73 20 66 6f 75  | .to.where.the.full.notice.is.fou | 
| 66f00 |  6e 64 2e 0a 0a 20 20 20 20 7b 6f 6e 65 20 6c 69    6e 65 20 74 6f 20 67 69 76 65 20 74 68 65 20 70  | nd.......{one.line.to.give.the.p | 
| 66f20 |  72 6f 67 72 61 6d 27 73 20 6e 61 6d 65 20 61 6e    64 20 61 20 62 72 69 65 66 20 69 64 65 61 20 6f  | rogram's.name.and.a.brief.idea.o | 
| 66f40 |  66 20 77 68 61 74 20 69 74 20 64 6f 65 73 2e 7d    0a 20 20 20 20 43 6f 70 79 72 69 67 68 74 20 28  | f.what.it.does.}.....Copyright.( | 
| 66f60 |  43 29 20 7b 79 65 61 72 7d 20 20 7b 6e 61 6d 65    20 6f 66 20 61 75 74 68 6f 72 7d 0a 0a 20 20 20  | C).{year}..{name.of.author}..... | 
| 66f80 |  20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73    20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3a 20  | .This.program.is.free.software:. | 
| 66fa0 |  79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69    62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d  | you.can.redistribute.it.and/or.m | 
| 66fc0 |  6f 64 69 66 79 0a 20 20 20 20 69 74 20 75 6e 64    65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20  | odify.....it.under.the.terms.of. | 
| 66fe0 |  74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20    50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61  | the.GNU.General.Public.License.a | 
| 67000 |  73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 20    20 20 20 74 68 65 20 46 72 65 65 20 53 6f 66 74  | s.published.by.....the.Free.Soft | 
| 67020 |  77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c    20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20  | ware.Foundation,.either.version. | 
| 67040 |  33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65    2c 20 6f 72 0a 20 20 20 20 28 61 74 20 79 6f 75  | 3.of.the.License,.or.....(at.you | 
| 67060 |  72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61    74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20  | r.option).any.later.version..... | 
| 67080 |  20 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69    73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e  | ..This.program.is.distributed.in | 
| 670a0 |  20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69    74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c  | .the.hope.that.it.will.be.useful | 
| 670c0 |  2c 0a 20 20 20 20 62 75 74 20 57 49 54 48 4f 55    54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20  | ,.....but.WITHOUT.ANY.WARRANTY;. | 
| 670e0 |  77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65    20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74  | without.even.the.implied.warrant | 
| 67100 |  79 20 6f 66 0a 20 20 20 20 4d 45 52 43 48 41 4e    54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e  | y.of.....MERCHANTABILITY.or.FITN | 
| 67120 |  45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43    55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53  | ESS.FOR.A.PARTICULAR.PURPOSE...S | 
| 67140 |  65 65 20 74 68 65 0a 20 20 20 20 47 4e 55 20 47    65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69  | ee.the.....GNU.General.Public.Li | 
| 67160 |  63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64    65 74 61 69 6c 73 2e 0a 0a 20 20 20 20 59 6f 75  | cense.for.more.details.......You | 
| 67180 |  20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63    65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20  | .should.have.received.a.copy.of. | 
| 671a0 |  74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20    50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 20  | the.GNU.General.Public.License.. | 
| 671c0 |  20 20 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68    69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20  | ...along.with.this.program...If. | 
| 671e0 |  6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a    2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69  | not,.see.<https://www.gnu.org/li | 
| 67200 |  63 65 6e 73 65 73 2f 3e 2e 0a 0a 41 6c 73 6f 20    61 64 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  | censes/>...Also.add.information. | 
| 67220 |  6f 6e 20 68 6f 77 20 74 6f 20 63 6f 6e 74 61 63    74 20 79 6f 75 20 62 79 20 65 6c 65 63 74 72 6f  | on.how.to.contact.you.by.electro | 
| 67240 |  6e 69 63 20 61 6e 64 20 70 61 70 65 72 20 6d 61    69 6c 2e 0a 0a 20 20 49 66 20 74 68 65 20 70 72  | nic.and.paper.mail.....If.the.pr | 
| 67260 |  6f 67 72 61 6d 20 64 6f 65 73 20 74 65 72 6d 69    6e 61 6c 20 69 6e 74 65 72 61 63 74 69 6f 6e 2c  | ogram.does.terminal.interaction, | 
| 67280 |  20 6d 61 6b 65 20 69 74 20 6f 75 74 70 75 74 20    61 20 73 68 6f 72 74 0a 6e 6f 74 69 63 65 20 6c  | .make.it.output.a.short.notice.l | 
| 672a0 |  69 6b 65 20 74 68 69 73 20 77 68 65 6e 20 69 74    20 73 74 61 72 74 73 20 69 6e 20 61 6e 20 69 6e  | ike.this.when.it.starts.in.an.in | 
| 672c0 |  74 65 72 61 63 74 69 76 65 20 6d 6f 64 65 3a 0a    0a 20 20 20 20 7b 70 72 6f 6a 65 63 74 7d 20 20  | teractive.mode:......{project}.. | 
| 672e0 |  43 6f 70 79 72 69 67 68 74 20 28 43 29 20 7b 79    65 61 72 7d 20 20 7b 66 75 6c 6c 6e 61 6d 65 7d  | Copyright.(C).{year}..{fullname} | 
| 67300 |  0a 20 20 20 20 54 68 69 73 20 70 72 6f 67 72 61    6d 20 63 6f 6d 65 73 20 77 69 74 68 20 41 42 53  | .....This.program.comes.with.ABS | 
| 67320 |  4f 4c 55 54 45 4c 59 20 4e 4f 20 57 41 52 52 41    4e 54 59 3b 20 66 6f 72 20 64 65 74 61 69 6c 73  | OLUTELY.NO.WARRANTY;.for.details | 
| 67340 |  20 74 79 70 65 20 60 73 68 6f 77 20 77 27 2e 0a    20 20 20 20 54 68 69 73 20 69 73 20 66 72 65 65  | .type.`show.w'......This.is.free | 
| 67360 |  20 73 6f 66 74 77 61 72 65 2c 20 61 6e 64 20 79    6f 75 20 61 72 65 20 77 65 6c 63 6f 6d 65 20 74  | .software,.and.you.are.welcome.t | 
| 67380 |  6f 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69    74 0a 20 20 20 20 75 6e 64 65 72 20 63 65 72 74  | o.redistribute.it.....under.cert | 
| 673a0 |  61 69 6e 20 63 6f 6e 64 69 74 69 6f 6e 73 3b 20    74 79 70 65 20 60 73 68 6f 77 20 63 27 20 66 6f  | ain.conditions;.type.`show.c'.fo | 
| 673c0 |  72 20 64 65 74 61 69 6c 73 2e 0a 0a 54 68 65 20    68 79 70 6f 74 68 65 74 69 63 61 6c 20 63 6f 6d  | r.details...The.hypothetical.com | 
| 673e0 |  6d 61 6e 64 73 20 60 73 68 6f 77 20 77 27 20 61    6e 64 20 60 73 68 6f 77 20 63 27 20 73 68 6f 75  | mands.`show.w'.and.`show.c'.shou | 
| 67400 |  6c 64 20 73 68 6f 77 20 74 68 65 20 61 70 70 72    6f 70 72 69 61 74 65 0a 70 61 72 74 73 20 6f 66  | ld.show.the.appropriate.parts.of | 
| 67420 |  20 74 68 65 20 47 65 6e 65 72 61 6c 20 50 75 62    6c 69 63 20 4c 69 63 65 6e 73 65 2e 20 20 4f 66  | .the.General.Public.License...Of | 
| 67440 |  20 63 6f 75 72 73 65 2c 20 79 6f 75 72 20 70 72    6f 67 72 61 6d 27 73 20 63 6f 6d 6d 61 6e 64 73  | .course,.your.program's.commands | 
| 67460 |  0a 6d 69 67 68 74 20 62 65 20 64 69 66 66 65 72    65 6e 74 3b 20 66 6f 72 20 61 20 47 55 49 20 69  | .might.be.different;.for.a.GUI.i | 
| 67480 |  6e 74 65 72 66 61 63 65 2c 20 79 6f 75 20 77 6f    75 6c 64 20 75 73 65 20 61 6e 20 22 61 62 6f 75  | nterface,.you.would.use.an."abou | 
| 674a0 |  74 20 62 6f 78 22 2e 0a 0a 20 20 59 6f 75 20 73    68 6f 75 6c 64 20 61 6c 73 6f 20 67 65 74 20 79  | t.box".....You.should.also.get.y | 
| 674c0 |  6f 75 72 20 65 6d 70 6c 6f 79 65 72 20 28 69 66    20 79 6f 75 20 77 6f 72 6b 20 61 73 20 61 20 70  | our.employer.(if.you.work.as.a.p | 
| 674e0 |  72 6f 67 72 61 6d 6d 65 72 29 20 6f 72 20 73 63    68 6f 6f 6c 2c 0a 69 66 20 61 6e 79 2c 20 74 6f  | rogrammer).or.school,.if.any,.to | 
| 67500 |  20 73 69 67 6e 20 61 20 22 63 6f 70 79 72 69 67    68 74 20 64 69 73 63 6c 61 69 6d 65 72 22 20 66  | .sign.a."copyright.disclaimer".f | 
| 67520 |  6f 72 20 74 68 65 20 70 72 6f 67 72 61 6d 2c 20    69 66 20 6e 65 63 65 73 73 61 72 79 2e 0a 46 6f  | or.the.program,.if.necessary..Fo | 
| 67540 |  72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69    6f 6e 20 6f 6e 20 74 68 69 73 2c 20 61 6e 64 20  | r.more.information.on.this,.and. | 
| 67560 |  68 6f 77 20 74 6f 20 61 70 70 6c 79 20 61 6e 64    20 66 6f 6c 6c 6f 77 20 74 68 65 20 47 4e 55 20  | how.to.apply.and.follow.the.GNU. | 
| 67580 |  47 50 4c 2c 20 73 65 65 0a 3c 68 74 74 70 73 3a    2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69  | GPL,.see.<https://www.gnu.org/li | 
| 675a0 |  63 65 6e 73 65 73 2f 3e 2e 0a 0a 20 20 54 68 65    20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62  | censes/>.....The.GNU.General.Pub | 
| 675c0 |  6c 69 63 20 4c 69 63 65 6e 73 65 20 64 6f 65 73    20 6e 6f 74 20 70 65 72 6d 69 74 20 69 6e 63 6f  | lic.License.does.not.permit.inco | 
| 675e0 |  72 70 6f 72 61 74 69 6e 67 20 79 6f 75 72 20 70    72 6f 67 72 61 6d 0a 69 6e 74 6f 20 70 72 6f 70  | rporating.your.program.into.prop | 
| 67600 |  72 69 65 74 61 72 79 20 70 72 6f 67 72 61 6d 73    2e 20 20 49 66 20 79 6f 75 72 20 70 72 6f 67 72  | rietary.programs...If.your.progr | 
| 67620 |  61 6d 20 69 73 20 61 20 73 75 62 72 6f 75 74 69    6e 65 20 6c 69 62 72 61 72 79 2c 20 79 6f 75 0a  | am.is.a.subroutine.library,.you. | 
| 67640 |  6d 61 79 20 63 6f 6e 73 69 64 65 72 20 69 74 20    6d 6f 72 65 20 75 73 65 66 75 6c 20 74 6f 20 70  | may.consider.it.more.useful.to.p | 
| 67660 |  65 72 6d 69 74 20 6c 69 6e 6b 69 6e 67 20 70 72    6f 70 72 69 65 74 61 72 79 20 61 70 70 6c 69 63  | ermit.linking.proprietary.applic | 
| 67680 |  61 74 69 6f 6e 73 20 77 69 74 68 0a 74 68 65 20    6c 69 62 72 61 72 79 2e 20 20 49 66 20 74 68 69  | ations.with.the.library...If.thi | 
| 676a0 |  73 20 69 73 20 77 68 61 74 20 79 6f 75 20 77 61    6e 74 20 74 6f 20 64 6f 2c 20 75 73 65 20 74 68  | s.is.what.you.want.to.do,.use.th | 
| 676c0 |  65 20 47 4e 55 20 4c 65 73 73 65 72 20 47 65 6e    65 72 61 6c 0a 50 75 62 6c 69 63 20 4c 69 63 65  | e.GNU.Lesser.General.Public.Lice | 
| 676e0 |  6e 73 65 20 69 6e 73 74 65 61 64 20 6f 66 20 74    68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 42 75  | nse.instead.of.this.License...Bu | 
| 67700 |  74 20 66 69 72 73 74 2c 20 70 6c 65 61 73 65 20    72 65 61 64 0a 3c 68 74 74 70 73 3a 2f 2f 77 77  | t.first,.please.read.<https://ww | 
| 67720 |  77 2e 67 6e 75 2e 6f 72 67 2f 70 68 69 6c 6f 73    6f 70 68 79 2f 77 68 79 2d 6e 6f 74 2d 6c 67 70  | w.gnu.org/philosophy/why-not-lgp | 
| 67740 |  6c 2e 68 74 6d 6c 3e 2e 0a 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | l.html>......................... | 
| 67760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 677a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 677c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 677e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67800 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00  | gptel-0.9.8.5/gptel-pkg.el...... | 
| 67820 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67840 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67860 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 67880 |  30 30 30 30 37 33 32 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 36 36 33 00 20 30 00 00 00  | 0000732.00000000000.013663..0... | 
| 678a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 678c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 678e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67900 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 67920 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 67940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 679a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 679c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 679e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67a00 |  3b 3b 20 47 65 6e 65 72 61 74 65 64 20 70 61 63    6b 61 67 65 20 64 65 73 63 72 69 70 74 69 6f 6e  | ;;.Generated.package.description | 
| 67a20 |  20 66 72 6f 6d 20 67 70 74 65 6c 2e 65 6c 20 20    2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70  | .from.gptel.el..-*-.no-byte-comp | 
| 67a40 |  69 6c 65 3a 20 74 20 2d 2a 2d 0a 28 64 65 66 69    6e 65 2d 70 61 63 6b 61 67 65 20 22 67 70 74 65  | ile:.t.-*-.(define-package."gpte | 
| 67a60 |  6c 22 20 22 30 2e 39 2e 38 2e 35 22 20 22 49 6e    74 65 72 61 63 74 20 77 69 74 68 20 43 68 61 74  | l"."0.9.8.5"."Interact.with.Chat | 
| 67a80 |  47 50 54 20 6f 72 20 6f 74 68 65 72 20 4c 4c 4d    73 22 20 27 28 28 65 6d 61 63 73 20 22 32 37 2e  | GPT.or.other.LLMs".'((emacs."27. | 
| 67aa0 |  31 22 29 20 28 74 72 61 6e 73 69 65 6e 74 20 22    30 2e 37 2e 34 22 29 20 28 63 6f 6d 70 61 74 20  | 1").(transient."0.7.4").(compat. | 
| 67ac0 |  22 32 39 2e 31 2e 34 2e 31 22 29 29 20 3a 63 6f    6d 6d 69 74 20 22 61 35 61 66 31 35 63 37 37 30  | "29.1.4.1")).:commit."a5af15c770 | 
| 67ae0 |  62 36 36 61 36 31 64 30 36 30 39 61 37 33 36 65    31 64 62 33 37 34 39 35 36 35 35 35 35 39 22 20  | b66a61d0609a736e1db37495655559". | 
| 67b00 |  3a 61 75 74 68 6f 72 73 20 27 28 28 22 4b 61 72    74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72  | :authors.'(("Karthik.Chikmagalur | 
| 67b20 |  22 20 2e 20 22 6b 61 72 74 68 69 6b 2e 63 68 69    6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63  | "..."karthik.chikmagalur@gmail.c | 
| 67b40 |  6f 6d 22 29 29 20 3a 6d 61 69 6e 74 61 69 6e 65    72 20 27 28 22 4b 61 72 74 68 69 6b 20 43 68 69  | om")).:maintainer.'("Karthik.Chi | 
| 67b60 |  6b 6d 61 67 61 6c 75 72 22 20 2e 20 22 6b 61 72    74 68 69 6b 2e 63 68 69 6b 6d 61 67 61 6c 75 72  | kmagalur"..."karthik.chikmagalur | 
| 67b80 |  40 67 6d 61 69 6c 2e 63 6f 6d 22 29 20 3a 6b 65    79 77 6f 72 64 73 20 27 28 22 63 6f 6e 76 65 6e  | @gmail.com").:keywords.'("conven | 
| 67ba0 |  69 65 6e 63 65 22 20 22 74 6f 6f 6c 73 22 29 20    3a 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69  | ience"."tools").:url."https://gi | 
| 67bc0 |  74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e    6b 2f 67 70 74 65 6c 22 29 0a 00 00 00 00 00 00  | thub.com/karthink/gptel")....... | 
| 67be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67c00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 67 65 6d 69 6e 69 2e 65 6c 00 00 00  | gptel-0.9.8.5/gptel-gemini.el... | 
| 67c20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67c40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67c60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 67c80 |  30 30 36 34 33 34 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 33 35 37 00 20 30 00 00 00  | 0064340.00000000000.014357..0... | 
| 67ca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67cc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67ce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67d00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 67d20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 67d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 67e00 |  3b 3b 3b 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69    2e 65 6c 20 2d 2d 2d 20 20 47 65 6d 69 6e 69 20  | ;;;.gptel-gemini.el.---..Gemini. | 
| 67e20 |  73 75 70 70 70 6f 72 74 20 66 6f 72 20 67 70 74    65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d  | suppport.for.gptel..-*-.lexical- | 
| 67e40 |  62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a    0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43  | binding:.t;.-*-..;;.Copyright.(C | 
| 67e60 |  29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61 72    74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72  | ).2023-2025..Karthik.Chikmagalur | 
| 67e80 |  0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61 72    74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72  | ..;;.Author:.Karthik.Chikmagalur | 
| 67ea0 |  20 3c 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61 67    61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a  | .<karthikchikmagalur@gmail.com>. | 
| 67ec0 |  0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d    20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72  | .;;.This.program.is.free.softwar | 
| 67ee0 |  65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73    74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f  | e;.you.can.redistribute.it.and/o | 
| 67f00 |  72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75    6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f  | r.modify.;;.it.under.the.terms.o | 
| 67f20 |  66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61    6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65  | f.the.GNU.General.Public.License | 
| 67f40 |  20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79    0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66  | .as.published.by.;;.the.Free.Sof | 
| 67f60 |  74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e    2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e  | tware.Foundation,.either.version | 
| 67f80 |  20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73    65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75  | .3.of.the.License,.or.;;.(at.you | 
| 67fa0 |  72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61    74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b  | r.option).any.later.version...;; | 
| 67fc0 |  20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73    20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20  | .This.program.is.distributed.in. | 
| 67fe0 |  74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74    20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c  | the.hope.that.it.will.be.useful, | 
| 68000 |  0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20    41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69  | .;;.but.WITHOUT.ANY.WARRANTY;.wi | 
| 68020 |  74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69    6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20  | thout.even.the.implied.warranty. | 
| 68040 |  6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42    49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53  | of.;;.MERCHANTABILITY.or.FITNESS | 
| 68060 |  20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41    52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20  | .FOR.A.PARTICULAR.PURPOSE...See. | 
| 68080 |  74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72    61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73  | the.;;.GNU.General.Public.Licens | 
| 680a0 |  65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69    6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75  | e.for.more.details...;;.You.shou | 
| 680c0 |  6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64    20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47  | ld.have.received.a.copy.of.the.G | 
| 680e0 |  4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69    63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f  | NU.General.Public.License.;;.alo | 
| 68100 |  6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f    67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73  | ng.with.this.program...If.not,.s | 
| 68120 |  65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e    67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73  | ee.<https://www.gnu.org/licenses | 
| 68140 |  2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74    61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69  | />...;;;.Commentary:..;;.This.fi | 
| 68160 |  6c 65 20 61 64 64 73 20 73 75 70 70 6f 72 74 20    66 6f 72 20 74 68 65 20 47 65 6d 69 6e 69 20 41  | le.adds.support.for.the.Gemini.A | 
| 68180 |  50 49 20 74 6f 20 67 70 74 65 6c 0a 0a 3b 3b 3b    20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20  | PI.to.gptel..;;;.Code:.(require. | 
| 681a0 |  27 67 70 74 65 6c 29 0a 28 72 65 71 75 69 72 65    20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 72  | 'gptel).(require.'cl-generic).(r | 
| 681c0 |  65 71 75 69 72 65 20 27 6d 61 70 29 0a 28 65 76    61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 20  | equire.'map).(eval-when-compile. | 
| 681e0 |  28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62    29 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e  | (require.'cl-lib))..(declare-fun | 
| 68200 |  63 74 69 6f 6e 20 70 72 6f 70 2d 6d 61 74 63 68    2d 76 61 6c 75 65 20 22 74 65 78 74 2d 70 72 6f  | ction.prop-match-value."text-pro | 
| 68220 |  70 65 72 74 79 2d 73 65 61 72 63 68 22 29 0a 28    64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e  | perty-search").(declare-function | 
| 68240 |  20 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73    65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 22  | .text-property-search-backward." | 
| 68260 |  74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65    61 72 63 68 22 29 0a 28 64 65 63 6c 61 72 65 2d  | text-property-search").(declare- | 
| 68280 |  66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65    61 64 20 22 6a 73 6f 6e 22 29 0a 28 64 65 63 6c  | function.json-read."json").(decl | 
| 682a0 |  61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70  | are-function.gptel-context--wrap | 
| 682c0 |  20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22    29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74  | ."gptel-context").(declare-funct | 
| 682e0 |  69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78    74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61  | ion.gptel-context--collect-media | 
| 68300 |  20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22    29 0a 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d 6f  | ."gptel-context").(defvar.json-o | 
| 68320 |  62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 3b 3b 3b    20 47 65 6d 69 6e 69 0a 28 63 6c 2d 64 65 66 73  | bject-type)..;;;.Gemini.(cl-defs | 
| 68340 |  74 72 75 63 74 0a 20 20 20 20 28 67 70 74 65 6c    2d 67 65 6d 69 6e 69 20 28 3a 63 6f 6e 73 74 72  | truct.....(gptel-gemini.(:constr | 
| 68360 |  75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b    65 2d 67 65 6d 69 6e 69 29 0a 20 20 20 20 20 20  | uctor.gptel--make-gemini)....... | 
| 68380 |  20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f    70 69 65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20  | ............(:copier.nil)....... | 
| 683a0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 3a 69 6e    63 6c 75 64 65 20 67 70 74 65 6c 2d 62 61 63 6b  | ............(:include.gptel-back | 
| 683c0 |  65 6e 64 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a    20 55 73 69 6e 67 20 61 6c 74 3d 73 73 65 20 69  | end)))..;;.TODO:.Using.alt=sse.i | 
| 683e0 |  6e 20 74 68 65 20 71 75 65 72 79 20 75 72 6c 20    67 65 6e 65 72 61 74 65 73 20 61 6e 20 4f 70 65  | n.the.query.url.generates.an.Ope | 
| 68400 |  6e 41 49 20 73 74 79 6c 65 20 73 74 72 65 61 6d    69 6e 67 0a 3b 3b 20 72 65 73 70 6f 6e 73 65 2c  | nAI.style.streaming.;;.response, | 
| 68420 |  20 77 69 74 68 20 6d 6f 72 65 20 69 6d 6d 65 64    69 61 74 65 20 75 70 64 61 74 65 73 2e 20 20 4d  | .with.more.immediate.updates...M | 
| 68440 |  61 79 62 65 20 77 65 20 73 68 6f 75 6c 64 20 73    77 69 74 63 68 20 74 6f 20 74 68 61 74 20 61 6e  | aybe.we.should.switch.to.that.an | 
| 68460 |  64 0a 3b 3b 20 72 65 77 72 69 74 65 20 74 68 65    20 73 74 72 65 61 6d 20 70 61 72 73 65 72 3f 0a  | d.;;.rewrite.the.stream.parser?. | 
| 68480 |  28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70    74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d  | (cl-defmethod.gptel-curl--parse- | 
| 684a0 |  73 74 72 65 61 6d 20 28 28 5f 62 61 63 6b 65 6e    64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20  | stream.((_backend.gptel-gemini). | 
| 684c0 |  69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 61    20 47 65 6d 69 6e 69 20 64 61 74 61 20 73 74 72  | info)..."Parse.a.Gemini.data.str | 
| 684e0 |  65 61 6d 2e 0a 0a 52 65 74 75 72 6e 20 74 68 65    20 74 65 78 74 20 72 65 73 70 6f 6e 73 65 20 61  | eam...Return.the.text.response.a | 
| 68500 |  63 63 75 6d 75 6c 61 74 65 64 20 73 69 6e 63 65    20 74 68 65 20 6c 61 73 74 20 63 61 6c 6c 20 74  | ccumulated.since.the.last.call.t | 
| 68520 |  6f 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 2e    20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20  | o.this.function...Additionally,. | 
| 68540 |  6d 75 74 61 74 65 20 73 74 61 74 65 20 49 4e 46    4f 20 74 6f 20 61 64 64 20 74 6f 6f 6c 2d 75 73  | mutate.state.INFO.to.add.tool-us | 
| 68560 |  65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 66    20 74 68 65 20 73 74 72 65 61 6d 20 63 6f 6e 74  | e.information.if.the.stream.cont | 
| 68580 |  61 69 6e 73 20 69 74 2e 22 0a 20 20 28 6c 65 74    2a 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73  | ains.it."...(let*.((content-strs | 
| 685a0 |  29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f    6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20  | )).....(condition-case.nil...... | 
| 685c0 |  20 20 20 28 77 68 69 6c 65 20 28 70 72 6f 67 31    20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64  | ...(while.(prog1.(search-forward | 
| 685e0 |  20 22 7b 22 20 6e 69 6c 20 74 29 20 3b 20 77 68    69 6c 65 2d 6c 65 74 20 69 73 20 45 6d 61 63 73  | ."{".nil.t).;.while-let.is.Emacs | 
| 68600 |  20 32 39 2e 31 2b 20 6f 6e 6c 79 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61  | .29.1+.only..................(ba | 
| 68620 |  63 6b 77 61 72 64 2d 63 68 61 72 20 31 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d  | ckward-char.1))...........(save- | 
| 68640 |  6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74  | match-data.............(when-let | 
| 68660 |  2a 20 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70    74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29  | *.((response.(gptel--json-read)) | 
| 68680 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 74 65 78 74 20 28  | .........................(text.( | 
| 686a0 |  67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73    70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20  | gptel--parse-response........... | 
| 686c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20  | .....................(plist-get. | 
| 686e0 |  69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | info.:backend).................. | 
| 68700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65    73 70 6f 6e 73 65 20 69 6e 66 6f 20 27 69 6e 63  | ..............response.info.'inc | 
| 68720 |  6c 75 64 65 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 75 73 68 20 74 65 78 74  | lude)))...............(push.text | 
| 68740 |  20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29    29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20  | .content-strs)))).......(error.. | 
| 68760 |  20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72    20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e  | ......(goto-char.(match-beginnin | 
| 68780 |  67 20 30 29 29 29 29 0a 20 20 20 20 28 61 70 70    6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65  | g.0)))).....(apply.#'concat.(nre | 
| 687a0 |  76 65 72 73 65 20 63 6f 6e 74 65 6e 74 2d 73 74    72 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d  | verse.content-strs))))..(cl-defm | 
| 687c0 |  65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72    73 65 2d 72 65 73 70 6f 6e 73 65 20 28 28 5f 62  | ethod.gptel--parse-response.((_b | 
| 687e0 |  61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d    69 6e 69 29 20 72 65 73 70 6f 6e 73 65 20 69 6e  | ackend.gptel-gemini).response.in | 
| 68800 |  66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fo.............................. | 
| 68820 |  20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61    6c 20 69 6e 63 6c 75 64 65 2d 74 65 78 74 29 0a  | ........&optional.include-text). | 
| 68840 |  20 20 22 50 61 72 73 65 20 61 6e 20 47 65 6d 69    6e 69 20 28 6e 6f 6e 2d 73 74 72 65 61 6d 69 6e  | .."Parse.an.Gemini.(non-streamin | 
| 68860 |  67 29 20 52 45 53 50 4f 4e 53 45 20 61 6e 64 20    72 65 74 75 72 6e 20 72 65 73 70 6f 6e 73 65 20  | g).RESPONSE.and.return.response. | 
| 68880 |  74 65 78 74 2e 0a 0a 4d 75 74 61 74 65 20 73 74    61 74 65 20 49 4e 46 4f 20 77 69 74 68 20 72 65  | text...Mutate.state.INFO.with.re | 
| 688a0 |  73 70 6f 6e 73 65 20 6d 65 74 61 64 61 74 61 2e    0a 0a 49 66 20 49 4e 43 4c 55 44 45 2d 54 45 58  | sponse.metadata...If.INCLUDE-TEX | 
| 688c0 |  54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 69 6e    63 6c 75 64 65 20 72 65 73 70 6f 6e 73 65 20 74  | T.is.non-nil,.include.response.t | 
| 688e0 |  65 78 74 20 69 6e 20 74 68 65 20 70 72 6f 6d 70    74 73 0a 6c 69 73 74 2e 22 0a 20 20 28 6c 65 74  | ext.in.the.prompts.list."...(let | 
| 68900 |  2a 20 28 28 63 61 6e 64 30 20 28 6d 61 70 2d 6e    65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e  | *.((cand0.(map-nested-elt.respon | 
| 68920 |  73 65 20 27 28 3a 63 61 6e 64 69 64 61 74 65 73    20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 28  | se.'(:candidates.0)))..........( | 
| 68940 |  70 61 72 74 73 20 28 6d 61 70 2d 6e 65 73 74 65    64 2d 65 6c 74 20 63 61 6e 64 30 20 27 28 3a 63  | parts.(map-nested-elt.cand0.'(:c | 
| 68960 |  6f 6e 74 65 6e 74 20 3a 70 61 72 74 73 29 29 29    29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74  | ontent.:parts)))).....(plist-put | 
| 68980 |  20 69 6e 66 6f 20 3a 73 74 6f 70 2d 72 65 61 73    6f 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61  | .info.:stop-reason.(plist-get.ca | 
| 689a0 |  6e 64 30 20 3a 66 69 6e 69 73 68 52 65 61 73 6f    6e 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d 70  | nd0.:finishReason)).....(plist-p | 
| 689c0 |  75 74 20 69 6e 66 6f 20 3a 6f 75 74 70 75 74 2d    74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 20 20 20  | ut.info.:output-tokens.......... | 
| 689e0 |  20 20 20 20 20 20 28 6d 61 70 2d 6e 65 73 74 65    64 2d 65 6c 74 0a 20 20 20 20 20 20 20 20 20 20  | ......(map-nested-elt........... | 
| 68a00 |  20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 27    28 3a 75 73 61 67 65 4d 65 74 61 64 61 74 61 20  | ......response.'(:usageMetadata. | 
| 68a20 |  3a 63 61 6e 64 69 64 61 74 65 73 54 6f 6b 65 6e    43 6f 75 6e 74 29 29 29 0a 20 20 20 20 28 63 6c  | :candidatesTokenCount))).....(cl | 
| 68a40 |  2d 6c 6f 6f 70 0a 20 20 20 20 20 66 6f 72 20 70    61 72 74 20 61 63 72 6f 73 73 20 70 61 72 74 73  | -loop......for.part.across.parts | 
| 68a60 |  0a 20 20 20 20 20 66 6f 72 20 74 78 20 3d 20 28    70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a  | ......for.tx.=.(plist-get.part.: | 
| 68a80 |  74 65 78 74 29 0a 20 20 20 20 20 69 66 20 28 61    6e 64 20 74 78 20 28 6e 6f 74 20 28 65 71 20 74  | text)......if.(and.tx.(not.(eq.t | 
| 68aa0 |  78 20 3a 6e 75 6c 6c 29 29 29 0a 20 20 20 20 20    69 66 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61  | x.:null)))......if.(plist-get.pa | 
| 68ac0 |  72 74 20 3a 74 68 6f 75 67 68 74 29 0a 20 20 20    20 20 64 6f 20 28 75 6e 6c 65 73 73 20 28 70 6c  | rt.:thought)......do.(unless.(pl | 
| 68ae0 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65    61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 0a 20  | ist-get.info.:reasoning-block).. | 
| 68b00 |  20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d    70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e  | .........(plist-put.info.:reason | 
| 68b20 |  69 6e 67 2d 62 6c 6f 63 6b 20 27 69 6e 29 29 0a    20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20  | ing-block.'in))......(plist-put. | 
| 68b40 |  69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 20    28 63 6f 6e 63 61 74 20 28 70 6c 69 73 74 2d 67  | info.:reasoning.(concat.(plist-g | 
| 68b60 |  65 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69    6e 67 29 20 74 78 29 29 0a 20 20 20 20 20 65 6c  | et.info.:reasoning).tx))......el | 
| 68b80 |  73 65 20 64 6f 0a 20 20 20 20 20 28 69 66 20 28    65 71 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e  | se.do......(if.(eq.(plist-get.in | 
| 68ba0 |  66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c    6f 63 6b 29 20 27 69 6e 29 0a 20 20 20 20 20 20  | fo.:reasoning-block).'in)....... | 
| 68bc0 |  20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f    20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63  | .(plist-put.info.:reasoning-bloc | 
| 68be0 |  6b 20 74 29 29 0a 20 20 20 20 20 61 6e 64 20 63    6f 6c 6c 65 63 74 20 74 78 20 69 6e 74 6f 20 63  | k.t))......and.collect.tx.into.c | 
| 68c00 |  6f 6e 74 65 6e 74 2d 73 74 72 73 20 65 6e 64 0a    20 20 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c  | ontent-strs.end......else.if.(pl | 
| 68c20 |  69 73 74 2d 67 65 74 20 70 61 72 74 20 3a 66 75    6e 63 74 69 6f 6e 43 61 6c 6c 29 0a 20 20 20 20  | ist-get.part.:functionCall)..... | 
| 68c40 |  20 63 6f 6c 6c 65 63 74 20 28 63 6f 70 79 2d 73    65 71 75 65 6e 63 65 20 69 74 29 20 69 6e 74 6f  | .collect.(copy-sequence.it).into | 
| 68c60 |  20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20 20 66    69 6e 61 6c 6c 79 20 64 6f 20 20 20 20 20 20 20  | .tool-use......finally.do....... | 
| 68c80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 41 64 64 20 74 65 78 74 20 61 6e 64 20  | ..................;Add.text.and. | 
| 68ca0 |  74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f 20 70 72    6f 6d 70 74 73 20 6c 69 73 74 0a 20 20 20 20 20  | tool-calls.to.prompts.list...... | 
| 68cc0 |  28 77 68 65 6e 20 28 6f 72 20 74 6f 6f 6c 2d 75    73 65 20 69 6e 63 6c 75 64 65 2d 74 65 78 74 29  | (when.(or.tool-use.include-text) | 
| 68ce0 |  0a 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28    64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74 20  | ........(let*.((data.(plist-get. | 
| 68d00 |  69 6e 66 6f 20 3a 64 61 74 61 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 6d  | info.:data))...............(prom | 
| 68d20 |  70 74 73 20 28 70 6c 69 73 74 2d 67 65 74 20 64    61 74 61 20 3a 63 6f 6e 74 65 6e 74 73 29 29 0a  | pts.(plist-get.data.:contents)). | 
| 68d40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c    61 73 74 2d 70 72 6f 6d 70 74 20 28 61 72 65 66  | ..............(last-prompt.(aref | 
| 68d60 |  20 70 72 6f 6d 70 74 73 20 28 31 2d 20 28 6c 65    6e 67 74 68 20 70 72 6f 6d 70 74 73 29 29 29 29  | .prompts.(1-.(length.prompts)))) | 
| 68d80 |  29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28    65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65 74  | )..........(if.(equal.(plist-get | 
| 68da0 |  20 6c 61 73 74 2d 70 72 6f 6d 70 74 20 3a 72 6f    6c 65 29 20 22 6d 6f 64 65 6c 22 29 0a 20 20 20  | .last-prompt.:role)."model").... | 
| 68dc0 |  20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 68 65    6e 20 73 74 72 65 61 6d 69 6e 67 2c 20 74 68 65  | ..........;;.When.streaming,.the | 
| 68de0 |  20 6c 61 73 74 20 70 72 6f 6d 70 74 20 6d 61 79    20 61 6c 72 65 61 64 79 20 68 61 76 65 20 74 68  | .last.prompt.may.already.have.th | 
| 68e00 |  65 20 72 6f 6c 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 3b 3b 20 22 6d 6f 64 65 6c 22 20 66  | e.role..............;;."model".f | 
| 68e20 |  72 6f 6d 20 70 72 69 6f 72 20 63 61 6c 6c 73 20    74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  | rom.prior.calls.to.this.function | 
| 68e40 |  2e 20 20 41 70 70 65 6e 64 20 74 6f 20 69 74 73    20 70 61 72 74 73 0a 20 20 20 20 20 20 20 20 20  | ...Append.to.its.parts.......... | 
| 68e60 |  20 20 20 20 3b 3b 20 69 6e 73 74 65 61 64 20 6f    66 20 61 64 64 69 6e 67 20 61 20 6e 65 77 20 6d  | ....;;.instead.of.adding.a.new.m | 
| 68e80 |  6f 64 65 6c 20 72 6f 6c 65 20 74 68 65 6e 2e 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c  | odel.role.then...............(pl | 
| 68ea0 |  69 73 74 2d 70 75 74 20 6c 61 73 74 2d 70 72 6f    6d 70 74 20 3a 70 61 72 74 73 0a 20 20 20 20 20  | ist-put.last-prompt.:parts...... | 
| 68ec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 76 63 6f 6e 63 61 74 20 28 70 6c 69  | ...................(vconcat.(pli | 
| 68ee0 |  73 74 2d 67 65 74 20 6c 61 73 74 2d 70 72 6f 6d    70 74 20 3a 70 61 72 74 73 29 20 70 61 72 74 73  | st-get.last-prompt.:parts).parts | 
| 68f00 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70    6c 69 73 74 2d 70 75 74 20 20 20 20 20 20 20 20  | ))............(plist-put........ | 
| 68f20 |  20 20 20 20 20 20 20 20 20 20 20 3b 6f 74 68 65    72 77 69 73 65 20 63 72 65 61 74 65 20 61 20 6e  | ...........;otherwise.create.a.n | 
| 68f40 |  65 77 20 22 6d 6f 64 65 6c 22 20 72 6f 6c 65 0a    20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61  | ew."model".role.............data | 
| 68f60 |  20 3a 63 6f 6e 74 65 6e 74 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 76 63 6f 6e 63 61 74 20  | .:contents.............(vconcat. | 
| 68f80 |  70 72 6f 6d 70 74 73 20 60 28 28 3a 72 6f 6c 65    20 22 6d 6f 64 65 6c 22 20 3a 70 61 72 74 73 20  | prompts.`((:role."model".:parts. | 
| 68fa0 |  2c 70 61 72 74 73 29 29 29 29 29 29 29 0a 20 20    20 20 20 28 77 68 65 6e 20 74 6f 6f 6c 2d 75 73  | ,parts)))))))......(when.tool-us | 
| 68fc0 |  65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 43 61 70 74 75 72 65 20 74 6f  | e....................;Capture.to | 
| 68fe0 |  6f 6c 20 63 61 6c 6c 20 64 61 74 61 20 66 6f 72    20 72 75 6e 6e 69 6e 67 20 74 6f 6f 6c 73 0a 20  | ol.call.data.for.running.tools.. | 
| 69000 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74    20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 0a  | ......(plist-put.info.:tool-use. | 
| 69020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6e 63 6f 6e 63 20 28 70 6c 69 73 74 2d  | ..................(nconc.(plist- | 
| 69040 |  67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75    73 65 29 20 74 6f 6f 6c 2d 75 73 65 29 29 29 0a  | get.info.:tool-use).tool-use))). | 
| 69060 |  20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74    75 72 6e 0a 20 20 20 20 20 28 61 6e 64 20 63 6f  | .....finally.return......(and.co | 
| 69080 |  6e 74 65 6e 74 2d 73 74 72 73 20 28 61 70 70 6c    79 20 23 27 63 6f 6e 63 61 74 20 63 6f 6e 74 65  | ntent-strs.(apply.#'concat.conte | 
| 690a0 |  6e 74 2d 73 74 72 73 29 29 29 29 29 0a 0a 28 63    6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65  | nt-strs)))))..(cl-defmethod.gpte | 
| 690c0 |  6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20    28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d  | l--request-data.((backend.gptel- | 
| 690e0 |  67 65 6d 69 6e 69 29 20 70 72 6f 6d 70 74 73 29    0a 20 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20  | gemini).prompts)..."JSON.encode. | 
| 69100 |  50 52 4f 4d 50 54 53 20 66 6f 72 20 73 65 6e 64    69 6e 67 20 74 6f 20 47 65 6d 69 6e 69 2e 22 0a  | PROMPTS.for.sending.to.Gemini.". | 
| 69120 |  20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73    2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20  | ..(let.((prompts-plist.......... | 
| 69140 |  60 28 3a 63 6f 6e 74 65 6e 74 73 20 5b 2c 40 70    72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20  | `(:contents.[,@prompts]......... | 
| 69160 |  20 20 20 3a 73 61 66 65 74 79 53 65 74 74 69 6e    67 73 20 5b 28 3a 63 61 74 65 67 6f 72 79 20 22  | ...:safetySettings.[(:category." | 
| 69180 |  48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 48 41    52 41 53 53 4d 45 4e 54 22 0a 20 20 20 20 20 20  | HARM_CATEGORY_HARASSMENT"....... | 
| 691a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 74 68 72 65 73 68 6f 6c  | .......................:threshol | 
| 691c0 |  64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | d."BLOCK_NONE")................. | 
| 691e0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 61    74 65 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54  | ............(:category."HARM_CAT | 
| 69200 |  45 47 4f 52 59 5f 53 45 58 55 41 4c 4c 59 5f 45    58 50 4c 49 43 49 54 22 0a 20 20 20 20 20 20 20  | EGORY_SEXUALLY_EXPLICIT"........ | 
| 69220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 74 68 72 65 73 68 6f 6c 64  | ......................:threshold | 
| 69240 |  20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ."BLOCK_NONE").................. | 
| 69260 |  20 20 20 20 20 20 20 20 20 20 20 28 3a 63 61 74    65 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45  | ...........(:category."HARM_CATE | 
| 69280 |  47 4f 52 59 5f 44 41 4e 47 45 52 4f 55 53 5f 43    4f 4e 54 45 4e 54 22 0a 20 20 20 20 20 20 20 20  | GORY_DANGEROUS_CONTENT"......... | 
| 692a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 74 68 72 65 73 68 6f 6c 64 20  | .....................:threshold. | 
| 692c0 |  22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "BLOCK_NONE")................... | 
| 692e0 |  20 20 20 20 20 20 20 20 20 20 28 3a 63 61 74 65    67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47  | ..........(:category."HARM_CATEG | 
| 69300 |  4f 52 59 5f 48 41 54 45 5f 53 50 45 45 43 48 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ORY_HATE_SPEECH"................ | 
| 69320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74    68 72 65 73 68 6f 6c 64 20 22 42 4c 4f 43 4b 5f  | ..............:threshold."BLOCK_ | 
| 69340 |  4e 4f 4e 45 22 29 5d 29 29 0a 20 20 20 20 20 20    20 20 70 61 72 61 6d 73 29 0a 20 20 20 20 28 69  | NONE")])).........params).....(i | 
| 69360 |  66 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d    6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20  | f.gptel--system-message......... | 
| 69380 |  28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70    74 73 2d 70 6c 69 73 74 20 3a 73 79 73 74 65 6d  | (plist-put.prompts-plist.:system | 
| 693a0 |  5f 69 6e 73 74 72 75 63 74 69 6f 6e 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | _instruction.................... | 
| 693c0 |  60 28 3a 70 61 72 74 73 20 28 3a 74 65 78 74 20    2c 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d  | `(:parts.(:text.,gptel--system-m | 
| 693e0 |  65 73 73 61 67 65 29 29 29 29 0a 20 20 20 20 28    77 68 65 6e 20 67 70 74 65 6c 2d 75 73 65 2d 74  | essage)))).....(when.gptel-use-t | 
| 69400 |  6f 6f 6c 73 0a 20 20 20 20 20 20 28 77 68 65 6e    20 28 65 71 20 67 70 74 65 6c 2d 75 73 65 2d 74  | ools.......(when.(eq.gptel-use-t | 
| 69420 |  6f 6f 6c 73 20 27 66 6f 72 63 65 29 0a 20 20 20    20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20  | ools.'force).........(plist-put. | 
| 69440 |  70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 74    6f 6f 6c 5f 63 6f 6e 66 69 67 0a 20 20 20 20 20  | prompts-plist.:tool_config...... | 
| 69460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28    3a 66 75 6e 63 74 69 6f 6e 5f 63 61 6c 6c 69 6e  | ..............'(:function_callin | 
| 69480 |  67 5f 63 6f 6e 66 69 67 20 28 3a 6d 6f 64 65 20    22 41 4e 59 22 29 29 29 29 0a 20 20 20 20 20 20  | g_config.(:mode."ANY"))))....... | 
| 694a0 |  28 77 68 65 6e 20 67 70 74 65 6c 2d 74 6f 6f 6c    73 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | (when.gptel-tools.........(plist | 
| 694c0 |  2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69    73 74 20 3a 74 6f 6f 6c 73 0a 20 20 20 20 20 20  | -put.prompts-plist.:tools....... | 
| 694e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 73  | .............(gptel--parse-tools | 
| 69500 |  20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 74    6f 6f 6c 73 29 29 29 29 0a 20 20 20 20 28 77 68  | .backend.gptel-tools)))).....(wh | 
| 69520 |  65 6e 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61    74 75 72 65 0a 20 20 20 20 20 20 28 73 65 74 71  | en.gptel-temperature.......(setq | 
| 69540 |  20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70  | .params.............(plist-put.p | 
| 69560 |  61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 65  | arams........................:te | 
| 69580 |  6d 70 65 72 61 74 75 72 65 20 28 6d 61 78 20 67    70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65  | mperature.(max.gptel-temperature | 
| 695a0 |  20 31 2e 30 29 29 29 29 0a 20 20 20 20 28 77 68    65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b  | .1.0)))).....(when.gptel-max-tok | 
| 695c0 |  65 6e 73 0a 20 20 20 20 20 20 28 73 65 74 71 20    70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20  | ens.......(setq.params.......... | 
| 695e0 |  20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 61    72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20  | ...(plist-put.params............ | 
| 69600 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78    4f 75 74 70 75 74 54 6f 6b 65 6e 73 20 67 70 74  | ............:maxOutputTokens.gpt | 
| 69620 |  65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 29    0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c  | el-max-tokens))).....(when.gptel | 
| 69640 |  2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69    6e 67 0a 20 20 20 20 20 20 28 73 65 74 71 20 70  | -include-reasoning.......(setq.p | 
| 69660 |  61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 61 72  | arams.............(plist-put.par | 
| 69680 |  61 6d 73 20 3a 74 68 69 6e 6b 69 6e 67 43 6f 6e    66 69 67 20 27 28 3a 69 6e 63 6c 75 64 65 54 68  | ams.:thinkingConfig.'(:includeTh | 
| 696a0 |  6f 75 67 68 74 73 20 74 29 29 29 29 0a 20 20 20    20 28 77 68 65 6e 20 70 61 72 61 6d 73 0a 20 20  | oughts.t)))).....(when.params... | 
| 696c0 |  20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70    72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20  | ....(plist-put.prompts-plist.... | 
| 696e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 67    65 6e 65 72 61 74 69 6f 6e 43 6f 6e 66 69 67 20  | ..............:generationConfig. | 
| 69700 |  70 61 72 61 6d 73 29 29 0a 20 20 20 20 3b 3b 20    4d 65 72 67 65 20 72 65 71 75 65 73 74 20 70 61  | params)).....;;.Merge.request.pa | 
| 69720 |  72 61 6d 73 20 77 69 74 68 20 6d 6f 64 65 6c 20    61 6e 64 20 62 61 63 6b 65 6e 64 20 70 61 72 61  | rams.with.model.and.backend.para | 
| 69740 |  6d 73 2e 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d    6d 65 72 67 65 2d 70 6c 69 73 74 73 0a 20 20 20  | ms......(gptel--merge-plists.... | 
| 69760 |  20 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a    20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b  | ..prompts-plist......(gptel-back | 
| 69780 |  65 6e 64 2d 72 65 71 75 65 73 74 2d 70 61 72 61    6d 73 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64  | end-request-params.gptel-backend | 
| 697a0 |  29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d    6f 64 65 6c 2d 72 65 71 75 65 73 74 2d 70 61 72  | )......(gptel--model-request-par | 
| 697c0 |  61 6d 73 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c    29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74  | ams..gptel-model))))..(defun.gpt | 
| 697e0 |  65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 69 6c 74 65    72 2d 73 63 68 65 6d 61 20 28 73 63 68 65 6d 61  | el--gemini-filter-schema.(schema | 
| 69800 |  29 0a 20 20 22 44 65 73 74 72 75 63 74 69 76 65    6c 79 20 66 69 6c 74 65 72 20 75 6e 73 75 70 70  | )..."Destructively.filter.unsupp | 
| 69820 |  6f 72 74 65 64 20 61 74 74 72 69 62 75 74 65 73    20 66 72 6f 6d 20 53 43 48 45 4d 41 2e 0a 0a 47  | orted.attributes.from.SCHEMA...G | 
| 69840 |  65 6d 69 6e 69 27 73 20 41 50 49 20 64 6f 65 73    20 6e 6f 74 20 73 75 70 70 6f 72 74 20 60 61 64  | emini's.API.does.not.support.`ad | 
| 69860 |  64 69 74 69 6f 6e 61 6c 50 72 6f 70 65 72 74 69    65 73 27 2e 22 0a 20 20 28 63 6c 2d 72 65 6d 66  | ditionalProperties'."...(cl-remf | 
| 69880 |  20 73 63 68 65 6d 61 20 3a 61 64 64 69 74 69 6f    6e 61 6c 50 72 6f 70 65 72 74 69 65 73 29 0a 20  | .schema.:additionalProperties).. | 
| 698a0 |  20 28 77 68 65 6e 20 28 70 6c 69 73 74 70 20 73    63 68 65 6d 61 29 0a 20 20 20 20 28 63 6c 2d 6c  | .(when.(plistp.schema).....(cl-l | 
| 698c0 |  6f 6f 70 20 66 6f 72 20 28 6b 65 79 20 76 61 6c    29 20 6f 6e 20 73 63 68 65 6d 61 20 62 79 20 23  | oop.for.(key.val).on.schema.by.# | 
| 698e0 |  27 63 64 64 72 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 64 6f 20 28 63 6f 6e 64 0a 20 20 20 20  | 'cddr..............do.(cond..... | 
| 69900 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    52 65 63 75 72 73 69 76 65 6c 79 20 6d 6f 64 69  | .............;;.Recursively.modi | 
| 69920 |  66 79 20 73 63 68 65 6d 61 73 20 77 69 74 68 69    6e 20 76 65 63 74 6f 72 73 20 28 61 6e 79 4f 66  | fy.schemas.within.vectors.(anyOf | 
| 69940 |  2f 61 6c 6c 4f 66 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 71 20  | /allOf)..................((memq. | 
| 69960 |  6b 65 79 20 27 28 3a 61 6e 79 4f 66 20 3a 61 6c    6c 4f 66 29 29 0a 20 20 20 20 20 20 20 20 20 20  | key.'(:anyOf.:allOf))........... | 
| 69980 |  20 20 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73    20 28 69 20 28 6c 65 6e 67 74 68 20 76 61 6c 29  | ........(dotimes.(i.(length.val) | 
| 699a0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 61 73 65 74 20 76 61 6c 20  | ).....................(aset.val. | 
| 699c0 |  69 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69    2d 66 69 6c 74 65 72 2d 73 63 68 65 6d 61 20 28  | i.(gptel--gemini-filter-schema.( | 
| 699e0 |  61 72 65 66 20 76 61 6c 20 69 29 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | aref.val.i)))))................. | 
| 69a00 |  20 3b 3b 20 52 65 63 75 72 73 69 76 65 6c 79 20    6d 6f 64 69 66 79 20 70 6c 69 73 74 20 76 61 6c  | .;;.Recursively.modify.plist.val | 
| 69a20 |  75 65 73 2c 20 77 68 69 63 68 20 6d 61 79 20 63    6f 6e 74 61 69 6e 20 73 75 62 2d 73 63 68 65 6d  | ues,.which.may.contain.sub-schem | 
| 69a40 |  61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 28 70 6c 69 73 74 70 20 76 61 6c  | as..................((plistp.val | 
| 69a60 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 77 68 65 6e 20 28 63 6c 2d 72 65  | )...................(when.(cl-re | 
| 69a80 |  6d 66 20 76 61 6c 20 3a 61 64 64 69 74 69 6f 6e    61 6c 50 72 6f 70 65 72 74 69 65 73 29 0a 20 20  | mf.val.:additionalProperties)... | 
| 69aa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 63 6c 2d 72 65 6d 66 20 28 70 6c 69 73  | ..................(cl-remf.(plis | 
| 69ac0 |  74 2d 67 65 74 20 73 63 68 65 6d 61 20 6b 65 79    29 20 3a 61 64 64 69 74 69 6f 6e 61 6c 50 72 6f  | t-get.schema.key).:additionalPro | 
| 69ae0 |  70 65 72 74 69 65 73 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74  | perties))...................(gpt | 
| 69b00 |  65 6c 2d 2d 67 65 6d 69 6e 69 2d 66 69 6c 74 65    72 2d 73 63 68 65 6d 61 20 76 61 6c 29 29 0a 20  | el--gemini-filter-schema.val)).. | 
| 69b20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 44 65 66 61 75 6c 74 3a 20 64 6f 20 6e  | ................;;.Default:.do.n | 
| 69b40 |  6f 74 68 69 6e 67 20 74 6f 20 6f 74 68 65 72 20    6b 65 79 2d 76 61 6c 75 65 20 70 61 69 72 73 20  | othing.to.other.key-value.pairs. | 
| 69b60 |  79 65 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29  | yet...................(t.nil)))) | 
| 69b80 |  0a 20 20 73 63 68 65 6d 61 29 0a 0a 28 63 6c 2d    64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d  | ...schema)..(cl-defmethod.gptel- | 
| 69ba0 |  2d 70 61 72 73 65 2d 74 6f 6f 6c 73 20 28 28 5f    62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65  | -parse-tools.((_backend.gptel-ge | 
| 69bc0 |  6d 69 6e 69 29 20 74 6f 6f 6c 73 29 0a 20 20 22    50 61 72 73 65 20 54 4f 4f 4c 53 20 74 6f 20 74  | mini).tools)..."Parse.TOOLS.to.t | 
| 69be0 |  68 65 20 47 65 6d 69 6e 69 20 41 50 49 20 74 6f    6f 6c 20 64 65 66 69 6e 69 74 69 6f 6e 20 73 70  | he.Gemini.API.tool.definition.sp | 
| 69c00 |  65 63 2e 0a 0a 54 4f 4f 4c 53 20 69 73 20 61 20    6c 69 73 74 20 6f 66 20 60 67 70 74 65 6c 2d 74  | ec...TOOLS.is.a.list.of.`gptel-t | 
| 69c20 |  6f 6f 6c 27 20 73 74 72 75 63 74 73 2c 20 77 68    69 63 68 20 73 65 65 2e 22 0a 20 20 28 63 6c 2d  | ool'.structs,.which.see."...(cl- | 
| 69c40 |  6c 6f 6f 70 0a 20 20 20 66 6f 72 20 74 6f 6f 6c    20 69 6e 20 28 65 6e 73 75 72 65 2d 6c 69 73 74  | loop....for.tool.in.(ensure-list | 
| 69c60 |  20 74 6f 6f 6c 73 29 0a 20 20 20 63 6f 6c 6c 65    63 74 0a 20 20 20 28 6c 69 73 74 0a 20 20 20 20  | .tools)....collect....(list..... | 
| 69c80 |  3a 6e 61 6d 65 20 28 67 70 74 65 6c 2d 74 6f 6f    6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 0a 20 20 20  | :name.(gptel-tool-name.tool).... | 
| 69ca0 |  20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 67    70 74 65 6c 2d 74 6f 6f 6c 2d 64 65 73 63 72 69  | .:description.(gptel-tool-descri | 
| 69cc0 |  70 74 69 6f 6e 20 74 6f 6f 6c 29 0a 20 20 20 20    3a 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20  | ption.tool).....:parameters..... | 
| 69ce0 |  28 69 66 20 28 6e 6f 74 20 28 67 70 74 65 6c 2d    74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29 29  | (if.(not.(gptel-tool-args.tool)) | 
| 69d00 |  0a 20 20 20 20 20 20 20 20 20 3a 6e 75 6c 6c 20    20 20 20 20 20 20 20 20 20 20 3b 4e 4f 54 45 3a  | ..........:null...........;NOTE: | 
| 69d20 |  20 47 65 6d 69 6e 69 20 77 61 6e 74 73 20 3a 6e    75 6c 6c 20 69 66 20 74 68 65 20 66 75 6e 63 74  | .Gemini.wants.:null.if.the.funct | 
| 69d40 |  69 6f 6e 20 74 61 6b 65 73 20 6e 6f 20 61 72 67    73 0a 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74  | ion.takes.no.args.......(list.:t | 
| 69d60 |  79 70 65 20 22 6f 62 6a 65 63 74 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 65 20  | ype."object".............;;.See. | 
| 69d80 |  74 68 65 20 67 65 6e 65 72 69 63 20 69 6d 70 6c    65 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  | the.generic.implementation.for.a | 
| 69da0 |  6e 20 65 78 70 6c 61 6e 61 74 69 6f 6e 20 6f 66    20 74 68 69 73 0a 20 20 20 20 20 20 20 20 20 20  | n.explanation.of.this........... | 
| 69dc0 |  20 20 3b 3b 20 74 72 61 6e 73 66 6f 72 6d 61 74    69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20  | ..;;.transformation............. | 
| 69de0 |  20 3a 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f  | .:properties.............(cl-loo | 
| 69e00 |  70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66    6f 72 20 61 72 67 20 69 6e 20 28 67 70 74 65 6c  | p..............for.arg.in.(gptel | 
| 69e20 |  2d 74 6f 6f 6c 2d 61 72 67 73 20 74 6f 6f 6c 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  | -tool-args.tool)..............fo | 
| 69e40 |  72 20 61 72 67 73 70 65 63 20 3d 20 28 63 6f 70    79 2d 73 65 71 75 65 6e 63 65 20 61 72 67 29 0a  | r.argspec.=.(copy-sequence.arg). | 
| 69e60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72    20 6e 61 6d 65 20 3d 20 28 70 6c 69 73 74 2d 67  | .............for.name.=.(plist-g | 
| 69e80 |  65 74 20 61 72 67 20 3a 6e 61 6d 65 29 20 3b 68    61 6e 64 6c 65 64 20 64 69 66 66 65 72 65 6e 74  | et.arg.:name).;handled.different | 
| 69ea0 |  6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    66 6f 72 20 6e 65 77 6e 61 6d 65 20 3d 20 28 6f  | ly..............for.newname.=.(o | 
| 69ec0 |  72 20 28 61 6e 64 20 28 6b 65 79 77 6f 72 64 70    20 6e 61 6d 65 29 20 6e 61 6d 65 29 0a 20 20 20  | r.(and.(keywordp.name).name).... | 
| 69ee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b  | ............................(mak | 
| 69f00 |  65 2d 73 79 6d 62 6f 6c 20 28 63 6f 6e 63 61 74    20 22 3a 22 20 6e 61 6d 65 29 29 29 0a 20 20 20  | e-symbol.(concat.":".name))).... | 
| 69f20 |  20 20 20 20 20 20 20 20 20 20 64 6f 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........do.................... | 
| 69f40 |  20 20 20 20 3b 41 52 47 53 50 45 43 20 69 73 20    41 52 47 20 77 69 74 68 6f 75 74 20 75 6e 72 65  | ....;ARGSPEC.is.ARG.without.unre | 
| 69f60 |  63 6f 67 6e 69 7a 65 64 20 6b 65 79 73 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 72  | cognized.keys..............(cl-r | 
| 69f80 |  65 6d 66 20 61 72 67 73 70 65 63 20 3a 6e 61 6d    65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | emf.argspec.:name).............. | 
| 69fa0 |  28 63 6c 2d 72 65 6d 66 20 61 72 67 73 70 65 63    20 3a 6f 70 74 69 6f 6e 61 6c 29 0a 20 20 20 20  | (cl-remf.argspec.:optional)..... | 
| 69fc0 |  20 20 20 20 20 20 20 20 20 69 66 20 28 65 71 75    61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72  | .........if.(equal.(plist-get.ar | 
| 69fe0 |  67 20 3a 74 79 70 65 29 20 22 6f 62 6a 65 63 74    22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | g.:type)."object").............. | 
| 6a000 |  64 6f 20 28 75 6e 6c 65 73 73 20 28 70 6c 69 73    74 2d 6d 65 6d 62 65 72 20 61 72 67 73 70 65 63  | do.(unless.(plist-member.argspec | 
| 6a020 |  20 3a 72 65 71 75 69 72 65 64 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | .:required)...................(p | 
| 6a040 |  6c 69 73 74 2d 70 75 74 20 61 72 67 73 70 65 63    20 3a 72 65 71 75 69 72 65 64 20 5b 5d 29 29 0a  | list-put.argspec.:required.[])). | 
| 6a060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20    28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67 65  | .............if.(equal.(plist-ge | 
| 6a080 |  74 20 61 72 67 20 3a 74 79 70 65 29 20 22 73 74    72 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 20  | t.arg.:type)."string").......... | 
| 6a0a0 |  20 20 20 20 64 6f 20 28 63 6c 2d 72 65 6d 66 20    61 72 67 73 70 65 63 20 3a 66 6f 72 6d 61 74 29  | ....do.(cl-remf.argspec.:format) | 
| 6a0c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70    70 65 6e 64 20 28 6c 69 73 74 20 6e 65 77 6e 61  | ..............append.(list.newna | 
| 6a0e0 |  6d 65 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e    69 2d 66 69 6c 74 65 72 2d 73 63 68 65 6d 61 20  | me.(gptel--gemini-filter-schema. | 
| 6a100 |  61 72 67 73 70 65 63 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 64  | argspec))).............:required | 
| 6a120 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 76 63    6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20  | .............(vconcat........... | 
| 6a140 |  20 20 20 28 64 65 6c 71 20 6e 69 6c 20 28 6d 61    70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20  | ...(delq.nil.(mapcar............ | 
| 6a160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61    6d 62 64 61 20 28 61 72 67 29 20 28 61 6e 64 20  | .............(lambda.(arg).(and. | 
| 6a180 |  28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 20    61 72 67 20 3a 6f 70 74 69 6f 6e 61 6c 29 29 0a  | (not.(plist-get.arg.:optional)). | 
| 6a1a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 6a1c0 |  20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74    20 61 72 67 20 3a 6e 61 6d 65 29 29 29 0a 20 20  | ......(plist-get.arg.:name)))... | 
| 6a1e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f 6f  | ......................(gptel-too | 
| 6a200 |  6c 2d 61 72 67 73 20 74 6f 6f 6c 29 29 29 29 29    29 29 0a 20 20 20 69 6e 74 6f 20 74 6f 6f 6c 2d  | l-args.tool)))))))....into.tool- | 
| 6a220 |  73 70 65 63 73 0a 20 20 20 66 69 6e 61 6c 6c 79    20 72 65 74 75 72 6e 20 60 5b 28 3a 66 75 6e 63  | specs....finally.return.`[(:func | 
| 6a240 |  74 69 6f 6e 5f 64 65 63 6c 61 72 61 74 69 6f 6e    73 20 2c 28 76 63 6f 6e 63 61 74 20 74 6f 6f 6c  | tion_declarations.,(vconcat.tool | 
| 6a260 |  2d 73 70 65 63 73 29 29 5d 29 29 0a 0a 28 63 6c    2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c  | -specs))]))..(cl-defmethod.gptel | 
| 6a280 |  2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73    75 6c 74 73 20 28 28 5f 62 61 63 6b 65 6e 64 20  | --parse-tool-results.((_backend. | 
| 6a2a0 |  67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 74 6f    6f 6c 2d 75 73 65 29 0a 20 20 22 52 65 74 75 72  | gptel-gemini).tool-use)..."Retur | 
| 6a2c0 |  6e 20 61 20 70 72 6f 6d 70 74 20 63 6f 6e 74 61    69 6e 69 6e 67 20 74 6f 6f 6c 20 63 61 6c 6c 20  | n.a.prompt.containing.tool.call. | 
| 6a2e0 |  72 65 73 75 6c 74 73 20 69 6e 20 54 4f 4f 4c 2d    55 53 45 2e 22 0a 20 20 28 6c 69 73 74 0a 20 20  | results.in.TOOL-USE."...(list... | 
| 6a300 |  20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 20    20 3a 70 61 72 74 73 0a 20 20 20 28 76 63 6f 6e  | .:role."user"....:parts....(vcon | 
| 6a320 |  63 61 74 0a 20 20 20 20 28 6d 61 70 63 61 72 0a    20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 6f  | cat.....(mapcar......(lambda.(to | 
| 6a340 |  6f 6c 2d 63 61 6c 6c 29 0a 20 20 20 20 20 20 20    28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 70  | ol-call)........(let.((result.(p | 
| 6a360 |  6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61    6c 6c 20 3a 72 65 73 75 6c 74 29 29 0a 20 20 20  | list-get.tool-call.:result)).... | 
| 6a380 |  20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20    28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d  | ..........(name.(plist-get.tool- | 
| 6a3a0 |  63 61 6c 6c 20 3a 6e 61 6d 65 29 29 29 0a 20 20    20 20 20 20 20 20 20 60 28 3a 66 75 6e 63 74 69  | call.:name)))..........`(:functi | 
| 6a3c0 |  6f 6e 52 65 73 70 6f 6e 73 65 0a 20 20 20 20 20    20 20 20 20 20 20 28 3a 6e 61 6d 65 20 2c 6e 61  | onResponse............(:name.,na | 
| 6a3e0 |  6d 65 20 3a 72 65 73 70 6f 6e 73 65 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 3a 6e 61 6d 65 20  | me.:response.............(:name. | 
| 6a400 |  2c 6e 61 6d 65 20 3a 63 6f 6e 74 65 6e 74 20 2c    72 65 73 75 6c 74 29 29 29 29 29 0a 20 20 20 20  | ,name.:content.,result)))))..... | 
| 6a420 |  20 74 6f 6f 6c 2d 75 73 65 29 29 29 29 0a 0a 28    63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74  | .tool-use))))..(cl-defmethod.gpt | 
| 6a440 |  65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f 6d 70    74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74  | el--inject-prompt.((_backend.gpt | 
| 6a460 |  65 6c 2d 67 65 6d 69 6e 69 29 20 64 61 74 61 20    6e 65 77 2d 70 72 6f 6d 70 74 20 26 6f 70 74 69  | el-gemini).data.new-prompt.&opti | 
| 6a480 |  6f 6e 61 6c 20 5f 70 6f 73 69 74 69 6f 6e 29 0a    20 20 22 41 70 70 65 6e 64 20 4e 45 57 2d 50 52  | onal._position)..."Append.NEW-PR | 
| 6a4a0 |  4f 4d 50 54 20 74 6f 20 65 78 69 73 74 69 6e 67    20 70 72 6f 6d 70 74 73 20 69 6e 20 71 75 65 72  | OMPT.to.existing.prompts.in.quer | 
| 6a4c0 |  79 20 44 41 54 41 2e 0a 0a 53 65 65 20 67 65 6e    65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74  | y.DATA...See.generic.implementat | 
| 6a4e0 |  69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 6f 63    75 6d 65 6e 74 61 74 69 6f 6e 2e 22 0a 20 20 28  | ion.for.full.documentation."...( | 
| 6a500 |  6c 65 74 20 28 28 70 72 6f 6d 70 74 73 20 28 70    6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a 63  | let.((prompts.(plist-get.data.:c | 
| 6a520 |  6f 6e 74 65 6e 74 73 29 29 29 0a 20 20 20 20 28    70 6c 69 73 74 2d 70 75 74 20 64 61 74 61 20 3a  | ontents))).....(plist-put.data.: | 
| 6a540 |  63 6f 6e 74 65 6e 74 73 20 28 76 63 6f 6e 63 61    74 20 70 72 6f 6d 70 74 73 20 28 6c 69 73 74 20  | contents.(vconcat.prompts.(list. | 
| 6a560 |  6e 65 77 2d 70 72 6f 6d 70 74 29 29 29 29 29 0a    0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67  | new-prompt)))))..(cl-defmethod.g | 
| 6a580 |  70 74 65 6c 2d 2d 70 61 72 73 65 2d 6c 69 73 74    20 28 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c  | ptel--parse-list.((backend.gptel | 
| 6a5a0 |  2d 67 65 6d 69 6e 69 29 20 70 72 6f 6d 70 74 2d    6c 69 73 74 29 0a 20 20 28 69 66 20 28 63 6f 6e  | -gemini).prompt-list)...(if.(con | 
| 6a5c0 |  73 70 20 28 63 61 72 20 70 72 6f 6d 70 74 2d 6c    69 73 74 29 29 0a 20 20 20 20 20 20 28 6c 65 74  | sp.(car.prompt-list)).......(let | 
| 6a5e0 |  20 28 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20  | .((full-prompt))..............;. | 
| 6a600 |  41 64 76 61 6e 63 65 64 20 66 6f 72 6d 61 74 2c    20 6c 69 73 74 20 6f 66 20 6c 69 73 74 73 0a 20  | Advanced.format,.list.of.lists.. | 
| 6a620 |  20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28    65 6e 74 72 79 20 70 72 6f 6d 70 74 2d 6c 69 73  | .......(dolist.(entry.prompt-lis | 
| 6a640 |  74 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63    61 73 65 20 65 6e 74 72 79 0a 20 20 20 20 20 20  | t)...........(pcase.entry....... | 
| 6a660 |  20 20 20 20 20 20 28 60 28 70 72 6f 6d 70 74 20    2e 20 2c 6d 73 67 29 0a 20 20 20 20 20 20 20 20  | ......(`(prompt...,msg)......... | 
| 6a680 |  20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74    20 3a 72 6f 6c 65 20 22 75 73 65 72 22 0a 20 20  | .....(push.(list.:role."user"... | 
| 6a6a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 70 61 72 74 73 20 60 5b  | .......................:parts.`[ | 
| 6a6c0 |  28 3a 74 65 78 74 20 2c 28 6f 72 20 28 63 61 72    2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67 29 29  | (:text.,(or.(car-safe.msg).msg)) | 
| 6a6e0 |  5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70  | ])....................full-promp | 
| 6a700 |  74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 60 28 72 65 73 70 6f 6e 73 65 20 2e 20 2c 6d  | t)).............(`(response...,m | 
| 6a720 |  73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f  | sg)..............(push.(list.:ro | 
| 6a740 |  6c 65 20 22 6d 6f 64 65 6c 22 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | le."model"...................... | 
| 6a760 |  20 20 20 20 3a 70 61 72 74 73 20 60 5b 28 3a 74    65 78 74 20 2c 28 6f 72 20 28 63 61 72 2d 73 61  | ....:parts.`[(:text.,(or.(car-sa | 
| 6a780 |  66 65 20 6d 73 67 29 20 6d 73 67 29 29 5d 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fe.msg).msg))])................. | 
| 6a7a0 |  20 20 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28  | ...full-prompt)).............(`( | 
| 6a7c0 |  74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68  | tool...,call)..............(push | 
| 6a7e0 |  20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 6d 6f    64 65 6c 22 0a 20 20 20 20 20 20 20 20 20 20 20  | .(list.:role."model"............ | 
| 6a800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70    61 72 74 73 20 28 76 65 63 74 6f 72 20 60 28 3a  | ..............:parts.(vector.`(: | 
| 6a820 |  66 75 6e 63 74 69 6f 6e 43 61 6c 6c 20 28 20 3a    6e 61 6d 65 20 2c 28 70 6c 69 73 74 2d 67 65 74  | functionCall.(.:name.,(plist-get | 
| 6a840 |  20 63 61 6c 6c 20 3a 6e 61 6d 65 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .call.:name).................... | 
| 6a860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 6a880 |  20 20 20 20 20 20 20 3a 61 72 67 73 20 2c 28 70    6c 69 73 74 2d 67 65 74 20 63 61 6c 6c 20 3a 61  | .......:args.,(plist-get.call.:a | 
| 6a8a0 |  72 67 73 29 29 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c  | rgs)))))....................full | 
| 6a8c0 |  2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 75 73 68 20 28 67 70 74  | -prompt)..............(push.(gpt | 
| 6a8e0 |  65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72    65 73 75 6c 74 73 20 62 61 63 6b 65 6e 64 20 28  | el--parse-tool-results.backend.( | 
| 6a900 |  6c 69 73 74 20 28 63 64 72 20 65 6e 74 72 79 29    29 29 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29  | list.(cdr.entry))).full-prompt)) | 
| 6a920 |  29 29 0a 20 20 20 20 20 20 20 20 28 6e 72 65 76    65 72 73 65 20 66 75 6c 6c 2d 70 72 6f 6d 70 74  | )).........(nreverse.full-prompt | 
| 6a940 |  29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20    66 6f 72 20 74 65 78 74 20 69 6e 20 70 72 6f 6d  | )).....(cl-loop.for.text.in.prom | 
| 6a960 |  70 74 2d 6c 69 73 74 20 20 20 20 3b 20 53 69 6d    70 6c 65 20 66 6f 72 6d 61 74 2c 20 6c 69 73 74  | pt-list....;.Simple.format,.list | 
| 6a980 |  20 6f 66 20 73 74 72 69 6e 67 73 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 66 6f 72 20 72 6f 6c  | .of.strings..............for.rol | 
| 6a9a0 |  65 20 3d 20 74 20 74 68 65 6e 20 28 6e 6f 74 20    72 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20  | e.=.t.then.(not.role)........... | 
| 6a9c0 |  20 20 20 69 66 20 74 65 78 74 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 69 66 20 72 6f 6c 65 0a  | ...if.text..............if.role. | 
| 6a9e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c    6c 65 63 74 20 28 6c 69 73 74 20 3a 72 6f 6c 65  | .............collect.(list.:role | 
| 6aa00 |  20 22 75 73 65 72 22 20 3a 70 61 72 74 73 20 60    5b 28 3a 74 65 78 74 20 2c 74 65 78 74 29 5d 29  | ."user".:parts.`[(:text.,text)]) | 
| 6aa20 |  20 69 6e 74 6f 20 70 72 6f 6d 70 74 73 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20  | .into.prompts..............else. | 
| 6aa40 |  63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 3a 72    6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72  | collect.(list.:role."model".:par | 
| 6aa60 |  74 73 20 60 28 3a 74 65 78 74 20 2c 74 65 78 74    29 29 20 69 6e 74 6f 20 70 72 6f 6d 70 74 73 0a  | ts.`(:text.,text)).into.prompts. | 
| 6aa80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e    61 6c 6c 79 20 72 65 74 75 72 6e 20 70 72 6f 6d  | .............finally.return.prom | 
| 6aaa0 |  70 74 73 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d    65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72  | pts)))..(cl-defmethod.gptel--par | 
| 6aac0 |  73 65 2d 62 75 66 66 65 72 20 28 28 62 61 63 6b    65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69  | se-buffer.((backend.gptel-gemini | 
| 6aae0 |  29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 2d    65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20  | ).&optional.max-entries)...(let. | 
| 6ab00 |  28 28 70 72 6f 6d 70 74 73 29 20 28 70 72 65 76    2d 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20  | ((prompts).(prev-pt.(point)))... | 
| 6ab20 |  20 20 28 69 66 20 28 6f 72 20 67 70 74 65 6c 2d    6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63 6b  | ..(if.(or.gptel-mode.gptel-track | 
| 6ab40 |  2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20    20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28  | -response).........(while.(and.( | 
| 6ab60 |  6f 72 20 28 6e 6f 74 20 6d 61 78 2d 65 6e 74 72    69 65 73 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74  | or.(not.max-entries).(>=.max-ent | 
| 6ab80 |  72 69 65 73 20 30 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f  | ries.0)).....................(go | 
| 6aba0 |  74 6f 2d 63 68 61 72 20 28 70 72 65 76 69 6f 75    73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74  | to-char.(previous-single-propert | 
| 6abc0 |  79 2d 63 68 61 6e 67 65 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | y-change........................ | 
| 6abe0 |  20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29    20 27 67 70 74 65 6c 20 6e 69 6c 20 28 70 6f 69  | .........(point).'gptel.nil.(poi | 
| 6ac00 |  6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e  | nt-min))).....................(n | 
| 6ac20 |  6f 74 20 28 3d 20 28 70 6f 69 6e 74 29 20 70 72    65 76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20  | ot.(=.(point).prev-pt)))........ | 
| 6ac40 |  20 20 20 28 70 63 61 73 65 20 28 67 65 74 2d 63    68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f  | ...(pcase.(get-char-property.(po | 
| 6ac60 |  69 6e 74 29 20 27 67 70 74 65 6c 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 27 72 65 73 70 6f  | int).'gptel).............('respo | 
| 6ac80 |  6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f  | nse..............(when-let*.((co | 
| 6aca0 |  6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 74 72    69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20 20  | ntent.(gptel--trim-prefixes..... | 
| 6acc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| 6ace0 |  62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67    2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28  | buffer-substring-no-properties.( | 
| 6ad00 |  70 6f 69 6e 74 29 20 70 72 65 76 2d 70 74 29 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | point).prev-pt)))).............. | 
| 6ad20 |  20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72    6f 6c 65 20 22 6d 6f 64 65 6c 22 20 3a 70 61 72  | ..(push.(list.:role."model".:par | 
| 6ad40 |  74 73 20 28 6c 69 73 74 20 3a 74 65 78 74 20 63    6f 6e 74 65 6e 74 29 29 20 70 72 6f 6d 70 74 73  | ts.(list.:text.content)).prompts | 
| 6ad60 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 60 28 74 6f 6f 6c 20 2e 20 2c 5f 69 64 29 0a  | ))).............(`(tool...,_id). | 
| 6ad80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61    76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20  | .............(save-excursion.... | 
| 6ada0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e    64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a  | ............(condition-case.nil. | 
| 6adc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d  | ...................(let*.((tool- | 
| 6ade0 |  63 61 6c 6c 20 28 72 65 61 64 20 28 63 75 72 72    65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20  | call.(read.(current-buffer)))... | 
| 6ae00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 70  | ........................(name.(p | 
| 6ae20 |  6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61    6c 6c 20 3a 6e 61 6d 65 29 29 0a 20 20 20 20 20  | list-get.tool-call.:name))...... | 
| 6ae40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 20  | .....................(arguments. | 
| 6ae60 |  20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c    2d 63 61 6c 6c 20 3a 61 72 67 73 29 29 29 0a 20  | .(plist-get.tool-call.:args))).. | 
| 6ae80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 74  | ....................(plist-put.t | 
| 6aea0 |  6f 6f 6c 2d 63 61 6c 6c 20 3a 72 65 73 75 6c 74    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ool-call.:result................ | 
| 6aec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62  | .................(string-trim.(b | 
| 6aee0 |  75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d    6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20  | uffer-substring-no-properties... | 
| 6af00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 6af20 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69    6e 74 29 20 70 72 65 76 2d 70 74 29 29 29 0a 20  | ............(point).prev-pt))).. | 
| 6af40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 70 75 73 68 20 28 67 70 74 65 6c  | ....................(push.(gptel | 
| 6af60 |  2d 2d 70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73    75 6c 74 73 20 62 61 63 6b 65 6e 64 20 28 6c 69  | --parse-tool-results.backend.(li | 
| 6af80 |  73 74 20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | st.tool-call)).................. | 
| 6afa0 |  20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74    73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........prompts).............. | 
| 6afc0 |  20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c    69 73 74 20 3a 72 6f 6c 65 20 22 6d 6f 64 65 6c  | ........(push.(list.:role."model | 
| 6afe0 |  22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "............................... | 
| 6b000 |  20 20 20 3a 70 61 72 74 73 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...:parts....................... | 
| 6b020 |  20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74    6f 72 20 60 28 3a 66 75 6e 63 74 69 6f 6e 43 61  | ...........(vector.`(:functionCa | 
| 6b040 |  6c 6c 20 28 20 3a 6e 61 6d 65 20 2c 6e 61 6d 65    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ll.(.:name.,name................ | 
| 6b060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 6b080 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67    73 20 2c 61 72 67 75 6d 65 6e 74 73 29 29 29 29  | ............:args.,arguments)))) | 
| 6b0a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d  | ............................prom | 
| 6b0c0 |  70 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 28 65 6e 64 2d 6f 66 2d  | pts))..................((end-of- | 
| 6b0e0 |  66 69 6c 65 20 69 6e 76 61 6c 69 64 2d 72 65 61    64 2d 73 79 6e 74 61 78 29 0a 20 20 20 20 20 20  | file.invalid-read-syntax)....... | 
| 6b100 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73    73 61 67 65 20 28 66 6f 72 6d 61 74 20 22 43 6f  | ............(message.(format."Co | 
| 6b120 |  75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 74 6f    6f 6c 2d 63 61 6c 6c 20 6f 6e 20 6c 69 6e 65 20  | uld.not.parse.tool-call.on.line. | 
| 6b140 |  25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | %s"............................. | 
| 6b160 |  20 20 20 20 20 20 20 28 6c 69 6e 65 2d 6e 75 6d    62 65 72 2d 61 74 2d 70 6f 73 20 28 70 6f 69 6e  | .......(line-number-at-pos.(poin | 
| 6b180 |  74 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 27 69 67 6e 6f 72 65 29 0a  | t)))))))).............('ignore). | 
| 6b1a0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 69    6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ............('nil..............( | 
| 6b1c0 |  69 66 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d    65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20  | if.gptel-track-media............ | 
| 6b1e0 |  20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a    20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65  | ......(when-let*.((content.(gpte | 
| 6b200 |  6c 2d 2d 67 65 6d 69 6e 69 2d 70 61 72 73 65 2d    6d 75 6c 74 69 70 61 72 74 0a 20 20 20 20 20 20  | l--gemini-parse-multipart....... | 
| 6b220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 6b240 |  20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d    65 64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72  | .(gptel--parse-media-links.major | 
| 6b260 |  2d 6d 6f 64 65 20 28 70 6f 69 6e 74 29 20 70 72    65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20 20  | -mode.(point).prev-pt))))....... | 
| 6b280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68    65 6e 20 28 3e 20 28 6c 65 6e 67 74 68 20 63 6f  | .............(when.(>.(length.co | 
| 6b2a0 |  6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ntent).0)......................( | 
| 6b2c0 |  70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65    20 22 75 73 65 72 22 20 3a 70 61 72 74 73 20 63  | push.(list.:role."user".:parts.c | 
| 6b2e0 |  6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70 74 73 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ontent).prompts))).............. | 
| 6b300 |  20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63    6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 74  | ..(when-let*.((content.(gptel--t | 
| 6b320 |  72 69 6d 2d 70 72 65 66 69 78 65 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rim-prefixes.................... | 
| 6b340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72  | ..................(buffer-substr | 
| 6b360 |  69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ing-no-properties............... | 
| 6b380 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20  | ........................(point). | 
| 6b3a0 |  70 72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75  | prev-pt))))..................(pu | 
| 6b3c0 |  73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22    75 73 65 72 22 20 3a 70 61 72 74 73 20 60 5b 28  | sh.(list.:role."user".:parts.`[( | 
| 6b3e0 |  3a 74 65 78 74 20 2c 63 6f 6e 74 65 6e 74 29 5d    29 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 20  | :text.,content)]).prompts))))).. | 
| 6b400 |  20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70    72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29 0a  | .........(setq.prev-pt.(point)). | 
| 6b420 |  20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 6d    61 78 2d 65 6e 74 72 69 65 73 20 28 63 6c 2d 64  | ..........(and.max-entries.(cl-d | 
| 6b440 |  65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29    29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28  | ecf.max-entries))).......(let.(( | 
| 6b460 |  63 6f 6e 74 65 6e 74 20 28 73 74 72 69 6e 67 2d    74 72 69 6d 20 28 62 75 66 66 65 72 2d 73 75 62  | content.(string-trim.(buffer-sub | 
| 6b480 |  73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72    74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20  | string-no-properties............ | 
| 6b4a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d  | ........................(point-m | 
| 6b4c0 |  69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29    29 29 29 0a 20 20 20 20 20 20 20 20 28 70 75 73  | in).(point-max))))).........(pus | 
| 6b4e0 |  68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 75    73 65 72 22 20 3a 70 61 72 74 73 20 60 5b 28 3a  | h.(list.:role."user".:parts.`[(: | 
| 6b500 |  74 65 78 74 20 2c 63 6f 6e 74 65 6e 74 29 5d 29    20 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20  | text.,content)]).prompts)))..... | 
| 6b520 |  70 72 6f 6d 70 74 73 29 29 0a 0a 28 64 65 66 75    6e 20 67 70 74 65 6c 2d 2d 67 65 6d 69 6e 69 2d  | prompts))..(defun.gptel--gemini- | 
| 6b540 |  70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72 74 20    28 70 61 72 74 73 29 0a 20 20 22 43 6f 6e 76 65  | parse-multipart.(parts)..."Conve | 
| 6b560 |  72 74 20 61 20 6d 75 6c 74 69 70 61 72 74 20 70    72 6f 6d 70 74 20 50 41 52 54 53 20 74 6f 20 74  | rt.a.multipart.prompt.PARTS.to.t | 
| 6b580 |  68 65 20 47 65 6d 69 6e 69 20 41 50 49 20 66 6f    72 6d 61 74 2e 0a 0a 54 68 65 20 69 6e 70 75 74  | he.Gemini.API.format...The.input | 
| 6b5a0 |  20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 20    74 68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78  | .is.an.alist.of.the.form..((:tex | 
| 6b5c0 |  74 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 29    0a 20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61  | t.\"some.text\")...(:media.\"/pa | 
| 6b5e0 |  74 68 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 5c    22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f  | th/to/media.png\".:mime.\"image/ | 
| 6b600 |  70 6e 67 5c 22 29 0a 20 20 28 3a 74 65 78 74 20    5c 22 4d 6f 72 65 20 74 65 78 74 5c 22 29 29 2e  | png\")...(:text.\"More.text\")). | 
| 6b620 |  0a 0a 54 68 65 20 6f 75 74 70 75 74 20 69 73 20    61 20 76 65 63 74 6f 72 20 6f 66 20 65 6e 74 72  | ..The.output.is.a.vector.of.entr | 
| 6b640 |  69 65 73 20 69 6e 20 61 20 62 61 63 6b 65 6e 64    2d 61 70 70 72 6f 70 72 69 61 74 65 0a 66 6f 72  | ies.in.a.backend-appropriate.for | 
| 6b660 |  6d 61 74 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70    0a 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e 20  | mat."...(cl-loop....for.part.in. | 
| 6b680 |  70 61 72 74 73 0a 20 20 20 66 6f 72 20 6e 20 75    70 66 72 6f 6d 20 31 0a 20 20 20 77 69 74 68 20  | parts....for.n.upfrom.1....with. | 
| 6b6a0 |  6c 61 73 74 20 3d 20 28 6c 65 6e 67 74 68 20 70    61 72 74 73 29 0a 20 20 20 66 6f 72 20 74 65 78  | last.=.(length.parts)....for.tex | 
| 6b6c0 |  74 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 70    61 72 74 20 3a 74 65 78 74 29 0a 20 20 20 66 6f  | t.=.(plist-get.part.:text)....fo | 
| 6b6e0 |  72 20 6d 65 64 69 61 20 3d 20 28 70 6c 69 73 74    2d 67 65 74 20 70 61 72 74 20 3a 6d 65 64 69 61  | r.media.=.(plist-get.part.:media | 
| 6b700 |  29 0a 20 20 20 69 66 20 74 65 78 74 20 64 6f 0a    20 20 20 28 61 6e 64 20 28 6f 72 20 28 3d 20 6e  | )....if.text.do....(and.(or.(=.n | 
| 6b720 |  20 31 29 20 28 3d 20 6e 20 6c 61 73 74 29 29 20    28 73 65 74 71 20 74 65 78 74 20 28 67 70 74 65  | .1).(=.n.last)).(setq.text.(gpte | 
| 6b740 |  6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73    20 74 65 78 74 29 29 29 20 61 6e 64 0a 20 20 20  | l--trim-prefixes.text))).and.... | 
| 6b760 |  69 66 20 74 65 78 74 0a 20 20 20 63 6f 6c 6c 65    63 74 20 28 6c 69 73 74 20 3a 74 65 78 74 20 74  | if.text....collect.(list.:text.t | 
| 6b780 |  65 78 74 29 20 69 6e 74 6f 20 70 61 72 74 73 2d    61 72 72 61 79 20 65 6e 64 0a 20 20 20 65 6c 73  | ext).into.parts-array.end....els | 
| 6b7a0 |  65 20 69 66 20 6d 65 64 69 61 0a 20 20 20 63 6f    6c 6c 65 63 74 0a 20 20 20 60 28 3a 69 6e 6c 69  | e.if.media....collect....`(:inli | 
| 6b7c0 |  6e 65 5f 64 61 74 61 0a 20 20 20 20 20 28 3a 6d    69 6d 65 5f 74 79 70 65 20 2c 28 70 6c 69 73 74  | ne_data......(:mime_type.,(plist | 
| 6b7e0 |  2d 67 65 74 20 70 61 72 74 20 3a 6d 69 6d 65 29    0a 20 20 20 20 20 20 3a 64 61 74 61 20 2c 28 67  | -get.part.:mime).......:data.,(g | 
| 6b800 |  70 74 65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63    6f 64 65 20 6d 65 64 69 61 29 29 29 0a 20 20 20  | ptel--base64-encode.media))).... | 
| 6b820 |  69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79    0a 20 20 20 65 6c 73 65 20 69 66 20 28 70 6c 69  | into.parts-array....else.if.(pli | 
| 6b840 |  73 74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78    74 66 69 6c 65 29 0a 20 20 20 63 6f 6c 6c 65 63  | st-get.part.:textfile)....collec | 
| 6b860 |  74 0a 20 20 20 28 6c 69 73 74 20 3a 74 65 78 74    20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66  | t....(list.:text.(with-temp-buff | 
| 6b880 |  65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 65  | er..................(gptel--inse | 
| 6b8a0 |  72 74 2d 66 69 6c 65 2d 73 74 72 69 6e 67 20 28    70 6c 69 73 74 2d 67 65 74 20 70 61 72 74 20 3a  | rt-file-string.(plist-get.part.: | 
| 6b8c0 |  74 65 78 74 66 69 6c 65 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66  | textfile))..................(buf | 
| 6b8e0 |  66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 20 20    20 69 6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61  | fer-string)))....into.parts-arra | 
| 6b900 |  79 0a 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74    75 72 6e 20 28 76 63 6f 6e 63 61 74 20 70 61 72  | y....finally.return.(vconcat.par | 
| 6b920 |  74 73 2d 61 72 72 61 79 29 29 29 0a 0a 28 63 6c    2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c  | ts-array)))..(cl-defmethod.gptel | 
| 6b940 |  2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d    70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70  | --wrap-user-prompt.((_backend.gp | 
| 6b960 |  74 65 6c 2d 67 65 6d 69 6e 69 29 20 70 72 6f 6d    70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | tel-gemini).prompts............. | 
| 6b980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69  | ...........................&opti | 
| 6b9a0 |  6f 6e 61 6c 20 69 6e 6a 65 63 74 2d 6d 65 64 69    61 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c  | onal.inject-media)..."Wrap.the.l | 
| 6b9c0 |  61 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20    69 6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20  | ast.user.prompt.in.PROMPTS.with. | 
| 6b9e0 |  74 68 65 20 63 6f 6e 74 65 78 74 20 73 74 72 69    6e 67 2e 0a 0a 49 66 20 49 4e 4a 45 43 54 2d 4d  | the.context.string...If.INJECT-M | 
| 6ba00 |  45 44 49 41 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20    77 72 61 70 20 69 74 20 77 69 74 68 20 62 61 73  | EDIA.is.non-nil.wrap.it.with.bas | 
| 6ba20 |  65 36 34 2d 65 6e 63 6f 64 65 64 20 6d 65 64 69    61 0a 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63  | e64-encoded.media.files.in.the.c | 
| 6ba40 |  6f 6e 74 65 78 74 2e 22 0a 20 20 28 69 66 20 69    6e 6a 65 63 74 2d 6d 65 64 69 61 0a 20 20 20 20  | ontext."...(if.inject-media..... | 
| 6ba60 |  20 20 3b 3b 20 57 72 61 70 20 74 68 65 20 66 69    72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20  | ..;;.Wrap.the.first.user.prompt. | 
| 6ba80 |  77 69 74 68 20 69 6e 63 6c 75 64 65 64 20 6d 65    64 69 61 20 66 69 6c 65 73 2f 63 6f 6e 74 65 78  | with.included.media.files/contex | 
| 6baa0 |  74 73 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c    65 74 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74  | ts.......(when-let*.((media-list | 
| 6bac0 |  20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29  | .(gptel-context--collect-media)) | 
| 6bae0 |  29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 63 61    6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72  | ).........(cl-callf.(lambda.(cur | 
| 6bb00 |  72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63  | rent).....................(vconc | 
| 6bb20 |  61 74 20 28 67 70 74 65 6c 2d 2d 67 65 6d 69 6e    69 2d 70 61 72 73 65 2d 6d 75 6c 74 69 70 61 72  | at.(gptel--gemini-parse-multipar | 
| 6bb40 |  74 20 6d 65 64 69 61 2d 6c 69 73 74 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.media-list)................... | 
| 6bb60 |  20 20 20 20 20 20 20 20 20 20 20 63 75 72 72 65    6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ...........current))............ | 
| 6bb80 |  20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61 72    20 70 72 6f 6d 70 74 73 29 20 3a 70 61 72 74 73  | .(plist-get.(car.prompts).:parts | 
| 6bba0 |  29 29 29 0a 20 20 20 20 3b 3b 20 57 72 61 70 20    74 68 65 20 6c 61 73 74 20 75 73 65 72 20 70 72  | ))).....;;.Wrap.the.last.user.pr | 
| 6bbc0 |  6f 6d 70 74 20 77 69 74 68 20 69 6e 63 6c 75 64    65 64 20 74 65 78 74 20 63 6f 6e 74 65 78 74 73  | ompt.with.included.text.contexts | 
| 6bbe0 |  0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28    6c 61 6d 62 64 61 20 28 63 75 72 72 65 6e 74 29  | .....(cl-callf.(lambda.(current) | 
| 6bc00 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 69 66 2d 6c 65 74 2a 20 28 28 77 72 61 70  | .................(if-let*.((wrap | 
| 6bc20 |  70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 2d 77 72 61 70 20 6e 69 6c 29 29 29 0a  | ped.(gptel-context--wrap.nil))). | 
| 6bc40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 76 63 6f 6e 63 61 74 20 60 28 28  | ....................(vconcat.`(( | 
| 6bc60 |  3a 74 65 78 74 20 2c 77 72 61 70 70 65 64 29 29    20 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20  | :text.,wrapped)).current)....... | 
| 6bc80 |  20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 72    65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28 70  | ............current)).........(p | 
| 6bca0 |  6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 28 6c    61 73 74 20 70 72 6f 6d 70 74 73 29 29 20 3a 70  | list-get.(car.(last.prompts)).:p | 
| 6bcc0 |  61 72 74 73 29 29 29 29 0a 0a 28 64 65 66 63 6f    6e 73 74 20 67 70 74 65 6c 2d 2d 67 65 6d 69 6e  | arts))))..(defconst.gptel--gemin | 
| 6bce0 |  69 2d 6d 6f 64 65 6c 73 0a 20 20 27 28 28 67 65    6d 69 6e 69 2d 31 2e 35 2d 70 72 6f 2d 6c 61 74  | i-models...'((gemini-1.5-pro-lat | 
| 6bd00 |  65 73 74 0a 20 20 20 20 20 3a 64 65 73 63 72 69    70 74 69 6f 6e 20 22 47 6f 6f 67 6c 65 27 73 20  | est......:description."Google's. | 
| 6bd20 |  6c 61 74 65 73 74 20 6d 6f 64 65 6c 20 77 69 74    68 20 65 6e 68 61 6e 63 65 64 20 63 61 70 61 62  | latest.model.with.enhanced.capab | 
| 6bd40 |  69 6c 69 74 69 65 73 20 61 63 72 6f 73 73 20 76    61 72 69 6f 75 73 20 74 61 73 6b 73 22 0a 20 20  | ilities.across.various.tasks"... | 
| 6bd60 |  20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73    20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20  | ...:capabilities.(tool-use.json. | 
| 6bd80 |  6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d    65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f  | media)......:mime-types.("image/ | 
| 6bda0 |  70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67    22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22  | png"."image/jpeg"."image/webp"." | 
| 6bdc0 |  69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61    67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20  | image/heic"."image/heif"........ | 
| 6bde0 |  20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c    69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65  | ..........."application/pdf"."te | 
| 6be00 |  78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f    63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22  | xt/plain"."text/csv"."text/html" | 
| 6be20 |  29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d    77 69 6e 64 6f 77 20 32 30 30 30 0a 20 20 20 20  | )......:context-window.2000..... | 
| 6be40 |  20 3b 3b 20 69 6e 70 75 74 20 26 20 6f 75 74 70    75 74 20 70 72 69 63 65 20 69 73 20 68 61 6c 76  | .;;.input.&.output.price.is.halv | 
| 6be60 |  65 64 20 66 6f 72 20 70 72 6f 6d 70 74 73 20 6f    66 20 31 32 38 6b 20 74 6f 6b 65 6e 73 20 6f 72  | ed.for.prompts.of.128k.tokens.or | 
| 6be80 |  20 6c 65 73 73 0a 20 20 20 20 20 3a 69 6e 70 75    74 2d 63 6f 73 74 20 32 2e 35 30 0a 20 20 20 20  | .less......:input-cost.2.50..... | 
| 6bea0 |  20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30    0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d 64 61  | .:output-cost.10......:cutoff-da | 
| 6bec0 |  74 65 20 22 32 30 32 34 2d 30 35 22 29 0a 20 20    20 20 28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c  | te."2024-05").....(gemini-2.0-fl | 
| 6bee0 |  61 73 68 2d 65 78 70 0a 20 20 20 20 20 3a 64 65    73 63 72 69 70 74 69 6f 6e 20 22 4e 65 78 74 20  | ash-exp......:description."Next. | 
| 6bf00 |  67 65 6e 65 72 61 74 69 6f 6e 20 66 65 61 74 75    72 65 73 2c 20 73 75 70 65 72 69 6f 72 20 73 70  | generation.features,.superior.sp | 
| 6bf20 |  65 65 64 2c 20 6e 61 74 69 76 65 20 74 6f 6f 6c    20 75 73 65 22 0a 20 20 20 20 20 3a 63 61 70 61  | eed,.native.tool.use"......:capa | 
| 6bf40 |  62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75    73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20  | bilities.(tool-use.json.media).. | 
| 6bf60 |  20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20    28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d  | ....:mime-types.("image/png"."im | 
| 6bf80 |  61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65    2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65  | age/jpeg"."image/webp"."image/he | 
| 6bfa0 |  69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ic"."image/heif"................ | 
| 6bfc0 |  20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f    70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e  | ..."application/pdf"."text/plain | 
| 6bfe0 |  22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65    78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a  | "."text/csv"."text/html")......: | 
| 6c000 |  63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31    30 30 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66  | context-window.1000......:cutoff | 
| 6c020 |  2d 64 61 74 65 20 22 32 30 32 34 2d 31 32 22 29    0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 31 2e 35  | -date."2024-12").....(gemini-1.5 | 
| 6c040 |  2d 66 6c 61 73 68 0a 20 20 20 20 20 3a 64 65 73    63 72 69 70 74 69 6f 6e 20 22 41 20 66 61 73 74  | -flash......:description."A.fast | 
| 6c060 |  65 72 2c 20 6d 6f 72 65 20 65 66 66 69 63 69 65    6e 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 47 65  | er,.more.efficient.version.of.Ge | 
| 6c080 |  6d 69 6e 69 20 31 2e 35 20 6f 70 74 69 6d 69 7a    65 64 20 66 6f 72 20 73 70 65 65 64 22 0a 20 20  | mini.1.5.optimized.for.speed"... | 
| 6c0a0 |  20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73    20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20  | ...:capabilities.(tool-use.json. | 
| 6c0c0 |  6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d    65 2d 74 79 70 65 73 20 28 22 69 6d 61 67 65 2f  | media)......:mime-types.("image/ | 
| 6c0e0 |  70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67    22 20 22 69 6d 61 67 65 2f 77 65 62 70 22 20 22  | png"."image/jpeg"."image/webp"." | 
| 6c100 |  69 6d 61 67 65 2f 68 65 69 63 22 20 22 69 6d 61    67 65 2f 68 65 69 66 22 0a 20 20 20 20 20 20 20  | image/heic"."image/heif"........ | 
| 6c120 |  20 20 20 20 20 20 20 20 20 20 20 22 61 70 70 6c    69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65  | ..........."application/pdf"."te | 
| 6c140 |  78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f    63 73 76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22  | xt/plain"."text/csv"."text/html" | 
| 6c160 |  29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d    77 69 6e 64 6f 77 20 31 30 30 30 0a 20 20 20 20  | )......:context-window.1000..... | 
| 6c180 |  20 3b 3b 20 69 6e 70 75 74 20 26 20 6f 75 74 70    75 74 20 70 72 69 63 65 20 69 73 20 68 61 6c 76  | .;;.input.&.output.price.is.halv | 
| 6c1a0 |  65 64 20 66 6f 72 20 70 72 6f 6d 70 74 73 20 6f    66 20 31 32 38 6b 20 74 6f 6b 65 6e 73 20 6f 72  | ed.for.prompts.of.128k.tokens.or | 
| 6c1c0 |  20 6c 65 73 73 0a 20 20 20 20 20 3a 69 6e 70 75    74 2d 63 6f 73 74 20 30 2e 31 35 0a 20 20 20 20  | .less......:input-cost.0.15..... | 
| 6c1e0 |  20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 30 2e    36 30 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d  | .:output-cost.0.60......:cutoff- | 
| 6c200 |  64 61 74 65 20 22 32 30 32 34 2d 30 35 22 29 0a    20 20 20 20 28 67 65 6d 69 6e 69 2d 31 2e 35 2d  | date."2024-05").....(gemini-1.5- | 
| 6c220 |  66 6c 61 73 68 2d 38 62 0a 20 20 20 20 20 3a 64    65 73 63 72 69 70 74 69 6f 6e 20 22 48 69 67 68  | flash-8b......:description."High | 
| 6c240 |  20 76 6f 6c 75 6d 65 20 61 6e 64 20 6c 6f 77 65    72 20 69 6e 74 65 6c 6c 69 67 65 6e 63 65 20 74  | .volume.and.lower.intelligence.t | 
| 6c260 |  61 73 6b 73 22 0a 20 20 20 20 20 3a 63 61 70 61    62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75  | asks"......:capabilities.(tool-u | 
| 6c280 |  73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20    20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e  | se.json.media)......:context-win | 
| 6c2a0 |  64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3a 6d    69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67  | dow.1000......:mime-types.("imag | 
| 6c2c0 |  65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70    65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22  | e/png"."image/jpeg"."image/webp" | 
| 6c2e0 |  20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69    6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20  | ."image/heic"."image/heif"...... | 
| 6c300 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70    70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22  | ............."application/pdf"." | 
| 6c320 |  74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78    74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d  | text/plain"."text/csv"."text/htm | 
| 6c340 |  6c 22 29 0a 20 20 20 20 20 3b 3b 20 69 6e 70 75    74 20 26 20 6f 75 74 70 75 74 20 70 72 69 63 65  | l")......;;.input.&.output.price | 
| 6c360 |  20 69 73 20 68 61 6c 76 65 64 20 66 6f 72 20 70    72 6f 6d 70 74 73 20 6f 66 20 31 32 38 6b 20 74  | .is.halved.for.prompts.of.128k.t | 
| 6c380 |  6f 6b 65 6e 73 20 6f 72 20 6c 65 73 73 0a 20 20    20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30  | okens.or.less......:input-cost.0 | 
| 6c3a0 |  2e 30 37 35 0a 20 20 20 20 20 3a 6f 75 74 70 75    74 2d 63 6f 73 74 20 30 2e 33 30 0a 20 20 20 20  | .075......:output-cost.0.30..... | 
| 6c3c0 |  20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32    30 32 34 2d 31 30 22 29 0a 20 20 20 20 28 67 65  | .:cutoff-date."2024-10").....(ge | 
| 6c3e0 |  6d 69 6e 69 2d 65 78 70 2d 31 32 30 36 0a 20 20    20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20  | mini-exp-1206......:description. | 
| 6c400 |  22 49 6d 70 72 6f 76 65 64 20 63 6f 64 69 6e 67    2c 20 72 65 61 73 6f 6e 69 6e 67 20 61 6e 64 20  | "Improved.coding,.reasoning.and. | 
| 6c420 |  76 69 73 69 6f 6e 20 63 61 70 61 62 69 6c 69 74    69 65 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62  | vision.capabilities"......:capab | 
| 6c440 |  69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73    65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20  | ilities.(tool-use.json.media)... | 
| 6c460 |  20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28    22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61  | ...:mime-types.("image/png"."ima | 
| 6c480 |  67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f    77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69  | ge/jpeg"."image/webp"."image/hei | 
| 6c4a0 |  63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | c"."image/heif"................. | 
| 6c4c0 |  20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70    64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22  | .."application/pdf"."text/plain" | 
| 6c4e0 |  20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78    74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a 63  | ."text/csv"."text/html")......:c | 
| 6c500 |  75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 34    2d 31 32 22 29 0a 20 20 20 20 28 67 65 6d 69 6e  | utoff-date."2024-12").....(gemin | 
| 6c520 |  69 2d 32 2e 30 2d 66 6c 61 73 68 0a 20 20 20 20    20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4e  | i-2.0-flash......:description."N | 
| 6c540 |  65 78 74 20 67 65 6e 2c 20 68 69 67 68 20 73 70    65 65 64 2c 20 6d 75 6c 74 69 6d 6f 64 61 6c 20  | ext.gen,.high.speed,.multimodal. | 
| 6c560 |  66 6f 72 20 61 20 64 69 76 65 72 73 65 20 76 61    72 69 65 74 79 20 6f 66 20 74 61 73 6b 73 22 0a  | for.a.diverse.variety.of.tasks". | 
| 6c580 |  20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69    65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f  | .....:capabilities.(tool-use.jso | 
| 6c5a0 |  6e 20 6d 65 64 69 61 29 0a 20 20 20 20 20 3a 6d    69 6d 65 2d 74 79 70 65 73 20 28 22 69 6d 61 67  | n.media)......:mime-types.("imag | 
| 6c5c0 |  65 2f 70 6e 67 22 20 22 69 6d 61 67 65 2f 6a 70    65 67 22 20 22 69 6d 61 67 65 2f 77 65 62 70 22  | e/png"."image/jpeg"."image/webp" | 
| 6c5e0 |  20 22 69 6d 61 67 65 2f 68 65 69 63 22 20 22 69    6d 61 67 65 2f 68 65 69 66 22 0a 20 20 20 20 20  | ."image/heic"."image/heif"...... | 
| 6c600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70    70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 20 22  | ............."application/pdf"." | 
| 6c620 |  74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74 65 78    74 2f 63 73 76 22 20 22 74 65 78 74 2f 68 74 6d  | text/plain"."text/csv"."text/htm | 
| 6c640 |  6c 22 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78    74 2d 77 69 6e 64 6f 77 20 31 30 30 30 0a 20 20  | l")......:context-window.1000... | 
| 6c660 |  20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30    2e 31 30 0a 20 20 20 20 20 3a 6f 75 74 70 75 74  | ...:input-cost.0.10......:output | 
| 6c680 |  2d 63 6f 73 74 20 30 2e 34 30 0a 20 20 20 20 20    3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30  | -cost.0.40......:cutoff-date."20 | 
| 6c6a0 |  32 34 2d 30 38 22 29 0a 20 20 20 20 28 67 65 6d    69 6e 69 2d 32 2e 30 2d 66 6c 61 73 68 2d 6c 69  | 24-08").....(gemini-2.0-flash-li | 
| 6c6c0 |  74 65 2d 70 72 65 76 69 65 77 2d 30 32 2d 30 35    0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69  | te-preview-02-05......:descripti | 
| 6c6e0 |  6f 6e 20 22 47 65 6d 69 6e 69 20 32 2e 30 20 46    6c 61 73 68 20 6d 6f 64 65 6c 20 6f 70 74 69 6d  | on."Gemini.2.0.Flash.model.optim | 
| 6c700 |  69 7a 65 64 20 66 6f 72 20 63 6f 73 74 20 65 66    66 69 63 69 65 6e 63 79 20 61 6e 64 20 6c 6f 77  | ized.for.cost.efficiency.and.low | 
| 6c720 |  20 6c 61 74 65 6e 63 79 22 0a 20 20 20 20 20 3a    63 61 70 61 62 69 6c 69 74 69 65 73 20 28 6a 73  | .latency"......:capabilities.(js | 
| 6c740 |  6f 6e 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78    74 2d 77 69 6e 64 6f 77 20 31 30 30 30 0a 20 20  | on)......:context-window.1000... | 
| 6c760 |  20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30    2e 30 37 35 0a 20 20 20 20 20 3a 6f 75 74 70 75  | ...:input-cost.0.075......:outpu | 
| 6c780 |  74 2d 63 6f 73 74 20 30 2e 33 30 0a 20 20 20 20    20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32  | t-cost.0.30......:cutoff-date."2 | 
| 6c7a0 |  30 32 34 2d 30 38 22 29 0a 20 20 20 20 28 67 65    6d 69 6e 69 2d 32 2e 30 2d 70 72 6f 2d 65 78 70  | 024-08").....(gemini-2.0-pro-exp | 
| 6c7c0 |  2d 30 32 2d 30 35 0a 20 20 20 20 20 3a 64 65 73    63 72 69 70 74 69 6f 6e 20 22 4e 65 78 74 20 67  | -02-05......:description."Next.g | 
| 6c7e0 |  65 6e 2c 20 68 69 67 68 20 73 70 65 65 64 2c 20    6d 75 6c 74 69 6d 6f 64 61 6c 20 66 6f 72 20 61  | en,.high.speed,.multimodal.for.a | 
| 6c800 |  20 64 69 76 65 72 73 65 20 76 61 72 69 65 74 79    20 6f 66 20 74 61 73 6b 73 22 0a 20 20 20 20 20  | .diverse.variety.of.tasks"...... | 
| 6c820 |  3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74    6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 29 0a 20 20  | :capabilities.(tool-use.json)... | 
| 6c840 |  20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64    6f 77 20 32 30 30 30 0a 20 20 20 20 20 3a 69 6e  | ...:context-window.2000......:in | 
| 6c860 |  70 75 74 2d 63 6f 73 74 20 30 2e 30 30 0a 20 20    20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20  | put-cost.0.00......:output-cost. | 
| 6c880 |  30 2e 30 30 0a 20 20 20 20 20 3a 63 75 74 6f 66    66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 38 22  | 0.00......:cutoff-date."2024-08" | 
| 6c8a0 |  29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e    30 2d 66 6c 61 73 68 2d 74 68 69 6e 6b 69 6e 67  | ).....(gemini-2.0-flash-thinking | 
| 6c8c0 |  2d 65 78 70 2d 30 31 2d 32 31 0a 20 20 20 20 20    3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 4e 65  | -exp-01-21......:description."Ne | 
| 6c8e0 |  78 74 20 67 65 6e 2c 20 68 69 67 68 20 73 70 65    65 64 2c 20 6d 75 6c 74 69 6d 6f 64 61 6c 20 66  | xt.gen,.high.speed,.multimodal.f | 
| 6c900 |  6f 72 20 61 20 64 69 76 65 72 73 65 20 76 61 72    69 65 74 79 20 6f 66 20 74 61 73 6b 73 22 0a 20  | or.a.diverse.variety.of.tasks".. | 
| 6c920 |  20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65    73 20 28 6a 73 6f 6e 29 0a 20 20 20 20 20 3a 69  | ....:capabilities.(json)......:i | 
| 6c940 |  6e 70 75 74 2d 63 6f 73 74 20 30 2e 30 30 0a 20    20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74  | nput-cost.0.00......:output-cost | 
| 6c960 |  20 30 2e 30 30 0a 20 20 20 20 20 3a 63 75 74 6f    66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 38  | .0.00......:cutoff-date."2024-08 | 
| 6c980 |  22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32    2e 30 2d 66 6c 61 73 68 2d 65 78 70 0a 20 20 20  | ").....(gemini-2.0-flash-exp.... | 
| 6c9a0 |  20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22    4d 75 6c 74 69 2d 6d 6f 64 61 6c 2c 20 73 74 72  | ..:description."Multi-modal,.str | 
| 6c9c0 |  65 61 6d 69 6e 67 2c 20 74 6f 6f 6c 20 75 73 65    20 32 30 30 30 20 52 50 4d 22 0a 20 20 20 20 20  | eaming,.tool.use.2000.RPM"...... | 
| 6c9e0 |  3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74    6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64  | :capabilities.(tool-use.json.med | 
| 6ca00 |  69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74    79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67  | ia)......:mime-types.("image/png | 
| 6ca20 |  22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22    69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d 61  | "."image/jpeg"."image/webp"."ima | 
| 6ca40 |  67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f    68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20 20  | ge/heic"."image/heif"........... | 
| 6ca60 |  20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61    74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f  | ........"application/pdf"."text/ | 
| 6ca80 |  70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73 76    22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20  | plain"."text/csv"."text/html").. | 
| 6caa0 |  20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e    64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3a 69  | ....:context-window.1000......:i | 
| 6cac0 |  6e 70 75 74 2d 63 6f 73 74 20 30 2e 30 30 0a 20    20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74  | nput-cost.0.00......:output-cost | 
| 6cae0 |  20 30 2e 30 30 0a 20 20 20 20 20 3a 63 75 74 6f    66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 38  | .0.00......:cutoff-date."2024-08 | 
| 6cb00 |  22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d 32    2e 35 2d 70 72 6f 2d 65 78 70 2d 30 33 2d 32 35  | ").....(gemini-2.5-pro-exp-03-25 | 
| 6cb20 |  0a 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69    6f 6e 20 22 4c 69 6b 65 20 67 65 6d 69 6e 69 2d  | ......:description."Like.gemini- | 
| 6cb40 |  32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d    30 33 2d 32 35 20 62 75 74 20 6c 69 6d 69 74 65  | 2.5-pro-preview-03-25.but.limite | 
| 6cb60 |  64 20 74 6f 20 35 20 72 65 71 2f 6d 69 6e 2c 20    32 35 20 72 65 71 2f 64 61 79 22 0a 20 20 20 20  | d.to.5.req/min,.25.req/day"..... | 
| 6cb80 |  20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28    74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65  | .:capabilities.(tool-use.json.me | 
| 6cba0 |  64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d    74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e  | dia)......:mime-types.("image/pn | 
| 6cbc0 |  67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20    22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d  | g"."image/jpeg"."image/webp"."im | 
| 6cbe0 |  61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65    2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20  | age/heic"."image/heif".......... | 
| 6cc00 |  20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63    61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74  | ........."application/pdf"."text | 
| 6cc20 |  2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73    76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a  | /plain"."text/csv"."text/html"). | 
| 6cc40 |  20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69    6e 64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3a  | .....:context-window.1000......: | 
| 6cc60 |  69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 30 30 0a    20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73  | input-cost.0.00......:output-cos | 
| 6cc80 |  74 20 30 2e 30 30 0a 20 20 20 20 20 3a 63 75 74    6f 66 66 2d 64 61 74 65 20 22 32 30 32 35 2d 30  | t.0.00......:cutoff-date."2025-0 | 
| 6cca0 |  31 22 29 0a 20 20 20 20 28 67 65 6d 69 6e 69 2d    32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65 77 2d  | 1").....(gemini-2.5-pro-preview- | 
| 6ccc0 |  30 33 2d 32 35 0a 20 20 20 20 20 3a 64 65 73 63    72 69 70 74 69 6f 6e 20 22 45 6e 68 61 6e 63 65  | 03-25......:description."Enhance | 
| 6cce0 |  64 20 72 65 61 73 6f 6e 69 6e 67 2c 20 6d 75 6c    74 69 6d 6f 64 61 6c 20 75 6e 64 65 72 73 74 61  | d.reasoning,.multimodal.understa | 
| 6cd00 |  6e 64 69 6e 67 20 26 20 61 64 76 61 6e 63 65 64    20 63 6f 64 69 6e 67 22 0a 20 20 20 20 20 3a 63  | nding.&.advanced.coding"......:c | 
| 6cd20 |  61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f 6f    6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65 64 69 61  | apabilities.(tool-use.json.media | 
| 6cd40 |  29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70    65 73 20 28 22 69 6d 61 67 65 2f 70 6e 67 22 20  | )......:mime-types.("image/png". | 
| 6cd60 |  22 69 6d 61 67 65 2f 6a 70 65 67 22 20 22 69 6d    61 67 65 2f 77 65 62 70 22 20 22 69 6d 61 67 65  | "image/jpeg"."image/webp"."image | 
| 6cd80 |  2f 68 65 69 63 22 20 22 69 6d 61 67 65 2f 68 65    69 66 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  | /heic"."image/heif"............. | 
| 6cda0 |  20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69    6f 6e 2f 70 64 66 22 20 22 74 65 78 74 2f 70 6c  | ......"application/pdf"."text/pl | 
| 6cdc0 |  61 69 6e 22 20 22 74 65 78 74 2f 63 73 76 22 20    22 74 65 78 74 2f 68 74 6d 6c 22 29 0a 20 20 20  | ain"."text/csv"."text/html").... | 
| 6cde0 |  20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f    77 20 31 30 30 30 0a 20 20 20 20 20 3a 69 6e 70  | ..:context-window.1000......:inp | 
| 6ce00 |  75 74 2d 63 6f 73 74 20 31 2e 32 35 20 3b 20 32    2e 35 30 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f  | ut-cost.1.25.;.2.50.for.>200k.to | 
| 6ce20 |  6b 65 6e 73 0a 20 20 20 20 20 3a 6f 75 74 70 75    74 2d 63 6f 73 74 20 31 30 2e 30 30 20 3b 20 31  | kens......:output-cost.10.00.;.1 | 
| 6ce40 |  35 20 66 6f 72 20 3e 32 30 30 6b 20 74 6f 6b 65    6e 73 0a 20 20 20 20 20 3a 63 75 74 6f 66 66 2d  | 5.for.>200k.tokens......:cutoff- | 
| 6ce60 |  64 61 74 65 20 22 32 30 32 35 2d 30 31 22 29 0a    20 20 20 20 28 67 65 6d 69 6e 69 2d 32 2e 35 2d  | date."2025-01").....(gemini-2.5- | 
| 6ce80 |  66 6c 61 73 68 2d 70 72 65 76 69 65 77 2d 30 34    2d 31 37 0a 20 20 20 20 20 3a 64 65 73 63 72 69  | flash-preview-04-17......:descri | 
| 6cea0 |  70 74 69 6f 6e 20 22 42 65 73 74 20 47 65 6d 69    6e 69 20 6d 6f 64 65 6c 20 69 6e 20 74 65 72 6d  | ption."Best.Gemini.model.in.term | 
| 6cec0 |  73 20 6f 66 20 70 72 69 63 65 2d 70 65 72 66 6f    72 6d 61 6e 63 65 2c 20 6f 66 66 65 72 69 6e 67  | s.of.price-performance,.offering | 
| 6cee0 |  20 77 65 6c 6c 2d 72 6f 75 6e 64 65 64 20 63 61    70 61 62 69 6c 69 74 69 65 73 22 0a 20 20 20 20  | .well-rounded.capabilities"..... | 
| 6cf00 |  20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28    74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e 20 6d 65  | .:capabilities.(tool-use.json.me | 
| 6cf20 |  64 69 61 29 0a 20 20 20 20 20 3a 6d 69 6d 65 2d    74 79 70 65 73 20 28 22 69 6d 61 67 65 2f 70 6e  | dia)......:mime-types.("image/pn | 
| 6cf40 |  67 22 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 20    22 69 6d 61 67 65 2f 77 65 62 70 22 20 22 69 6d  | g"."image/jpeg"."image/webp"."im | 
| 6cf60 |  61 67 65 2f 68 65 69 63 22 20 22 69 6d 61 67 65    2f 68 65 69 66 22 0a 20 20 20 20 20 20 20 20 20  | age/heic"."image/heif".......... | 
| 6cf80 |  20 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63    61 74 69 6f 6e 2f 70 64 66 22 20 22 74 65 78 74  | ........."application/pdf"."text | 
| 6cfa0 |  2f 70 6c 61 69 6e 22 20 22 74 65 78 74 2f 63 73    76 22 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 0a  | /plain"."text/csv"."text/html"). | 
| 6cfc0 |  20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d 77 69    6e 64 6f 77 20 31 30 30 30 0a 20 20 20 20 20 3a  | .....:context-window.1000......: | 
| 6cfe0 |  69 6e 70 75 74 2d 63 6f 73 74 20 30 2e 31 35 0a    20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73  | input-cost.0.15......:output-cos | 
| 6d000 |  74 20 30 2e 36 30 20 3b 20 33 2e 35 30 20 66 6f    72 20 74 68 69 6e 6b 69 6e 67 0a 20 20 20 20 20  | t.0.60.;.3.50.for.thinking...... | 
| 6d020 |  3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30    32 35 2d 30 31 22 29 0a 20 20 20 20 28 67 65 6d  | :cutoff-date."2025-01").....(gem | 
| 6d040 |  69 6e 69 2d 32 2e 35 2d 66 6c 61 73 68 2d 70 72    65 76 69 65 77 2d 30 35 2d 32 30 0a 20 20 20 20  | ini-2.5-flash-preview-05-20..... | 
| 6d060 |  20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 42    65 73 74 20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c  | .:description."Best.Gemini.model | 
| 6d080 |  20 69 6e 20 74 65 72 6d 73 20 6f 66 20 70 72 69    63 65 2d 70 65 72 66 6f 72 6d 61 6e 63 65 2c 20  | .in.terms.of.price-performance,. | 
| 6d0a0 |  6f 66 66 65 72 69 6e 67 20 77 65 6c 6c 2d 72 6f    75 6e 64 65 64 20 63 61 70 61 62 69 6c 69 74 69  | offering.well-rounded.capabiliti | 
| 6d0c0 |  65 73 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69    6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65  | es"......:capabilities.(tool-use | 
| 6d0e0 |  20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20    20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22  | .json.media)......:mime-types.(" | 
| 6d100 |  69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67    65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77  | image/png"."image/jpeg"."image/w | 
| 6d120 |  65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63    22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20  | ebp"."image/heic"."image/heif".. | 
| 6d140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64  | ................."application/pd | 
| 6d160 |  66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20    22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74  | f"."text/plain"."text/csv"."text | 
| 6d180 |  2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f    6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 34  | /html")......:context-window.104 | 
| 6d1a0 |  38 20 3b 20 36 35 35 33 36 20 6f 75 74 70 75 74    20 74 6f 6b 65 6e 20 6c 69 6d 69 74 0a 20 20 20  | 8.;.65536.output.token.limit.... | 
| 6d1c0 |  20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30 2e    31 35 0a 20 20 20 20 20 3a 6f 75 74 70 75 74 2d  | ..:input-cost.0.15......:output- | 
| 6d1e0 |  63 6f 73 74 20 30 2e 36 30 20 3b 20 33 2e 35 30    20 66 6f 72 20 74 68 69 6e 6b 69 6e 67 0a 20 20  | cost.0.60.;.3.50.for.thinking... | 
| 6d200 |  20 20 20 3a 63 75 74 6f 66 66 2d 64 61 74 65 20    22 32 30 32 35 2d 30 31 22 29 0a 20 20 20 20 28  | ...:cutoff-date."2025-01").....( | 
| 6d220 |  67 65 6d 69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 70    72 65 76 69 65 77 2d 30 35 2d 30 36 0a 20 20 20  | gemini-2.5-pro-preview-05-06.... | 
| 6d240 |  20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22    50 72 65 76 69 6f 75 73 6c 79 20 74 68 65 20 6d  | ..:description."Previously.the.m | 
| 6d260 |  6f 73 74 20 70 6f 77 65 72 66 75 6c 20 47 65 6d    69 6e 69 20 74 68 69 6e 6b 69 6e 67 20 6d 6f 64  | ost.powerful.Gemini.thinking.mod | 
| 6d280 |  65 6c 20 77 69 74 68 20 73 74 61 74 65 2d 6f 66    2d 74 68 65 2d 61 72 74 20 70 65 72 66 6f 72 6d  | el.with.state-of-the-art.perform | 
| 6d2a0 |  61 6e 63 65 22 0a 20 20 20 20 20 3a 63 61 70 61    62 69 6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75  | ance"......:capabilities.(tool-u | 
| 6d2c0 |  73 65 20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20    20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20  | se.json.media)......:mime-types. | 
| 6d2e0 |  28 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d    61 67 65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65  | ("image/png"."image/jpeg"."image | 
| 6d300 |  2f 77 65 62 70 22 20 22 69 6d 61 67 65 2f 68 65    69 63 22 20 22 69 6d 61 67 65 2f 68 65 69 66 22  | /webp"."image/heic"."image/heif" | 
| 6d320 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f  | ..................."application/ | 
| 6d340 |  70 64 66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e    22 20 22 74 65 78 74 2f 63 73 76 22 20 22 74 65  | pdf"."text/plain"."text/csv"."te | 
| 6d360 |  78 74 2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a    63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31  | xt/html")......:context-window.1 | 
| 6d380 |  30 34 38 20 3b 20 36 35 35 33 36 20 6f 75 74 70    75 74 20 74 6f 6b 65 6e 20 6c 69 6d 69 74 0a 20  | 048.;.65536.output.token.limit.. | 
| 6d3a0 |  20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20    31 2e 32 35 20 3b 20 32 2e 35 30 20 66 6f 72 20  | ....:input-cost.1.25.;.2.50.for. | 
| 6d3c0 |  3e 32 30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20    20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31  | >200k.tokens......:output-cost.1 | 
| 6d3e0 |  30 2e 30 30 20 3b 20 31 35 20 66 6f 72 20 3e 32    30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20 20 20  | 0.00.;.15.for.>200k.tokens...... | 
| 6d400 |  3a 63 75 74 6f 66 66 2d 64 61 74 65 20 22 32 30    32 35 2d 30 31 22 29 0a 20 20 20 20 28 67 65 6d  | :cutoff-date."2025-01").....(gem | 
| 6d420 |  69 6e 69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76    69 65 77 2d 30 36 2d 30 35 0a 20 20 20 20 20 3a  | ini-2.5-pro-preview-06-05......: | 
| 6d440 |  64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 6f 73    74 20 70 6f 77 65 72 66 75 6c 20 47 65 6d 69 6e  | description."Most.powerful.Gemin | 
| 6d460 |  69 20 74 68 69 6e 6b 69 6e 67 20 6d 6f 64 65 6c    20 77 69 74 68 20 73 74 61 74 65 2d 6f 66 2d 74  | i.thinking.model.with.state-of-t | 
| 6d480 |  68 65 2d 61 72 74 20 70 65 72 66 6f 72 6d 61 6e    63 65 22 0a 20 20 20 20 20 3a 63 61 70 61 62 69  | he-art.performance"......:capabi | 
| 6d4a0 |  6c 69 74 69 65 73 20 28 74 6f 6f 6c 2d 75 73 65    20 6a 73 6f 6e 20 6d 65 64 69 61 29 0a 20 20 20  | lities.(tool-use.json.media).... | 
| 6d4c0 |  20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22    69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67  | ..:mime-types.("image/png"."imag | 
| 6d4e0 |  65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77    65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63  | e/jpeg"."image/webp"."image/heic | 
| 6d500 |  22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "."image/heif".................. | 
| 6d520 |  20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64    66 22 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20  | ."application/pdf"."text/plain". | 
| 6d540 |  22 74 65 78 74 2f 63 73 76 22 20 22 74 65 78 74    2f 68 74 6d 6c 22 29 0a 20 20 20 20 20 3a 63 6f  | "text/csv"."text/html")......:co | 
| 6d560 |  6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 31 30 34    38 20 3b 20 36 35 35 33 36 20 6f 75 74 70 75 74  | ntext-window.1048.;.65536.output | 
| 6d580 |  20 74 6f 6b 65 6e 20 6c 69 6d 69 74 0a 20 20 20    20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 31 2e  | .token.limit......:input-cost.1. | 
| 6d5a0 |  32 35 20 3b 20 32 2e 35 30 20 66 6f 72 20 3e 32    30 30 6b 20 74 6f 6b 65 6e 73 0a 20 20 20 20 20  | 25.;.2.50.for.>200k.tokens...... | 
| 6d5c0 |  3a 6f 75 74 70 75 74 2d 63 6f 73 74 20 31 30 2e    30 30 20 3b 20 31 35 20 66 6f 72 20 3e 32 30 30  | :output-cost.10.00.;.15.for.>200 | 
| 6d5e0 |  6b 20 74 6f 6b 65 6e 73 0a 20 20 20 20 20 3a 63    75 74 6f 66 66 2d 64 61 74 65 20 22 32 30 32 35  | k.tokens......:cutoff-date."2025 | 
| 6d600 |  2d 30 31 22 29 0a 20 20 20 20 28 67 65 6d 69 6e    69 2d 32 2e 30 2d 66 6c 61 73 68 2d 74 68 69 6e  | -01").....(gemini-2.0-flash-thin | 
| 6d620 |  6b 69 6e 67 2d 65 78 70 0a 20 20 20 20 20 3a 64    65 73 63 72 69 70 74 69 6f 6e 20 22 44 45 50 52  | king-exp......:description."DEPR | 
| 6d640 |  45 43 41 54 45 44 3a 20 50 6c 65 61 73 65 20 75    73 65 20 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c  | ECATED:.Please.use.gemini-2.0-fl | 
| 6d660 |  61 73 68 2d 74 68 69 6e 6b 69 6e 67 2d 65 78 70    2d 30 31 2d 32 31 20 69 6e 73 74 65 61 64 2e 22  | ash-thinking-exp-01-21.instead." | 
| 6d680 |  0a 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74    69 65 73 20 28 74 6f 6f 6c 2d 75 73 65 20 6d 65  | ......:capabilities.(tool-use.me | 
| 6d6a0 |  64 69 61 29 0a 20 20 20 20 20 3a 63 6f 6e 74 65    78 74 2d 77 69 6e 64 6f 77 20 33 32 0a 20 20 20  | dia)......:context-window.32.... | 
| 6d6c0 |  20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 28 22    69 6d 61 67 65 2f 70 6e 67 22 20 22 69 6d 61 67  | ..:mime-types.("image/png"."imag | 
| 6d6e0 |  65 2f 6a 70 65 67 22 20 22 69 6d 61 67 65 2f 77    65 62 70 22 20 22 69 6d 61 67 65 2f 68 65 69 63  | e/jpeg"."image/webp"."image/heic | 
| 6d700 |  22 20 22 69 6d 61 67 65 2f 68 65 69 66 22 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "."image/heif".................. | 
| 6d720 |  20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 22 74    65 78 74 2f 63 73 76 22 20 22 74 65 78 74 2f 68  | ."text/plain"."text/csv"."text/h | 
| 6d740 |  74 6d 6c 22 29 0a 20 20 20 20 20 3a 63 75 74 6f    66 66 2d 64 61 74 65 20 22 32 30 32 34 2d 30 38  | tml")......:cutoff-date."2024-08 | 
| 6d760 |  22 29 29 0a 20 20 22 4c 69 73 74 20 6f 66 20 61    76 61 69 6c 61 62 6c 65 20 47 65 6d 69 6e 69 20  | "))..."List.of.available.Gemini. | 
| 6d780 |  6d 6f 64 65 6c 73 20 61 6e 64 20 61 73 73 6f 63    69 61 74 65 64 20 70 72 6f 70 65 72 74 69 65 73  | models.and.associated.properties | 
| 6d7a0 |  2e 0a 4b 65 79 73 3a 0a 0a 2d 20 60 3a 64 65 73    63 72 69 70 74 69 6f 6e 27 3a 20 61 20 62 72 69  | ..Keys:..-.`:description':.a.bri | 
| 6d7c0 |  65 66 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f    66 20 74 68 65 20 6d 6f 64 65 6c 2e 0a 0a 2d 20  | ef.description.of.the.model...-. | 
| 6d7e0 |  60 3a 63 61 70 61 62 69 6c 69 74 69 65 73 27 3a    20 61 20 6c 69 73 74 20 6f 66 20 63 61 70 61 62  | `:capabilities':.a.list.of.capab | 
| 6d800 |  69 6c 69 74 69 65 73 20 73 75 70 70 6f 72 74 65    64 20 62 79 20 74 68 65 20 6d 6f 64 65 6c 2e 0a  | ilities.supported.by.the.model.. | 
| 6d820 |  0a 2d 20 60 3a 6d 69 6d 65 2d 74 79 70 65 73 27    3a 20 61 20 6c 69 73 74 20 6f 66 20 73 75 70 70  | .-.`:mime-types':.a.list.of.supp | 
| 6d840 |  6f 72 74 65 64 20 4d 49 4d 45 20 74 79 70 65 73    20 66 6f 72 20 6d 65 64 69 61 20 66 69 6c 65 73  | orted.MIME.types.for.media.files | 
| 6d860 |  2e 0a 0a 2d 20 60 3a 63 6f 6e 74 65 78 74 2d 77    69 6e 64 6f 77 27 3a 20 74 68 65 20 63 6f 6e 74  | ...-.`:context-window':.the.cont | 
| 6d880 |  65 78 74 20 77 69 6e 64 6f 77 20 73 69 7a 65 2c    20 69 6e 20 74 68 6f 75 73 61 6e 64 73 20 6f 66  | ext.window.size,.in.thousands.of | 
| 6d8a0 |  20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20 60 3a 69 6e    70 75 74 2d 63 6f 73 74 27 3a 20 74 68 65 20 69  | .tokens...-.`:input-cost':.the.i | 
| 6d8c0 |  6e 70 75 74 20 63 6f 73 74 2c 20 69 6e 20 55 53    20 64 6f 6c 6c 61 72 73 20 70 65 72 20 6d 69 6c  | nput.cost,.in.US.dollars.per.mil | 
| 6d8e0 |  6c 69 6f 6e 20 74 6f 6b 65 6e 73 2e 0a 0a 2d 20    60 3a 6f 75 74 70 75 74 2d 63 6f 73 74 27 3a 20  | lion.tokens...-.`:output-cost':. | 
| 6d900 |  74 68 65 20 6f 75 74 70 75 74 20 63 6f 73 74 2c    20 69 6e 20 55 53 20 64 6f 6c 6c 61 72 73 20 70  | the.output.cost,.in.US.dollars.p | 
| 6d920 |  65 72 20 6d 69 6c 6c 69 6f 6e 20 74 6f 6b 65 6e    73 2e 0a 0a 2d 20 60 3a 63 75 74 6f 66 66 2d 64  | er.million.tokens...-.`:cutoff-d | 
| 6d940 |  61 74 65 27 3a 20 74 68 65 20 6b 6e 6f 77 6c 65    64 67 65 20 63 75 74 6f 66 66 20 64 61 74 65 2e  | ate':.the.knowledge.cutoff.date. | 
| 6d960 |  0a 0a 2d 20 60 3a 72 65 71 75 65 73 74 2d 70 61    72 61 6d 73 27 3a 20 61 20 70 6c 69 73 74 20 6f  | ..-.`:request-params':.a.plist.o | 
| 6d980 |  66 20 61 64 64 69 74 69 6f 6e 61 6c 20 72 65 71    75 65 73 74 20 70 61 72 61 6d 65 74 65 72 73 20  | f.additional.request.parameters. | 
| 6d9a0 |  74 6f 0a 20 20 69 6e 63 6c 75 64 65 20 77 68 65    6e 20 75 73 69 6e 67 20 74 68 69 73 20 6d 6f 64  | to...include.when.using.this.mod | 
| 6d9c0 |  65 6c 2e 0a 0a 49 6e 66 6f 72 6d 61 74 69 6f 6e    20 61 62 6f 75 74 20 74 68 65 20 47 65 6d 69 6e  | el...Information.about.the.Gemin | 
| 6d9e0 |  69 20 6d 6f 64 65 6c 73 20 77 61 73 20 6f 62 74    61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 66  | i.models.was.obtained.from.the.f | 
| 6da00 |  6f 6c 6c 6f 77 69 6e 67 0a 73 6f 75 72 63 65 3a    0a 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 61 69 2e  | ollowing.source:..-.<https://ai. | 
| 6da20 |  67 6f 6f 67 6c 65 2e 64 65 76 2f 70 72 69 63 69    6e 67 3e 0a 2d 20 3c 68 74 74 70 73 3a 2f 2f 63  | google.dev/pricing>.-.<https://c | 
| 6da40 |  6c 6f 75 64 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f    76 65 72 74 65 78 2d 61 69 2f 67 65 6e 65 72 61  | loud.google.com/vertex-ai/genera | 
| 6da60 |  74 69 76 65 2d 61 69 2f 64 6f 63 73 2f 6c 65 61    72 6e 2f 6d 6f 64 65 6c 73 3e 0a 2d 20 3c 68 74  | tive-ai/docs/learn/models>.-.<ht | 
| 6da80 |  74 70 73 3a 2f 2f 61 69 2e 67 6f 6f 67 6c 65 2e    64 65 76 2f 67 65 6d 69 6e 69 2d 61 70 69 2f 64  | tps://ai.google.dev/gemini-api/d | 
| 6daa0 |  6f 63 73 2f 6d 6f 64 65 6c 73 3e 22 29 0a 0a 3b    3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63  | ocs/models>")..;;;###autoload.(c | 
| 6dac0 |  6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61    6b 65 2d 67 65 6d 69 6e 69 0a 20 20 20 20 28 6e  | l-defun.gptel-make-gemini.....(n | 
| 6dae0 |  61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72    67 73 20 68 65 61 64 65 72 20 6b 65 79 20 72 65  | ame.&key.curl-args.header.key.re | 
| 6db00 |  71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20    20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 6e  | quest-params...........(stream.n | 
| 6db20 |  69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 68    6f 73 74 20 22 67 65 6e 65 72 61 74 69 76 65 6c  | il)...........(host."generativel | 
| 6db40 |  61 6e 67 75 61 67 65 2e 67 6f 6f 67 6c 65 61 70    69 73 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20  | anguage.googleapis.com")........ | 
| 6db60 |  20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74    74 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20  | ...(protocol."https")........... | 
| 6db80 |  28 6d 6f 64 65 6c 73 20 67 70 74 65 6c 2d 2d 67    65 6d 69 6e 69 2d 6d 6f 64 65 6c 73 29 0a 20 20  | (models.gptel--gemini-models)... | 
| 6dba0 |  20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e    74 20 22 2f 76 31 62 65 74 61 2f 6d 6f 64 65 6c  | ........(endpoint."/v1beta/model | 
| 6dbc0 |  73 22 29 29 0a 0a 20 20 22 52 65 67 69 73 74 65    72 20 61 20 47 65 6d 69 6e 69 20 62 61 63 6b 65  | s"))...."Register.a.Gemini.backe | 
| 6dbe0 |  6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74    68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64  | nd.for.gptel.with.NAME...Keyword | 
| 6dc00 |  20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52    4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c  | .arguments:..CURL-ARGS.(optional | 
| 6dc20 |  29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61    64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61  | ).is.a.list.of.additional.Curl.a | 
| 6dc40 |  72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20    28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68  | rguments...HOST.(optional).is.th | 
| 6dc60 |  65 20 41 50 49 20 68 6f 73 74 2c 20 64 65 66 61    75 6c 74 73 20 74 6f 0a 5c 22 67 65 6e 65 72 61  | e.API.host,.defaults.to.\"genera | 
| 6dc80 |  74 69 76 65 6c 61 6e 67 75 61 67 65 2e 67 6f 6f    67 6c 65 61 70 69 73 2e 63 6f 6d 5c 22 2e 0a 0a  | tivelanguage.googleapis.com\"... | 
| 6dca0 |  4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74    20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f  | MODELS.is.a.list.of.available.mo | 
| 6dcc0 |  64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 73 79    6d 62 6f 6c 73 2e 0a 41 64 64 69 74 69 6f 6e 61  | del.names,.as.symbols..Additiona | 
| 6dce0 |  6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 73 70 65    63 69 66 79 20 73 75 70 70 6f 72 74 65 64 20 4c  | lly,.you.can.specify.supported.L | 
| 6dd00 |  4c 4d 20 63 61 70 61 62 69 6c 69 74 69 65 73 20    6c 69 6b 65 0a 76 69 73 69 6f 6e 20 6f 72 20 74  | LM.capabilities.like.vision.or.t | 
| 6dd20 |  6f 6f 6c 2d 75 73 65 20 62 79 20 61 70 70 65 6e    64 69 6e 67 20 61 20 70 6c 69 73 74 20 74 6f 20  | ool-use.by.appending.a.plist.to. | 
| 6dd40 |  74 68 65 20 6d 6f 64 65 6c 20 77 69 74 68 20 6d    6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c  | the.model.with.more.information, | 
| 6dd60 |  20 69 6e 20 74 68 65 20 66 6f 72 6d 0a 0a 20 28    6d 6f 64 65 6c 2d 6e 61 6d 65 20 2e 20 70 6c 69  | .in.the.form...(model-name...pli | 
| 6dd80 |  73 74 29 0a 0a 46 6f 72 20 61 20 6c 69 73 74 20    6f 66 20 63 75 72 72 65 6e 74 6c 79 20 72 65 63  | st)..For.a.list.of.currently.rec | 
| 6dda0 |  6f 67 6e 69 7a 65 64 20 70 6c 69 73 74 20 6b 65    79 73 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d 2d  | ognized.plist.keys,.see.`gptel-- | 
| 6ddc0 |  67 65 6d 69 6e 69 2d 6d 6f 64 65 6c 73 27 2e 20    41 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61 20  | gemini-models'..An.example.of.a. | 
| 6dde0 |  6d 6f 64 65 6c 20 73 70 65 63 69 66 69 63 61 74    69 6f 6e 0a 69 6e 63 6c 75 64 69 6e 67 20 62 6f  | model.specification.including.bo | 
| 6de00 |  74 68 20 6b 69 6e 64 73 20 6f 66 20 73 70 65 63    73 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a 5c 5c 3d 27  | th.kinds.of.specs:..:models.\\=' | 
| 6de20 |  28 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61 73    68 2d 6c 69 74 65 20 20 20 20 20 20 20 20 20 20  | (gemini-2.0-flash-lite.......... | 
| 6de40 |  20 20 20 20 3b 53 69 6d 70 6c 65 20 73 70 65 63    73 0a 20 20 67 65 6d 69 6e 69 2d 31 2e 35 2d 66  | ....;Simple.specs...gemini-1.5-f | 
| 6de60 |  6c 61 73 68 0a 20 20 28 67 65 6d 69 6e 69 2d 31    2e 35 2d 70 72 6f 2d 6c 61 74 65 73 74 20 20 20  | lash...(gemini-1.5-pro-latest... | 
| 6de80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3b 46 75    6c 6c 20 73 70 65 63 0a 20 20 20 3a 64 65 73 63  | .............;Full.spec....:desc | 
| 6dea0 |  72 69 70 74 69 6f 6e 0a 20 20 20 5c 22 43 6f 6d    70 6c 65 78 20 72 65 61 73 6f 6e 69 6e 67 20 74  | ription....\"Complex.reasoning.t | 
| 6dec0 |  61 73 6b 73 2c 20 70 72 6f 62 6c 65 6d 20 73 6f    6c 76 69 6e 67 20 61 6e 64 20 64 61 74 61 20 65  | asks,.problem.solving.and.data.e | 
| 6dee0 |  78 74 72 61 63 74 69 6f 6e 5c 22 0a 20 20 20 3a    63 61 70 61 62 69 6c 69 74 69 65 73 20 28 74 6f  | xtraction\"....:capabilities.(to | 
| 6df00 |  6f 6c 20 6a 73 6f 6e 29 0a 20 20 20 3a 6d 69 6d    65 2d 74 79 70 65 73 0a 20 20 20 28 5c 22 69 6d  | ol.json)....:mime-types....(\"im | 
| 6df20 |  61 67 65 2f 6a 70 65 67 5c 22 20 5c 22 69 6d 61    67 65 2f 70 6e 67 5c 22 20 5c 22 69 6d 61 67 65  | age/jpeg\".\"image/png\".\"image | 
| 6df40 |  2f 77 65 62 70 5c 22 20 5c 22 69 6d 61 67 65 2f    68 65 69 63 5c 22 29 29 29 0a 0a 0a 53 54 52 45  | /webp\".\"image/heic\")))...STRE | 
| 6df60 |  41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20    74 6f 20 65 6e 61 62 6c 65 20 73 74 72 65 61 6d  | AM.is.a.boolean.to.enable.stream | 
| 6df80 |  69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64    65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65  | ing.responses,.defaults.to.false | 
| 6dfa0 |  2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74    69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69 65 73  | ...PROTOCOL.(optional).specifies | 
| 6dfc0 |  20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 5c    22 68 74 74 70 73 5c 22 20 62 79 20 64 65 66 61  | .the.protocol,.\"https\".by.defa | 
| 6dfe0 |  75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28    6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65  | ult...ENDPOINT.(optional).is.the | 
| 6e000 |  20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f    72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64  | .API.endpoint.for.completions,.d | 
| 6e020 |  65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31    62 65 74 61 2f 6d 6f 64 65 6c 73 5c 22 2e 0a 0a  | efaults.to.\"/v1beta/models\"... | 
| 6e040 |  48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c    29 20 69 73 20 66 6f 72 20 61 64 64 69 74 69 6f  | HEADER.(optional).is.for.additio | 
| 6e060 |  6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73    65 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65  | nal.headers.to.send.with.each.re | 
| 6e080 |  71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c    64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f 72  | quest...It.should.be.an.alist.or | 
| 6e0a0 |  20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74    20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74  | .a.function.that.retuns.an.alist | 
| 6e0c0 |  2c 20 6c 69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e    74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22  | ,.like:..((\"Content-Type\"...\" | 
| 6e0e0 |  61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e    5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f  | application/json\"))..KEY.(optio | 
| 6e100 |  6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62    6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69  | nal).is.a.variable.whose.value.i | 
| 6e120 |  73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f    72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20  | s.the.API.key,.or.function.that. | 
| 6e140 |  72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e    0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d 53  | returns.the.key...REQUEST-PARAMS | 
| 6e160 |  20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61    20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69  | .(optional).is.a.plist.of.additi | 
| 6e180 |  6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65 73    74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61 73  | onal.HTTP.request.parameters.(as | 
| 6e1a0 |  20 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64    20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65  | .plist.keys).and.values.supporte | 
| 6e1c0 |  64 20 62 79 20 74 68 65 20 41 50 49 2e 20 20 55    73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74 20  | d.by.the.API...Use.these.to.set. | 
| 6e1e0 |  70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20    67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70  | parameters.that.gptel.does.not.p | 
| 6e200 |  72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74 69    6f 6e 73 0a 66 6f 72 2e 22 0a 20 20 28 64 65 63  | rovide.user.options.for."...(dec | 
| 6e220 |  6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29    0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e  | lare.(indent.1))...(let.((backen | 
| 6e240 |  64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 67    65 6d 69 6e 69 0a 20 20 20 20 20 20 20 20 20 20  | d.(gptel--make-gemini........... | 
| 6e260 |  20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72    67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20  | ........:curl-args.curl-args.... | 
| 6e280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20  | ...............:name.name....... | 
| 6e2a0 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73    74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20  | ............:host.host.......... | 
| 6e2c0 |  20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72    20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20  | .........:header.header......... | 
| 6e2e0 |  20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c    73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63 65 73  | ..........:models.(gptel--proces | 
| 6e300 |  73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s-models.models)................ | 
| 6e320 |  20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f    74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20  | ...:protocol.protocol........... | 
| 6e340 |  20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e    74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20  | ........:endpoint.endpoint...... | 
| 6e360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74    72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20  | .............:stream.stream..... | 
| 6e380 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72    65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 72 65  | ..............:request-params.re | 
| 6e3a0 |  71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | quest-params...................: | 
| 6e3c0 |  6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28  | key.key...................:url.( | 
| 6e3e0 |  6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lambda.()....................... | 
| 6e400 |  20 20 20 28 6c 65 74 20 28 28 6d 65 74 68 6f 64    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...(let.((method................ | 
| 6e420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 69 66 20 28 61 6e 64 20 73 74 72 65 61 6d  | .................(if.(and.stream | 
| 6e440 |  20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 20    67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20  | .gptel-use-curl.gptel-stream)... | 
| 6e460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 6e480 |  20 20 22 73 74 72 65 61 6d 47 65 6e 65 72 61 74    65 43 6f 6e 74 65 6e 74 22 0a 20 20 20 20 20 20  | .."streamGenerateContent"....... | 
| 6e4a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 22 67 65 6e  | ............................"gen | 
| 6e4c0 |  65 72 61 74 65 43 6f 6e 74 65 6e 74 22 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | erateContent")))................ | 
| 6e4e0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72    6d 61 74 20 22 25 73 3a 2f 2f 25 73 25 73 2f 25  | ............(format."%s://%s%s/% | 
| 6e500 |  73 3a 25 73 3f 6b 65 79 3d 25 73 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s:%s?key=%s".................... | 
| 6e520 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20  | ................protocol........ | 
| 6e540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74  | ............................host | 
| 6e560 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 6e580 |  20 20 20 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....endpoint.................... | 
| 6e5a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20  | ................gptel-model..... | 
| 6e5c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d  | ...............................m | 
| 6e5e0 |  65 74 68 6f 64 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ethod........................... | 
| 6e600 |  20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 29  | .........(gptel--get-api-key)))) | 
| 6e620 |  29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62    61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65  | ))).....(prog1.backend.......(se | 
| 6e640 |  74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61    6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d  | tf.(alist-get.name.gptel--known- | 
| 6e660 |  62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | backends........................ | 
| 6e680 |  6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63  | nil.nil.#'equal).............bac | 
| 6e6a0 |  6b 65 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69    64 65 20 27 67 70 74 65 6c 2d 67 65 6d 69 6e 69  | kend))))..(provide.'gptel-gemini | 
| 6e6c0 |  29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 67 65 6d 69    6e 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a  | ).;;;.gptel-gemini.el.ends.here. | 
| 6e6e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e700 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e720 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e7a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e7c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e7e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e800 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 65 6c  | gptel-0.9.8.5/gptel-transient.el | 
| 6e820 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e840 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e860 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 6e880 |  30 32 32 34 32 32 37 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 35 31 32 30 00 20 30 00 00 00  | 0224227.00000000000.015120..0... | 
| 6e8a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e8c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e8e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e900 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 6e920 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 6e940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e9a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e9c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e9e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6ea00 |  3b 3b 3b 20 67 70 74 65 6c 2d 74 72 61 6e 73 69    65 6e 74 2e 65 6c 20 2d 2d 2d 20 54 72 61 6e 73  | ;;;.gptel-transient.el.---.Trans | 
| 6ea20 |  69 65 6e 74 20 6d 65 6e 75 20 66 6f 72 20 67 70    74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c  | ient.menu.for.gptel..-*-.lexical | 
| 6ea40 |  2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d    0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28  | -binding:.t;.-*-..;;.Copyright.( | 
| 6ea60 |  43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | C).2023-2025..Karthik.Chikmagalu | 
| 6ea80 |  72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | r..;;.Author:.Karthik.Chikmagalu | 
| 6eaa0 |  72 20 3c 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61    67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e  | r.<karthikchikmagalur@gmail.com> | 
| 6eac0 |  0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 63 6f    6e 76 65 6e 69 65 6e 63 65 0a 0a 3b 3b 20 53 50  | .;;.Keywords:.convenience..;;.SP | 
| 6eae0 |  44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74    69 66 69 65 72 3a 20 47 50 4c 2d 33 2e 30 2d 6f  | DX-License-Identifier:.GPL-3.0-o | 
| 6eb00 |  72 2d 6c 61 74 65 72 0a 0a 3b 3b 20 54 68 69 73    20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65  | r-later..;;.This.program.is.free | 
| 6eb20 |  20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63    61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20  | .software;.you.can.redistribute. | 
| 6eb40 |  69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79    0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65  | it.and/or.modify.;;.it.under.the | 
| 6eb60 |  20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e    55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63  | .terms.of.the.GNU.General.Public | 
| 6eb80 |  20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c    69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20  | .License.as.published.by.;;.the. | 
| 6eba0 |  46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f    75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72  | Free.Software.Foundation,.either | 
| 6ebc0 |  20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68    65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b  | .version.3.of.the.License,.or.;; | 
| 6ebe0 |  20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e    29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73  | .(at.your.option).any.later.vers | 
| 6ec00 |  69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72    6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62  | ion...;;.This.program.is.distrib | 
| 6ec20 |  75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65    20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65  | uted.in.the.hope.that.it.will.be | 
| 6ec40 |  20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20    57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52  | .useful,.;;.but.WITHOUT.ANY.WARR | 
| 6ec60 |  41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76    65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77  | ANTY;.without.even.the.implied.w | 
| 6ec80 |  61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45    52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72  | arranty.of.;;.MERCHANTABILITY.or | 
| 6eca0 |  20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50    41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53  | .FITNESS.FOR.A.PARTICULAR.PURPOS | 
| 6ecc0 |  45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47    4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  | E...See.the.;;.GNU.General.Publi | 
| 6ece0 |  63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f    72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20  | c.License.for.more.details...;;. | 
| 6ed00 |  59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20    72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20  | You.should.have.received.a.copy. | 
| 6ed20 |  6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72    61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73  | of.the.GNU.General.Public.Licens | 
| 6ed40 |  65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20    74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49  | e.;;.along.with.this.program...I | 
| 6ed60 |  66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70    73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f  | f.not,.see.<https://www.gnu.org/ | 
| 6ed80 |  6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b    20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b  | licenses/>...;;;.Commentary:..;; | 
| 6eda0 |  0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71    75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72  | ..;;;.Code:.(require.'cl-lib).(r | 
| 6edc0 |  65 71 75 69 72 65 20 27 67 70 74 65 6c 29 0a 28    72 65 71 75 69 72 65 20 27 74 72 61 6e 73 69 65  | equire.'gptel).(require.'transie | 
| 6ede0 |  6e 74 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75    6e 63 74 69 6f 6e 20 65 64 69 66 66 2d 72 65 67  | nt)..(declare-function.ediff-reg | 
| 6ee00 |  69 6f 6e 73 2d 69 6e 74 65 72 6e 61 6c 20 22 65    64 69 66 66 22 29 0a 28 64 65 63 6c 61 72 65 2d  | ions-internal."ediff").(declare- | 
| 6ee20 |  66 75 6e 63 74 69 6f 6e 20 65 64 69 66 66 2d 6d    61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 66 65  | function.ediff-make-cloned-buffe | 
| 6ee40 |  72 20 22 65 64 69 66 66 2d 75 74 69 6c 73 22 29    0a 0a 0c 0a 3b 3b 20 2a 20 48 65 6c 70 65 72 20  | r."ediff-utils")....;;.*.Helper. | 
| 6ee60 |  66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 20 76 61    72 73 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61  | functions.and.vars..(defvar-loca | 
| 6ee80 |  6c 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65    2d 6f 76 65 72 6c 61 79 73 20 6e 69 6c 0a 20 20  | l.gptel--rewrite-overlays.nil... | 
| 6eea0 |  22 4c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20    72 65 77 72 69 74 65 20 6f 76 65 72 6c 61 79 73  | "List.of.active.rewrite.overlays | 
| 6eec0 |  20 69 6e 20 74 68 65 20 62 75 66 66 65 72 2e 22    29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d  | .in.the.buffer.")..(defun.gptel- | 
| 6eee0 |  2d 72 65 77 72 69 74 65 2d 73 61 6e 69 74 69 7a    65 2d 6f 76 65 72 6c 61 79 73 20 28 29 0a 20 20  | -rewrite-sanitize-overlays.()... | 
| 6ef00 |  22 45 6e 73 75 72 65 20 67 70 74 65 6c 27 73 20    72 65 77 72 69 74 65 20 6f 76 65 72 6c 61 79 73  | "Ensure.gptel's.rewrite.overlays | 
| 6ef20 |  20 69 6e 20 62 75 66 66 65 72 20 61 72 65 20 63    6f 6e 73 69 73 74 65 6e 74 2e 22 0a 20 20 28 73  | .in.buffer.are.consistent."...(s | 
| 6ef40 |  65 74 71 20 67 70 74 65 6c 2d 2d 72 65 77 72 69    74 65 2d 6f 76 65 72 6c 61 79 73 0a 20 20 20 20  | etq.gptel--rewrite-overlays..... | 
| 6ef60 |  20 20 20 20 28 63 6c 2d 64 65 6c 65 74 65 2d 69    66 2d 6e 6f 74 20 23 27 6f 76 65 72 6c 61 79 2d  | ....(cl-delete-if-not.#'overlay- | 
| 6ef80 |  62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | buffer.......................... | 
| 6efa0 |  20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d    6f 76 65 72 6c 61 79 73 29 29 29 0a 0a 28 64 65  | .gptel--rewrite-overlays)))..(de | 
| 6efc0 |  66 76 61 72 20 67 70 74 65 6c 2d 2d 73 65 74 2d    62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6e  | fvar.gptel--set-buffer-locally.n | 
| 6efe0 |  69 6c 0a 20 20 22 53 65 74 20 6d 6f 64 65 6c 20    70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20  | il..."Set.model.parameters.from. | 
| 6f000 |  60 67 70 74 65 6c 2d 6d 65 6e 75 27 20 62 75 66    66 65 72 2d 6c 6f 63 61 6c 6c 79 2e 0a 0a 41 66  | `gptel-menu'.buffer-locally...Af | 
| 6f020 |  66 65 63 74 73 20 74 68 65 20 73 79 73 74 65 6d    20 6d 65 73 73 61 67 65 20 74 6f 6f 2e 22 29 0a  | fects.the.system.message.too."). | 
| 6f040 |  0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73    65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 28 73  | .(defun.gptel--set-with-scope.(s | 
| 6f060 |  79 6d 20 76 61 6c 75 65 20 26 6f 70 74 69 6f 6e    61 6c 20 73 63 6f 70 65 29 0a 20 20 22 53 65 74  | ym.value.&optional.scope)..."Set | 
| 6f080 |  20 53 59 4d 42 4f 4c 27 73 20 73 79 6d 62 6f 6c    2d 76 61 6c 75 65 20 74 6f 20 56 41 4c 55 45 20  | .SYMBOL's.symbol-value.to.VALUE. | 
| 6f0a0 |  77 69 74 68 20 53 43 4f 50 45 2e 0a 0a 49 66 20    53 43 4f 50 45 20 69 73 20 74 2c 20 73 65 74 20  | with.SCOPE...If.SCOPE.is.t,.set. | 
| 6f0c0 |  69 74 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c    79 2e 0a 49 66 20 53 43 4f 50 45 20 69 73 20 31  | it.buffer-locally..If.SCOPE.is.1 | 
| 6f0e0 |  2c 20 72 65 73 65 74 20 69 74 20 61 66 74 65 72    20 74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 2d  | ,.reset.it.after.the.next.gptel- | 
| 6f100 |  72 65 71 75 65 73 74 2e 20 28 6f 6e 65 73 68 6f    74 29 0a 4f 74 68 65 72 77 69 73 65 2c 20 63 6c  | request..(oneshot).Otherwise,.cl | 
| 6f120 |  65 61 72 20 61 6e 79 20 62 75 66 66 65 72 2d 6c    6f 63 61 6c 20 76 61 6c 75 65 20 61 6e 64 20 73  | ear.any.buffer-local.value.and.s | 
| 6f140 |  65 74 20 69 74 73 20 64 65 66 61 75 6c 74 0a 67    6c 6f 62 61 6c 20 76 61 6c 75 65 2e 22 0a 20 20  | et.its.default.global.value."... | 
| 6f160 |  28 70 63 61 73 65 20 73 63 6f 70 65 0a 20 20 20    20 28 31 20 28 70 75 74 20 73 79 6d 20 27 67 70  | (pcase.scope.....(1.(put.sym.'gp | 
| 6f180 |  74 65 6c 2d 68 69 73 74 6f 72 79 20 28 73 79 6d    62 6f 6c 2d 76 61 6c 75 65 20 73 79 6d 29 29 0a  | tel-history.(symbol-value.sym)). | 
| 6f1a0 |  20 20 20 20 20 20 20 28 73 65 74 20 73 79 6d 20    76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 28 6c  | .......(set.sym.value)........(l | 
| 6f1c0 |  65 74 72 65 63 20 28 28 72 65 73 74 6f 72 65 2d    76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20  | etrec.((restore-value........... | 
| 6f1e0 |  20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .......(lambda.()............... | 
| 6f200 |  20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f    6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65  | .....(remove-hook.'gptel-post-re | 
| 6f220 |  71 75 65 73 74 2d 68 6f 6f 6b 20 72 65 73 74 6f    72 65 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20  | quest-hook.restore-value)....... | 
| 6f240 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75    6e 2d 61 74 2d 74 69 6d 65 20 20 20 20 20 20 20  | .............(run-at-time....... | 
| 6f260 |  20 20 3b 20 52 65 71 75 69 72 65 64 20 74 6f 20    77 6f 72 6b 20 61 72 6f 75 6e 64 20 6c 65 74 20  | ..;.Required.to.work.around.let. | 
| 6f280 |  62 69 6e 64 69 6e 67 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 6e  | bindings.....................0.n | 
| 6f2a0 |  69 6c 20 28 6c 61 6d 62 64 61 20 28 73 29 20 20    20 20 20 20 20 20 3b 20 6f 74 68 65 72 77 69 73  | il.(lambda.(s)........;.otherwis | 
| 6f2c0 |  65 20 74 68 69 73 20 63 68 61 6e 67 65 20 69 73    20 6f 76 65 72 77 72 69 74 74 65 6e 21 0a 20 20  | e.this.change.is.overwritten!... | 
| 6f2e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 73 65 74 20 73  | ..........................(set.s | 
| 6f300 |  20 28 67 65 74 20 73 20 27 67 70 74 65 6c 2d 68    69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20  | .(get.s.'gptel-history))........ | 
| 6f320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 75 74 20 73 20 27 67 70 74  | .....................(put.s.'gpt | 
| 6f340 |  65 6c 2d 68 69 73 74 6f 72 79 20 6e 69 6c 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | el-history.nil))................ | 
| 6f360 |  20 20 20 20 20 73 79 6d 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20  | .....sym))))..........(add-hook. | 
| 6f380 |  27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 71 75    65 73 74 2d 68 6f 6f 6b 20 72 65 73 74 6f 72 65  | 'gptel-post-request-hook.restore | 
| 6f3a0 |  2d 76 61 6c 75 65 29 29 29 0a 20 20 20 20 28 27    74 20 28 73 65 74 20 28 6d 61 6b 65 2d 6c 6f 63  | -value))).....('t.(set.(make-loc | 
| 6f3c0 |  61 6c 2d 76 61 72 69 61 62 6c 65 20 73 79 6d 29    20 76 61 6c 75 65 29 29 0a 20 20 20 20 28 5f 20  | al-variable.sym).value)).....(_. | 
| 6f3e0 |  28 6b 69 6c 6c 2d 6c 6f 63 61 6c 2d 76 61 72 69    61 62 6c 65 20 73 79 6d 29 0a 20 20 20 20 20 20  | (kill-local-variable.sym)....... | 
| 6f400 |  20 28 73 65 74 20 73 79 6d 20 76 61 6c 75 65 29    29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74  | .(set.sym.value))))..(defvar.gpt | 
| 6f420 |  65 6c 2d 2d 70 72 65 73 65 74 20 6e 69 6c 0a 20    20 22 4e 61 6d 65 20 6f 66 20 6c 61 73 74 20 61  | el--preset.nil..."Name.of.last.a | 
| 6f440 |  70 70 6c 69 65 64 20 67 70 74 65 6c 20 70 72 65    73 65 74 2e 0a 0a 46 6f 72 20 69 6e 74 65 72 6e  | pplied.gptel.preset...For.intern | 
| 6f460 |  61 6c 20 75 73 65 20 6f 6e 6c 79 2e 22 29 0a 0a    28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70 72  | al.use.only.")..(defun.gptel--pr | 
| 6f480 |  65 73 65 74 2d 6d 69 73 6d 61 74 63 68 2d 70 20    28 6e 61 6d 65 29 0a 20 20 22 43 68 65 63 6b 20  | eset-mismatch-p.(name)..."Check. | 
| 6f4a0 |  69 66 20 67 70 74 65 6c 20 70 72 65 73 65 74 20    77 69 74 68 20 4e 41 4d 45 20 69 73 20 69 6e 20  | if.gptel.preset.with.NAME.is.in. | 
| 6f4c0 |  65 66 66 65 63 74 2e 22 0a 20 20 28 6c 65 74 20    28 28 65 6c 6d 20 28 6f 72 20 28 67 70 74 65 6c  | effect."...(let.((elm.(or.(gptel | 
| 6f4e0 |  2d 67 65 74 2d 70 72 65 73 65 74 20 6e 61 6d 65    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -get-preset.name)............... | 
| 6f500 |  20 20 20 28 67 70 74 65 6c 2d 67 65 74 2d 70 72    65 73 65 74 20 28 69 6e 74 65 72 6e 2d 73 6f 66  | ...(gptel-get-preset.(intern-sof | 
| 6f520 |  74 20 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20    20 20 20 6b 65 79 20 76 61 6c 29 0a 20 20 20 20  | t.name)))).........key.val)..... | 
| 6f540 |  28 63 61 74 63 68 20 27 6d 69 73 6d 61 74 63 68    0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 65 6c  | (catch.'mismatch.......(while.el | 
| 6f560 |  6d 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20    6b 65 79 20 28 70 6f 70 20 65 6c 6d 29 20 76 61  | m.........(setq.key.(pop.elm).va | 
| 6f580 |  6c 20 28 70 6f 70 20 65 6c 6d 29 29 0a 20 20 20    20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20  | l.(pop.elm)).........(cond...... | 
| 6f5a0 |  20 20 20 20 28 28 6d 65 6d 71 20 6b 65 79 20 27    28 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 3a 70  | ....((memq.key.'(:description.:p | 
| 6f5c0 |  61 72 65 6e 74 73 29 29 20 27 6e 69 6c 29 0a 20    20 20 20 20 20 20 20 20 28 28 65 71 20 6b 65 79  | arents)).'nil)..........((eq.key | 
| 6f5e0 |  20 3a 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20    20 20 20 20 28 6f 72 20 28 65 71 75 61 6c 20 67  | .:system)...........(or.(equal.g | 
| 6f600 |  70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73    73 61 67 65 20 76 61 6c 29 0a 20 20 20 20 20 20  | ptel--system-message.val)....... | 
| 6f620 |  20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74    2a 20 28 28 28 73 79 6d 62 6f 6c 70 20 76 61 6c  | ........(and-let*.(((symbolp.val | 
| 6f640 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 20 28  | ))..........................(p.( | 
| 6f660 |  61 73 73 71 20 76 61 6c 20 67 70 74 65 6c 2d 64    69 72 65 63 74 69 76 65 73 29 29 29 0a 20 20 20  | assq.val.gptel-directives))).... | 
| 6f680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71    75 61 6c 20 67 70 74 65 6c 2d 2d 73 79 73 74 65  | .............(equal.gptel--syste | 
| 6f6a0 |  6d 2d 6d 65 73 73 61 67 65 20 28 63 64 72 20 70    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | m-message.(cdr.p)))............. | 
| 6f6c0 |  20 20 28 74 68 72 6f 77 20 27 6d 69 73 6d 61 74    63 68 20 74 29 29 29 0a 20 20 20 20 20 20 20 20  | ..(throw.'mismatch.t)))......... | 
| 6f6e0 |  20 28 28 65 71 20 6b 65 79 20 3a 62 61 63 6b 65    6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f  | .((eq.key.:backend)...........(o | 
| 6f700 |  72 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 76    61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | r.(if.(stringp.val)............. | 
| 6f720 |  20 20 20 20 20 20 28 65 71 75 61 6c 20 28 67 70    74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65  | ......(equal.(gptel-backend-name | 
| 6f740 |  20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20    76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .gptel-backend).val)............ | 
| 6f760 |  20 20 20 20 20 28 65 71 20 67 70 74 65 6c 2d 62    61 63 6b 65 6e 64 20 76 61 6c 29 29 0a 20 20 20  | .....(eq.gptel-backend.val)).... | 
| 6f780 |  20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 6f    77 20 27 6d 69 73 6d 61 74 63 68 20 74 29 29 29  | ...........(throw.'mismatch.t))) | 
| 6f7a0 |  0a 20 20 20 20 20 20 20 20 20 28 28 65 71 20 6b    65 79 20 3a 74 6f 6f 6c 73 29 0a 20 20 20 20 20  | ..........((eq.key.:tools)...... | 
| 6f7c0 |  20 20 20 20 20 28 69 66 20 28 65 71 20 28 63 61    72 2d 73 61 66 65 20 76 61 6c 29 20 3a 61 70 70  | .....(if.(eq.(car-safe.val).:app | 
| 6f7e0 |  65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20  | end)...............(cl-loop.for. | 
| 6f800 |  6e 61 6d 65 20 69 6e 20 28 63 64 72 20 76 61 6c    29 20 3b 70 72 65 73 65 74 20 74 6f 6f 6c 73 20  | name.in.(cdr.val).;preset.tools. | 
| 6f820 |  63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 67 70 74    65 6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20  | contained.in.gptel-tools........ | 
| 6f840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 28 67 70  | ................unless.(memq.(gp | 
| 6f860 |  74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 20 6e 61 6d    65 29 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 29 0a  | tel-get-tool.name).gptel-tools). | 
| 6f880 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 64 6f 20 28 74 68 72 6f 77  | .......................do.(throw | 
| 6f8a0 |  20 27 6d 69 73 6d 61 74 63 68 20 74 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28  | .'mismatch.t)).............(or.( | 
| 6f8c0 |  65 71 75 61 6c 20 28 73 6f 72 74 20 76 61 6c 20    23 27 73 74 72 69 6e 67 2d 6c 65 73 73 70 29 20  | equal.(sort.val.#'string-lessp). | 
| 6f8e0 |  3b 70 72 65 73 65 74 20 74 6f 6f 6c 73 20 73 61    6d 65 20 61 73 20 67 70 74 65 6c 2d 74 6f 6f 6c  | ;preset.tools.same.as.gptel-tool | 
| 6f900 |  73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 73 6f 72 74 20 28  | s........................(sort.( | 
| 6f920 |  6d 61 70 63 61 72 20 23 27 67 70 74 65 6c 2d 74    6f 6f 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 74  | mapcar.#'gptel-tool-name.gptel-t | 
| 6f940 |  6f 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ools)........................... | 
| 6f960 |  20 20 20 23 27 73 74 72 69 6e 67 2d 6c 65 73 73    70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ...#'string-lessp))............. | 
| 6f980 |  20 20 20 20 28 74 68 72 6f 77 20 27 6d 69 73 6d    61 74 63 68 20 74 29 29 29 29 0a 20 20 20 20 20  | ....(throw.'mismatch.t))))...... | 
| 6f9a0 |  20 20 20 20 28 74 20 28 6c 65 74 2a 20 28 28 73    75 66 66 69 78 20 28 73 75 62 73 74 72 69 6e 67  | ....(t.(let*.((suffix.(substring | 
| 6f9c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66  | .............................(if | 
| 6f9e0 |  20 28 73 79 6d 62 6f 6c 70 20 6b 65 79 29 20 28    73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 29  | .(symbolp.key).(symbol-name.key) | 
| 6fa00 |  20 6b 65 79 29 20 31 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79  | .key).1))....................(sy | 
| 6fa20 |  6d 20 28 6f 72 20 28 69 6e 74 65 72 6e 2d 73 6f    66 74 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65  | m.(or.(intern-soft.(concat."gpte | 
| 6fa40 |  6c 2d 22 20 73 75 66 66 69 78 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l-".suffix)).................... | 
| 6fa60 |  20 20 20 20 20 20 20 20 20 28 69 6e 74 65 72 6e    2d 73 6f 66 74 20 28 63 6f 6e 63 61 74 20 22 67  | .........(intern-soft.(concat."g | 
| 6fa80 |  70 74 65 6c 2d 2d 22 20 73 75 66 66 69 78 29 29    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ptel--".suffix)))))............. | 
| 6faa0 |  20 20 28 6f 72 20 28 6e 75 6c 6c 20 73 79 6d 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(or.(null.sym)................ | 
| 6fac0 |  20 20 20 28 61 6e 64 20 28 62 6f 75 6e 64 70 20    73 79 6d 29 20 28 65 71 75 61 6c 20 28 65 76 61  | ...(and.(boundp.sym).(equal.(eva | 
| 6fae0 |  6c 20 73 79 6d 29 20 76 61 6c 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | l.sym).val))...................( | 
| 6fb00 |  74 68 72 6f 77 20 27 6d 69 73 6d 61 74 63 68 20    74 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66  | throw.'mismatch.t)))))))))..(def | 
| 6fb20 |  75 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 64 69    72 65 63 74 69 76 65 20 28 61 72 67 73 29 0a 20  | un.gptel--get-directive.(args).. | 
| 6fb40 |  20 22 46 69 6e 64 20 74 68 65 20 61 64 64 69 74    69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 65 20  | ."Find.the.additional.directive. | 
| 6fb60 |  69 6e 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74    20 41 52 47 53 2e 0a 0a 4d 65 61 6e 74 20 74 6f  | in.the.transient.ARGS...Meant.to | 
| 6fb80 |  20 62 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20    60 67 70 74 65 6c 2d 6d 65 6e 75 27 20 69 73 20  | .be.called.when.`gptel-menu'.is. | 
| 6fba0 |  61 63 74 69 76 65 2e 22 0a 20 20 28 63 6c 2d 73    6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 20  | active."...(cl-some.(lambda.(s). | 
| 6fbc0 |  28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29    20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d  | (and.(stringp.s).(string-prefix- | 
| 6fbe0 |  70 20 22 3a 22 20 73 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | p.":".s)........................ | 
| 6fc00 |  28 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (substring.s.1)))............... | 
| 6fc20 |  20 20 20 20 61 72 67 73 29 29 0a 0a 28 64 65 66    75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 74 72 75  | ....args))..(defun.gptel--instru | 
| 6fc40 |  63 74 69 6f 6e 73 2d 6d 61 6b 65 2d 6f 76 65 72    6c 61 79 20 28 74 65 78 74 20 26 6f 70 74 69 6f  | ctions-make-overlay.(text.&optio | 
| 6fc60 |  6e 61 6c 20 6f 76 29 0a 20 20 22 4d 61 6b 65 20    6f 72 20 6d 6f 76 65 20 6f 76 65 72 6c 61 79 20  | nal.ov)..."Make.or.move.overlay. | 
| 6fc80 |  4f 56 20 77 69 74 68 20 54 45 58 54 2e 22 0a 20    20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e  | OV.with.TEXT."...(save-excursion | 
| 6fca0 |  0a 20 20 20 20 3b 3b 20 4d 6f 76 65 20 70 6f 69    6e 74 20 74 6f 20 6f 76 65 72 6c 61 79 20 70 6f  | .....;;.Move.point.to.overlay.po | 
| 6fcc0 |  73 69 74 69 6f 6e 0a 20 20 20 20 28 63 6f 6e 64    0a 20 20 20 20 20 28 28 75 73 65 2d 72 65 67 69  | sition.....(cond......((use-regi | 
| 6fce0 |  6f 6e 2d 70 29 0a 20 20 20 20 20 20 28 69 66 20    28 70 6f 73 2d 76 69 73 69 62 6c 65 2d 69 6e 2d  | on-p).......(if.(pos-visible-in- | 
| 6fd00 |  77 69 6e 64 6f 77 2d 70 20 28 72 65 67 69 6f 6e    2d 62 65 67 69 6e 6e 69 6e 67 29 29 0a 20 20 20  | window-p.(region-beginning)).... | 
| 6fd20 |  20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61    72 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e  | .......(goto-char.(region-beginn | 
| 6fd40 |  69 6e 67 29 29 29 29 0a 20 20 20 20 20 28 28 67    70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73  | ing))))......((gptel--in-respons | 
| 6fd60 |  65 2d 70 29 0a 20 20 20 20 20 20 28 67 70 74 65    6c 2d 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 72  | e-p).......(gptel-beginning-of-r | 
| 6fd80 |  65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 28    73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61  | esponse).......(skip-chars-forwa | 
| 6fda0 |  72 64 20 22 5c 6e 20 5c 74 22 29 29 0a 20 20 20    20 20 28 74 20 28 74 65 78 74 2d 70 72 6f 70 65  | rd."\n.\t"))......(t.(text-prope | 
| 6fdc0 |  72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77    61 72 64 20 27 67 70 74 65 6c 20 27 72 65 73 70  | rty-search-backward.'gptel.'resp | 
| 6fde0 |  6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 28 73    6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72  | onse).........(skip-chars-forwar | 
| 6fe00 |  64 20 22 5c 6e 20 5c 74 22 29 29 29 0a 20 20 20    20 3b 3b 20 4d 61 6b 65 20 6f 76 65 72 6c 61 79  | d."\n.\t"))).....;;.Make.overlay | 
| 6fe20 |  0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 6f 76    20 28 6f 76 65 72 6c 61 79 70 20 6f 76 29 29 0a  | .....(if.(and.ov.(overlayp.ov)). | 
| 6fe40 |  20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6f 76    65 72 6c 61 79 20 6f 76 20 28 70 6f 69 6e 74 29  | ........(move-overlay.ov.(point) | 
| 6fe60 |  20 28 70 6f 69 6e 74 29 20 28 63 75 72 72 65 6e    74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20  | .(point).(current-buffer))...... | 
| 6fe80 |  20 28 73 65 74 71 20 6f 76 20 28 6d 61 6b 65 2d    6f 76 65 72 6c 61 79 20 28 70 6f 69 6e 74 29 20  | .(setq.ov.(make-overlay.(point). | 
| 6fea0 |  28 70 6f 69 6e 74 29 20 6e 69 6c 20 74 29 29 29    0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75  | (point).nil.t))).....(overlay-pu | 
| 6fec0 |  74 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72    69 6e 67 20 6e 69 6c 29 0a 20 20 20 20 3b 3b 20  | t.ov.'before-string.nil).....;;. | 
| 6fee0 |  28 75 6e 6c 65 73 73 20 28 6f 72 20 28 62 6f 62    70 29 20 28 65 71 20 28 63 68 61 72 2d 62 65 66  | (unless.(or.(bobp).(eq.(char-bef | 
| 6ff00 |  6f 72 65 29 20 22 5c 6e 22 29 29 0a 20 20 20 20    3b 3b 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75  | ore)."\n")).....;;...(overlay-pu | 
| 6ff20 |  74 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72    69 6e 67 20 28 70 72 6f 70 65 72 74 69 7a 65 20  | t.ov.'before-string.(propertize. | 
| 6ff40 |  22 5c 6e 22 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d    66 61 63 65 20 27 73 68 61 64 6f 77 29 29 29 0a  | "\n".'font-lock-face.'shadow))). | 
| 6ff60 |  20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74    20 6f 76 20 27 63 61 74 65 67 6f 72 79 20 27 67  | ....(overlay-put.ov.'category.'g | 
| 6ff80 |  70 74 65 6c 29 0a 20 20 20 20 28 6f 76 65 72 6c    61 79 2d 70 75 74 0a 20 20 20 20 20 6f 76 20 27  | ptel).....(overlay-put......ov.' | 
| 6ffa0 |  61 66 74 65 72 2d 73 74 72 69 6e 67 0a 20 20 20    20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65  | after-string......(concat.(prope | 
| 6ffc0 |  72 74 69 7a 65 20 28 63 6f 6e 63 61 74 20 22 44    49 52 45 43 54 49 56 45 3a 20 22 20 74 65 78 74  | rtize.(concat."DIRECTIVE:.".text | 
| 6ffe0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 27 66 6f 6e 74  | )..........................'font | 
| 70000 |  2d 6c 6f 63 6b 2d 66 61 63 65 20 27 28 3a 69 6e    68 65 72 69 74 20 73 68 61 64 6f 77 20 3a 77 65  | -lock-face.'(:inherit.shadow.:we | 
| 70020 |  69 67 68 74 20 62 6f 6c 64 20 20 3a 62 6f 78 20    74 29 29 0a 20 20 20 20 20 20 22 5c 6e 22 29 29  | ight.bold..:box.t))......."\n")) | 
| 70040 |  0a 20 20 20 20 6f 76 29 29 0a 0a 28 64 65 66 63    6f 6e 73 74 20 67 70 74 65 6c 2d 2d 72 65 61 64  | .....ov))..(defconst.gptel--read | 
| 70060 |  2d 77 69 74 68 2d 70 72 65 66 69 78 2d 68 65 6c    70 0a 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 28  | -with-prefix-help...(concat....( | 
| 70080 |  70 72 6f 70 65 72 74 69 7a 65 20 22 28 22 20 27    66 61 63 65 20 27 64 65 66 61 75 6c 74 29 0a 20  | propertize."(".'face.'default).. | 
| 700a0 |  20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 54    41 42 22 20 27 66 61 63 65 20 27 68 65 6c 70 2d  | ..(propertize."TAB".'face.'help- | 
| 700c0 |  6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20    28 70 72 6f 70 65 72 74 69 7a 65 20 22 3a 20 65  | key-binding)....(propertize.":.e | 
| 700e0 |  78 70 61 6e 64 2c 20 22 20 27 66 61 63 65 20 27    64 65 66 61 75 6c 74 29 0a 20 20 20 28 70 72 6f  | xpand,.".'face.'default)....(pro | 
| 70100 |  70 65 72 74 69 7a 65 20 22 4d 2d 6e 22 20 27 66    61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69  | pertize."M-n".'face.'help-key-bi | 
| 70120 |  6e 64 69 6e 67 29 0a 20 20 20 28 70 72 6f 70 65    72 74 69 7a 65 20 22 2f 22 20 27 66 61 63 65 20  | nding)....(propertize."/".'face. | 
| 70140 |  27 64 65 66 61 75 6c 74 29 0a 20 20 20 28 70 72    6f 70 65 72 74 69 7a 65 20 22 4d 2d 70 22 20 27  | 'default)....(propertize."M-p".' | 
| 70160 |  66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62    69 6e 64 69 6e 67 29 0a 20 20 20 28 70 72 6f 70  | face.'help-key-binding)....(prop | 
| 70180 |  65 72 74 69 7a 65 20 22 3a 20 6e 65 78 74 2f 70    72 65 76 69 6f 75 73 29 20 22 20 27 66 61 63 65  | ertize.":.next/previous).".'face | 
| 701a0 |  20 27 64 65 66 61 75 6c 74 29 29 0a 20 20 22 48    65 6c 70 20 73 74 72 69 6e 67 20 3b 54 4f 44 4f  | .'default))..."Help.string.;TODO | 
| 701c0 |  3a 20 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74    65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72  | :.")..(defun.gptel--read-with-pr | 
| 701e0 |  65 66 69 78 20 28 70 72 65 66 69 78 29 0a 20 20    22 53 68 6f 77 20 73 74 72 69 6e 67 20 50 52 45  | efix.(prefix)..."Show.string.PRE | 
| 70200 |  46 49 58 20 69 6e 20 74 68 65 20 6d 69 6e 69 62    75 66 66 65 72 20 61 66 74 65 72 20 74 68 65 20  | FIX.in.the.minibuffer.after.the. | 
| 70220 |  6d 69 6e 69 62 75 66 66 65 72 20 70 72 6f 6d 70    74 2e 0a 0a 50 52 45 46 49 58 20 69 73 20 73 68  | minibuffer.prompt...PREFIX.is.sh | 
| 70240 |  6f 77 6e 20 69 6e 20 61 6e 20 6f 76 65 72 6c 61    79 2e 20 20 52 65 70 65 61 74 65 64 20 63 61 6c  | own.in.an.overlay...Repeated.cal | 
| 70260 |  6c 73 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74    69 6f 6e 0a 77 69 6c 6c 20 74 6f 67 67 6c 65 20  | ls.to.this.function.will.toggle. | 
| 70280 |  69 74 73 20 76 69 73 69 62 69 6c 69 74 79 20 73    74 61 74 65 2e 22 0a 20 20 28 75 6e 6c 65 73 73  | its.visibility.state."...(unless | 
| 702a0 |  20 28 6d 69 6e 69 62 75 66 66 65 72 70 29 0a 20    20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22  | .(minibufferp).....(user-error." | 
| 702c0 |  54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 69 73 20    69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 75  | This.command.is.intended.to.be.u | 
| 702e0 |  73 65 64 20 69 6e 20 74 68 65 20 6d 69 6e 69 62    75 66 66 65 72 2e 22 29 29 0a 20 20 28 6c 65 74  | sed.in.the.minibuffer."))...(let | 
| 70300 |  2a 20 28 28 75 70 64 61 74 65 0a 20 20 20 20 20    20 20 20 20 28 6c 61 6d 62 64 61 20 28 6f 76 20  | *.((update..........(lambda.(ov. | 
| 70320 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f    76 65 72 6c 61 79 2d 70 75 74 0a 20 20 20 20 20  | s)............(overlay-put...... | 
| 70340 |  20 20 20 20 20 20 20 6f 76 20 27 61 66 74 65 72    2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20  | .......ov.'after-string......... | 
| 70360 |  20 20 20 20 28 61 6e 64 20 73 20 28 63 6f 6e 63    61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28  | ....(and.s.(concat.(propertize.( | 
| 70380 |  63 6f 6e 63 61 74 20 22 5c 6e 22 20 73 20 22 5c    6e 22 29 20 27 66 61 63 65 20 27 73 68 61 64 6f  | concat."\n".s."\n").'face.'shado | 
| 703a0 |  77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d  | w)............................(m | 
| 703c0 |  61 6b 65 2d 73 65 70 61 72 61 74 6f 72 2d 6c 69    6e 65 29 29 29 29 29 29 0a 20 20 20 20 20 20 20  | ake-separator-line))))))........ | 
| 703e0 |  20 20 28 6d 61 78 2d 77 69 64 74 68 20 28 2d 20    28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 28  | ..(max-width.(-.(window-width).( | 
| 70400 |  6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f 6d 70    74 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20  | minibuffer-prompt-end)))........ | 
| 70420 |  20 20 28 6d 61 78 20 28 6f 72 20 6d 61 78 2d 6d    69 6e 69 2d 77 69 6e 64 6f 77 2d 68 65 69 67 68  | ..(max.(or.max-mini-window-heigh | 
| 70440 |  74 20 30 2e 34 29 29 0a 20 20 20 20 20 20 20 20    20 28 6d 61 78 2d 68 65 69 67 68 74 20 28 2d 20  | t.0.4))..........(max-height.(-. | 
| 70460 |  28 6f 72 20 28 61 6e 64 20 28 6e 61 74 6e 75 6d    70 20 6d 61 78 29 20 6d 61 78 29 0a 20 20 20 20  | (or.(and.(natnump.max).max)..... | 
| 70480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 66 6c 6f 6f 72 20 28  | ........................(floor.( | 
| 704a0 |  2a 20 6d 61 78 20 28 66 72 61 6d 65 2d 68 65 69    67 68 74 29 29 29 29 0a 20 20 20 20 20 20 20 20  | *.max.(frame-height))))......... | 
| 704c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    35 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28  | ................5))).....(when.( | 
| 704e0 |  61 6e 64 20 70 72 65 66 69 78 20 28 6e 6f 74 20    28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20  | and.prefix.(not.(string-empty-p. | 
| 70500 |  70 72 65 66 69 78 29 29 20 28 3e 20 6d 61 78 2d    68 65 69 67 68 74 20 31 29 29 0a 20 20 20 20 20  | prefix)).(>.max-height.1))...... | 
| 70520 |  20 28 75 6e 6c 65 73 73 20 76 69 73 75 61 6c 2d    6c 69 6e 65 2d 6d 6f 64 65 20 28 76 69 73 75 61  | .(unless.visual-line-mode.(visua | 
| 70540 |  6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 29 0a    20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72  | l-line-mode.1)).......(goto-char | 
| 70560 |  20 28 6d 69 6e 69 62 75 66 66 65 72 2d 70 72 6f    6d 70 74 2d 65 6e 64 29 29 0a 20 20 20 20 20 20  | .(minibuffer-prompt-end))....... | 
| 70580 |  28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c    70 72 6f 70 20 2e 20 2c 6f 76 29 0a 20 20 20 20  | (pcase-let.((`(,prop...,ov)..... | 
| 705a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74  | ...............(get-char-propert | 
| 705c0 |  79 2d 61 6e 64 2d 6f 76 65 72 6c 61 79 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | y-and-overlay................... | 
| 705e0 |  20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 27 67    70 74 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20  | ..(point-min).'gptel)))......... | 
| 70600 |  28 75 6e 6c 65 73 73 20 6f 76 0a 20 20 20 20 20    20 20 20 20 20 28 73 65 74 71 20 6f 76 20 28 6d  | (unless.ov...........(setq.ov.(m | 
| 70620 |  61 6b 65 2d 6f 76 65 72 6c 61 79 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ake-overlay..................... | 
| 70640 |  28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 6d 69 6e    69 62 75 66 66 65 72 2d 70 72 6f 6d 70 74 2d 65  | (point-min).(minibuffer-prompt-e | 
| 70660 |  6e 64 29 20 6e 69 6c 20 74 29 29 29 0a 20 20 20    20 20 20 20 20 28 70 63 61 73 65 20 70 72 6f 70  | nd).nil.t))).........(pcase.prop | 
| 70680 |  0a 20 20 20 20 20 20 20 20 20 20 28 27 70 61 72    74 69 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20  | ...........('partial............ | 
| 706a0 |  28 69 66 20 28 3e 20 28 6c 65 6e 67 74 68 20 70    72 65 66 69 78 29 20 6d 61 78 2d 77 69 64 74 68  | (if.(>.(length.prefix).max-width | 
| 706c0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20  | )................(progn......... | 
| 706e0 |  20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61    79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c 20  | .........(overlay-put.ov.'gptel. | 
| 70700 |  27 70 72 65 66 69 78 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28  | 'prefix)..................(let.( | 
| 70720 |  28 64 69 73 70 2d 73 69 7a 65 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (disp-size...................... | 
| 70740 |  20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20    63 68 61 72 20 61 63 72 6f 73 73 20 70 72 65 66  | ...(cl-loop.for.char.across.pref | 
| 70760 |  69 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ix.............................. | 
| 70780 |  20 20 20 20 66 6f 72 20 69 64 78 20 75 70 66 72    6f 6d 20 30 0a 20 20 20 20 20 20 20 20 20 20 20  | ....for.idx.upfrom.0............ | 
| 707a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 77 69 74 68 20 6e 20 3d 20 30  | ......................with.n.=.0 | 
| 707c0 |  20 77 69 74 68 20 6d 61 78 2d 6c 65 6e 67 74 68    20 3d 20 28 2a 20 6d 61 78 2d 68 65 69 67 68 74  | .with.max-length.=.(*.max-height | 
| 707e0 |  20 6d 61 78 2d 77 69 64 74 68 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .max-width)..................... | 
| 70800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20    28 65 71 20 63 68 61 72 20 3f 5c 6e 29 20 64 6f  | .............if.(eq.char.?\n).do | 
| 70820 |  20 28 63 6c 2d 69 6e 63 66 20 6e 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(cl-incf.n).................... | 
| 70840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66    20 28 3e 20 6e 20 6d 61 78 2d 68 65 69 67 68 74  | ..............if.(>.n.max-height | 
| 70860 |  29 20 72 65 74 75 72 6e 20 69 64 78 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).return.idx.................... | 
| 70880 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66    20 28 3e 20 69 64 78 20 6d 61 78 2d 6c 65 6e 67  | ..............if.(>.idx.max-leng | 
| 708a0 |  74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | th)............................. | 
| 708c0 |  20 20 20 20 20 72 65 74 75 72 6e 20 69 64 78 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....return.idx................. | 
| 708e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20  | .................finally.return. | 
| 70900 |  6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61  | nil)))....................(funca | 
| 70920 |  6c 6c 20 75 70 64 61 74 65 20 6f 76 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ll.update.ov.................... | 
| 70940 |  20 20 20 20 20 20 20 20 20 28 69 66 20 64 69 73    70 2d 73 69 7a 65 0a 20 20 20 20 20 20 20 20 20  | .........(if.disp-size.......... | 
| 70960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65  | .......................(truncate | 
| 70980 |  2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -string-to-width................ | 
| 709a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 70 72 65 66 69 78 20 64 69 73 70 2d 73 69  | ..................prefix.disp-si | 
| 709c0 |  7a 65 20 20 6e 69 6c 20 6e 69 6c 20 27 65 6c 6c    69 70 73 69 73 29 0a 20 20 20 20 20 20 20 20 20  | ze..nil.nil.'ellipsis).......... | 
| 709e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 70 72 65 66 69 78 29 29 29 29 0a  | .....................prefix)))). | 
| 70a00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76    65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70  | .............(overlay-put.ov.'gp | 
| 70a20 |  74 65 6c 20 27 68 69 64 65 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c  | tel.'hide)..............(funcall | 
| 70a40 |  20 75 70 64 61 74 65 20 6f 76 20 6e 69 6c 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 28 27 70 72  | .update.ov.nil)))...........('pr | 
| 70a60 |  65 66 69 78 20 28 6f 76 65 72 6c 61 79 2d 70 75    74 20 6f 76 20 27 67 70 74 65 6c 20 27 68 69 64  | efix.(overlay-put.ov.'gptel.'hid | 
| 70a80 |  65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 66 75 6e 63 61 6c 6c 20 75 70 64  | e)..................(funcall.upd | 
| 70aa0 |  61 74 65 20 6f 76 20 6e 69 6c 29 29 0a 20 20 20    20 20 20 20 20 20 20 28 5f 20 28 6f 76 65 72 6c  | ate.ov.nil))...........(_.(overl | 
| 70ac0 |  61 79 2d 70 75 74 20 6f 76 20 27 67 70 74 65 6c    20 27 70 61 72 74 69 61 6c 29 0a 20 20 20 20 20  | ay-put.ov.'gptel.'partial)...... | 
| 70ae0 |  20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c    20 75 70 64 61 74 65 20 6f 76 20 28 74 72 75 6e  | ........(funcall.update.ov.(trun | 
| 70b00 |  63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77    69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20  | cate-string-to-width............ | 
| 70b20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 70 72 65 66 69 78 20 6d 61 78  | ......................prefix.max | 
| 70b40 |  2d 77 69 64 74 68 20 6e 69 6c 20 6e 69 6c 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -width.nil.nil.................. | 
| 70b60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    27 65 6c 6c 69 70 73 69 73 29 29 29 29 29 29 29  | ................'ellipsis))))))) | 
| 70b80 |  29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d    2d 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 64 2d  | )..(defun.gptel--transient-read- | 
| 70ba0 |  6e 75 6d 62 65 72 20 28 70 72 6f 6d 70 74 20 5f    69 6e 69 74 69 61 6c 2d 69 6e 70 75 74 20 68 69  | number.(prompt._initial-input.hi | 
| 70bc0 |  73 74 6f 72 79 29 0a 20 20 22 52 65 61 64 20 61    20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 20 66  | story)..."Read.a.numeric.value.f | 
| 70be0 |  72 6f 6d 20 74 68 65 20 6d 69 6e 69 62 75 66 66    65 72 2e 0a 0a 50 52 4f 4d 50 54 2c 20 5f 49 4e  | rom.the.minibuffer...PROMPT,._IN | 
| 70c00 |  49 54 49 41 4c 2d 49 4e 50 55 54 20 61 6e 64 20    48 49 53 54 4f 52 59 20 61 72 65 20 61 73 20 69  | ITIAL-INPUT.and.HISTORY.are.as.i | 
| 70c20 |  6e 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20    72 65 61 64 65 72 0a 64 6f 63 75 6d 65 6e 74 69  | n.the.transient.reader.documenti | 
| 70c40 |  6f 6e 2e 20 20 52 65 74 75 72 6e 20 6e 69 6c 20    69 66 20 75 73 65 72 20 64 6f 65 73 20 6e 6f 74  | on...Return.nil.if.user.does.not | 
| 70c60 |  20 70 72 6f 76 69 64 65 20 61 20 6e 75 6d 62 65    72 2c 20 66 6f 72 20 64 65 66 61 75 6c 74 2e 22  | .provide.a.number,.for.default." | 
| 70c80 |  0a 20 20 3b 3b 20 57 6f 72 6b 61 72 6f 75 6e 64    20 66 6f 72 20 62 75 67 67 79 20 74 72 61 6e 73  | ...;;.Workaround.for.buggy.trans | 
| 70ca0 |  69 65 6e 74 20 62 65 68 61 76 69 6f 75 72 20 77    68 65 6e 20 64 65 61 6c 69 6e 67 20 77 69 74 68  | ient.behaviour.when.dealing.with | 
| 70cc0 |  0a 20 20 3b 3b 20 6e 6f 6e 2d 73 74 72 69 6e 67    20 76 61 6c 75 65 73 2e 20 20 53 65 65 3a 20 68  | ...;;.non-string.values...See:.h | 
| 70ce0 |  74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f    6d 2f 6d 61 67 69 74 2f 74 72 61 6e 73 69 65 6e  | ttps://github.com/magit/transien | 
| 70d00 |  74 2f 69 73 73 75 65 73 2f 31 37 32 0a 20 20 28    77 68 65 6e 2d 6c 65 74 2a 20 28 28 76 61 6c 20  | t/issues/172...(when-let*.((val. | 
| 70d20 |  28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 68 69    73 74 6f 72 79 29 29 29 0a 20 20 20 20 28 77 68  | (symbol-value.history))).....(wh | 
| 70d40 |  65 6e 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 70    20 28 63 61 72 20 76 61 6c 29 29 29 0a 20 20 20  | en.(not.(stringp.(car.val))).... | 
| 70d60 |  20 20 20 28 73 65 74 63 61 72 20 76 61 6c 20 28    6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67  | ...(setcar.val.(number-to-string | 
| 70d80 |  20 28 63 61 72 20 76 61 6c 29 29 29 29 29 0a 20    20 28 6c 65 74 2a 20 28 28 6d 69 6e 69 62 75 66  | .(car.val)))))...(let*.((minibuf | 
| 70da0 |  66 65 72 2d 64 65 66 61 75 6c 74 2d 70 72 6f 6d    70 74 2d 66 6f 72 6d 61 74 20 22 22 29 0a 09 20  | fer-default-prompt-format."")... | 
| 70dc0 |  28 6e 75 6d 20 28 72 65 61 64 2d 6e 75 6d 62 65    72 20 70 72 6f 6d 70 74 20 2d 31 20 68 69 73 74  | (num.(read-number.prompt.-1.hist | 
| 70de0 |  6f 72 79 29 29 29 0a 20 20 20 20 28 69 66 20 28    3d 20 6e 75 6d 20 2d 31 29 20 6e 69 6c 20 6e 75  | ory))).....(if.(=.num.-1).nil.nu | 
| 70e00 |  6d 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74    65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74  | m)))..(defun.gptel-system-prompt | 
| 70e20 |  2d 2d 66 6f 72 6d 61 74 20 28 26 6f 70 74 69 6f    6e 61 6c 20 6d 65 73 73 61 67 65 29 0a 20 20 22  | --format.(&optional.message)..." | 
| 70e40 |  46 6f 72 6d 61 74 20 74 68 65 20 73 79 73 74 65    6d 20 4d 45 53 53 41 47 45 20 66 6f 72 20 64 69  | Format.the.system.MESSAGE.for.di | 
| 70e60 |  73 70 6c 61 79 20 69 6e 20 67 70 74 65 6c 27 73    20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 73  | splay.in.gptel's.transient.menus | 
| 70e80 |  2e 0a 0a 48 61 6e 64 6c 65 20 66 6f 72 6d 61 74    74 69 6e 67 20 66 6f 72 20 73 79 73 74 65 6d 20  | ...Handle.formatting.for.system. | 
| 70ea0 |  6d 65 73 73 61 67 65 73 20 77 68 65 6e 20 74 68    65 20 61 63 74 69 76 65 0a 60 67 70 74 65 6c 2d  | messages.when.the.active.`gptel- | 
| 70ec0 |  6d 6f 64 65 6c 27 20 64 6f 65 73 20 6e 6f 74 20    73 75 70 70 6f 72 74 20 73 79 73 74 65 6d 20 6d  | model'.does.not.support.system.m | 
| 70ee0 |  65 73 73 61 67 65 73 2e 22 0a 20 20 28 73 65 74    71 20 6d 65 73 73 61 67 65 20 28 6f 72 20 6d 65  | essages."...(setq.message.(or.me | 
| 70f00 |  73 73 61 67 65 20 67 70 74 65 6c 2d 2d 73 79 73    74 65 6d 2d 6d 65 73 73 61 67 65 29 29 0a 20 20  | ssage.gptel--system-message))... | 
| 70f20 |  28 69 66 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65    6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6e 6f 73  | (if.(gptel--model-capable-p.'nos | 
| 70f40 |  79 73 74 65 6d 29 0a 20 20 20 20 20 20 28 63 6f    6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65  | ystem).......(concat.(propertize | 
| 70f60 |  20 22 5b 4e 6f 20 73 79 73 74 65 6d 20 6d 65 73    73 61 67 65 20 73 75 70 70 6f 72 74 20 66 6f 72  | ."[No.system.message.support.for | 
| 70f80 |  20 6d 6f 64 65 6c 20 22 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .model."........................ | 
| 70fa0 |  20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 69    65 6e 74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20  | ...'face.'transient-heading).... | 
| 70fc0 |  20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70    65 72 74 69 7a 65 20 28 67 70 74 65 6c 2d 2d 6d  | ...........(propertize.(gptel--m | 
| 70fe0 |  6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d    6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20  | odel-name.gptel-model).......... | 
| 71000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 27 66 61 63 65 20 27 77 61 72 6e 69 6e 67 29  | .................'face.'warning) | 
| 71020 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 72 6f 70 65 72 74 69 7a 65 20 22 5d 22 20 27  | ...............(propertize."]".' | 
| 71040 |  66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d    68 65 61 64 69 6e 67 29 29 0a 20 20 20 20 28 69  | face.'transient-heading)).....(i | 
| 71060 |  66 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69  | f.message.........(gptel--descri | 
| 71080 |  62 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20    20 20 20 20 20 20 6d 65 73 73 61 67 65 20 28 6d  | be-directive..........message.(m | 
| 710a0 |  61 78 20 28 2d 20 28 77 69 6e 64 6f 77 2d 77 69    64 74 68 29 20 31 32 29 20 31 34 29 20 22 e2 ae  | ax.(-.(window-width).12).14).".. | 
| 710c0 |  90 20 22 29 0a 20 20 20 20 20 20 22 5b 4e 6f 20    73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 73  | ..")......."[No.system.message.s | 
| 710e0 |  65 74 5d 22 29 29 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 2d 74 6f 6f 6c 73 2d 69 6e 69  | et]")))..(defun.gptel--tools-ini | 
| 71100 |  74 2d 76 61 6c 75 65 20 28 6f 62 6a 29 0a 20 20    22 53 65 74 20 74 68 65 20 69 6e 69 74 69 61 6c  | t-value.(obj)..."Set.the.initial | 
| 71120 |  20 73 74 61 74 65 20 6f 66 20 61 20 74 6f 6f 6c    20 4f 42 4a 20 69 6e 20 60 67 70 74 65 6c 2d 74  | .state.of.a.tool.OBJ.in.`gptel-t | 
| 71140 |  6f 6f 6c 73 27 2e 0a 0a 4f 42 4a 20 69 73 20 61    20 74 6f 6f 6c 2d 69 6e 66 69 78 20 6f 66 20 74  | ools'...OBJ.is.a.tool-infix.of.t | 
| 71160 |  79 70 65 20 60 67 70 74 65 6c 2d 2d 73 77 69 74    63 68 27 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65  | ype.`gptel--switch'."...(when-le | 
| 71180 |  74 2a 20 28 28 6e 61 6d 65 20 28 63 61 72 20 28    6d 65 6d 62 65 72 20 28 6f 72 65 66 20 6f 62 6a  | t*.((name.(car.(member.(oref.obj | 
| 711a0 |  20 61 72 67 75 6d 65 6e 74 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .argument)...................... | 
| 711c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70    63 61 72 20 23 27 63 61 64 72 0a 20 20 20 20 20  | ............(mapcar.#'cadr...... | 
| 711e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 71200 |  20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 28    74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29  | ....(plist-get.(transient-scope) | 
| 71220 |  20 3a 74 6f 6f 6c 73 29 29 29 29 29 29 0a 20 20    20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75  | .:tools)))))).....(oset.obj.valu | 
| 71240 |  65 20 28 6c 69 73 74 20 28 6f 72 65 66 20 6f 62    6a 20 63 61 74 65 67 6f 72 79 29 20 6e 61 6d 65  | e.(list.(oref.obj.category).name | 
| 71260 |  29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70    74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65  | ))))..(defvar.gptel--crowdsource | 
| 71280 |  64 2d 70 72 6f 6d 70 74 73 2d 75 72 6c 0a 20 20    22 68 74 74 70 73 3a 2f 2f 72 61 77 2e 67 69 74  | d-prompts-url..."https://raw.git | 
| 712a0 |  68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63    6f 6d 2f 66 2f 61 77 65 73 6f 6d 65 2d 63 68 61  | hubusercontent.com/f/awesome-cha | 
| 712c0 |  74 67 70 74 2d 70 72 6f 6d 70 74 73 2f 6d 61 69    6e 2f 70 72 6f 6d 70 74 73 2e 63 73 76 22 0a 20  | tgpt-prompts/main/prompts.csv".. | 
| 712e0 |  20 22 55 52 4c 20 66 6f 72 20 63 72 6f 77 64 73    6f 75 72 63 65 64 20 4c 4c 4d 20 73 79 73 74 65  | ."URL.for.crowdsourced.LLM.syste | 
| 71300 |  6d 20 70 72 6f 6d 70 74 73 2e 22 29 0a 0a 28 64    65 66 76 61 72 20 67 70 74 65 6c 2d 2d 63 72 6f  | m.prompts.")..(defvar.gptel--cro | 
| 71320 |  77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74    73 0a 20 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74  | wdsourced-prompts...(make-hash-t | 
| 71340 |  61 62 6c 65 20 3a 74 65 73 74 20 23 27 65 71 75    61 6c 29 0a 20 20 22 43 72 6f 77 64 73 6f 75 72  | able.:test.#'equal)..."Crowdsour | 
| 71360 |  63 65 64 20 4c 4c 4d 20 73 79 73 74 65 6d 20 70    72 6f 6d 70 74 73 2e 22 29 0a 0a 28 64 65 66 75  | ced.LLM.system.prompts.")..(defu | 
| 71380 |  6e 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 73    76 2d 63 6f 6c 75 6d 6e 20 28 29 0a 20 20 22 52  | n.gptel--read-csv-column.()..."R | 
| 713a0 |  65 61 64 20 6e 65 78 74 20 43 53 56 20 63 6f 6c    75 6d 6e 20 69 6e 20 74 68 65 20 63 75 72 72 65  | ead.next.CSV.column.in.the.curre | 
| 713c0 |  6e 74 20 62 75 66 66 65 72 2e 0a 0a 53 75 70 70    6f 72 74 73 20 62 6f 74 68 20 71 75 6f 74 65 64  | nt.buffer...Supports.both.quoted | 
| 713e0 |  20 61 6e 64 20 6e 6f 6e 2d 71 75 6f 74 65 64 20    63 6f 6c 75 6d 6e 73 20 28 52 46 43 20 34 31 38  | .and.non-quoted.columns.(RFC.418 | 
| 71400 |  30 29 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 74    61 72 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20  | 0)."...(let.((start.(point)))... | 
| 71420 |  20 20 28 75 6e 6c 65 73 73 20 28 65 6f 6c 70 29    0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f  | ..(unless.(eolp).......(let.((co | 
| 71440 |  6c 75 6d 6e 0a 09 20 20 20 20 20 28 69 66 20 28    65 71 20 28 63 68 61 72 2d 61 66 74 65 72 29 20  | lumn.......(if.(eq.(char-after). | 
| 71460 |  3f 5c 22 29 0a 09 09 20 28 77 68 65 6e 20 28 72    65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64  | ?\")....(when.(re-search-forward | 
| 71480 |  20 22 5c 22 2c 5c 5c 7c 5c 22 24 22 20 6e 69 6c    20 74 29 0a 09 09 20 20 20 28 6c 65 74 20 28 28  | ."\",\\|\"$".nil.t)......(let.(( | 
| 714a0 |  65 6e 64 20 28 6d 61 74 63 68 2d 62 65 67 69 6e    6e 69 6e 67 20 30 29 29 29 0a 09 09 20 20 20 20  | end.(match-beginning.0)))....... | 
| 714c0 |  20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69    6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73  | .(buffer-substring-no-properties | 
| 714e0 |  20 28 2b 20 73 74 61 72 74 20 31 29 20 28 69 66    20 28 65 6f 6c 70 29 20 28 2d 20 65 6e 64 20 31  | .(+.start.1).(if.(eolp).(-.end.1 | 
| 71500 |  29 20 65 6e 64 29 29 29 29 0a 09 20 20 20 20 20    20 20 28 77 68 65 6e 20 28 73 65 61 72 63 68 2d  | ).end)))).........(when.(search- | 
| 71520 |  66 6f 72 77 61 72 64 20 22 2c 22 20 28 6c 69 6e    65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 20  | forward.",".(line-end-position). | 
| 71540 |  74 29 0a 09 09 20 28 6c 65 74 20 28 28 65 6e 64    20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e  | t)....(let.((end.(match-beginnin | 
| 71560 |  67 20 30 29 29 29 0a 09 09 20 20 20 28 62 75 66    66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f  | g.0)))......(buffer-substring-no | 
| 71580 |  2d 70 72 6f 70 65 72 74 69 65 73 20 73 74 61 72    74 20 65 6e 64 29 29 29 29 29 29 0a 09 28 73 74  | -properties.start.end))))))..(st | 
| 715a0 |  72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 22    5c 22 22 20 22 5c 22 22 20 63 6f 6c 75 6d 6e 29  | ring-replace."\"\""."\"".column) | 
| 715c0 |  29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74    65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64  | ))))..(defun.gptel--crowdsourced | 
| 715e0 |  2d 70 72 6f 6d 70 74 73 20 28 29 0a 20 20 22 41    63 71 75 69 72 65 20 61 6e 64 20 72 65 61 64 20  | -prompts.()..."Acquire.and.read. | 
| 71600 |  63 72 6f 77 64 73 6f 75 72 63 65 64 20 4c 4c 4d    20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 2e  | crowdsourced.LLM.system.prompts. | 
| 71620 |  0a 0a 54 68 65 73 65 20 61 72 65 20 73 74 6f 72    65 64 20 69 6e 20 74 68 65 20 76 61 72 69 61 62  | ..These.are.stored.in.the.variab | 
| 71640 |  6c 65 20 60 67 70 74 65 6c 2d 2d 63 72 6f 77 64    73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 27  | le.`gptel--crowdsourced-prompts' | 
| 71660 |  2c 0a 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20    28 77 68 65 6e 20 28 68 61 73 68 2d 74 61 62 6c  | ,.which.see."...(when.(hash-tabl | 
| 71680 |  65 2d 70 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64    73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29  | e-p.gptel--crowdsourced-prompts) | 
| 716a0 |  0a 20 20 20 20 28 77 68 65 6e 20 28 68 61 73 68    2d 74 61 62 6c 65 2d 65 6d 70 74 79 2d 70 20 67  | .....(when.(hash-table-empty-p.g | 
| 716c0 |  70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63    65 64 2d 70 72 6f 6d 70 74 73 29 0a 20 20 20 20  | ptel--crowdsourced-prompts)..... | 
| 716e0 |  20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d    63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f  | ..(unless.gptel-crowdsourced-pro | 
| 71700 |  6d 70 74 73 2d 66 69 6c 65 0a 20 20 20 20 20 20    20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 30  | mpts-file.........(run-at-time.0 | 
| 71720 |  20 6e 69 6c 20 23 27 67 70 74 65 6c 2d 73 79 73    74 65 6d 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20  | .nil.#'gptel-system-prompt)..... | 
| 71740 |  20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20    22 4e 6f 20 63 72 6f 77 64 73 6f 75 72 63 65 64  | ....(user-error."No.crowdsourced | 
| 71760 |  20 70 72 6f 6d 70 74 73 20 61 76 61 69 6c 61 62    6c 65 22 29 29 0a 20 20 20 20 20 20 28 75 6e 6c  | .prompts.available")).......(unl | 
| 71780 |  65 73 73 20 28 61 6e 64 20 28 66 69 6c 65 2d 65    78 69 73 74 73 2d 70 20 67 70 74 65 6c 2d 63 72  | ess.(and.(file-exists-p.gptel-cr | 
| 717a0 |  6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70    74 73 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20  | owdsourced-prompts-file)........ | 
| 717c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 74 69 6d    65 2d 6c 65 73 73 2d 70 0a 20 20 20 20 20 20 20  | ............(time-less-p........ | 
| 717e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 69    6d 65 2d 73 75 62 74 72 61 63 74 20 28 63 75 72  | .............(time-subtract.(cur | 
| 71800 |  72 65 6e 74 2d 74 69 6d 65 29 20 28 64 61 79 73    2d 74 6f 2d 74 69 6d 65 20 31 34 29 29 0a 20 20  | rent-time).(days-to-time.14))... | 
| 71820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 66 69 6c 65 2d 61 74 74 72 69 62 75 74  | ..................(file-attribut | 
| 71840 |  65 2d 6d 6f 64 69 66 69 63 61 74 69 6f 6e 2d 74    69 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  | e-modification-time............. | 
| 71860 |  20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 61    74 74 72 69 62 75 74 65 73 20 67 70 74 65 6c 2d  | .........(file-attributes.gptel- | 
| 71880 |  63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f    6d 70 74 73 2d 66 69 6c 65 29 29 29 29 0a 20 20  | crowdsourced-prompts-file))))... | 
| 718a0 |  20 20 20 20 20 20 28 77 68 65 6e 20 28 79 2d 6f    72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 20 20  | ......(when.(y-or-n-p........... | 
| 718c0 |  20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 65  | .....(concat................."Fe | 
| 718e0 |  74 63 68 20 63 72 6f 77 64 73 6f 75 72 63 65 64    20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20  | tch.crowdsourced.system.prompts. | 
| 71900 |  66 72 6f 6d 20 22 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69  | from.".................(properti | 
| 71920 |  7a 65 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68    75 62 2e 63 6f 6d 2f 66 2f 61 77 65 73 6f 6d 65  | ze."https://github.com/f/awesome | 
| 71940 |  2d 63 68 61 74 67 70 74 2d 70 72 6f 6d 70 74 73    22 20 27 66 61 63 65 20 27 6c 69 6e 6b 29 0a 20  | -chatgpt-prompts".'face.'link).. | 
| 71960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22    3f 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b  | ..............."?"))...........; | 
| 71980 |  3b 20 46 65 74 63 68 20 66 69 6c 65 0a 20 20 20    20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20  | ;.Fetch.file...........(message. | 
| 719a0 |  22 46 65 74 63 68 69 6e 67 20 70 72 6f 6d 70 74    73 2e 2e 2e 22 29 0a 20 20 20 20 20 20 20 20 20  | "Fetching.prompts...").......... | 
| 719c0 |  20 28 6c 65 74 20 28 28 64 69 72 20 28 66 69 6c    65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79  | .(let.((dir.(file-name-directory | 
| 719e0 |  20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72    63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65  | .gptel-crowdsourced-prompts-file | 
| 71a00 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 75 6e 6c 65 73 73 20 28 66 69 6c 65 2d 65 78  | ))).............(unless.(file-ex | 
| 71a20 |  69 73 74 73 2d 70 20 64 69 72 29 20 28 6d 6b 64    69 72 20 64 69 72 20 27 63 72 65 61 74 65 2d 70  | ists-p.dir).(mkdir.dir.'create-p | 
| 71a40 |  61 72 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 28 69 66 20 28 75 72 6c 2d 63 6f  | arents)).............(if.(url-co | 
| 71a60 |  70 79 2d 66 69 6c 65 20 67 70 74 65 6c 2d 2d 63    72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d  | py-file.gptel--crowdsourced-prom | 
| 71a80 |  70 74 73 2d 75 72 6c 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | pts-url......................... | 
| 71aa0 |  20 20 20 20 20 20 20 67 70 74 65 6c 2d 63 72 6f    77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74  | .......gptel-crowdsourced-prompt | 
| 71ac0 |  73 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s-file.......................... | 
| 71ae0 |  20 20 20 20 20 20 27 6f 6b 2d 69 66 2d 61 6c 72    65 61 64 79 2d 65 78 69 73 74 73 29 0a 09 09 28  | ......'ok-if-already-exists)...( | 
| 71b00 |  6d 65 73 73 61 67 65 20 22 46 65 74 63 68 69 6e    67 20 70 72 6f 6d 70 74 73 2e 2e 2e 20 64 6f 6e  | message."Fetching.prompts....don | 
| 71b20 |  65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f 75  | e.")...............(message."Cou | 
| 71b40 |  6c 64 20 6e 6f 74 20 72 65 74 72 69 65 76 65 20    6e 65 77 20 70 72 6f 6d 70 74 73 2e 22 29 29 29  | ld.not.retrieve.new.prompts."))) | 
| 71b60 |  29 29 0a 20 20 20 20 20 20 28 69 66 20 28 6e 6f    74 20 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65  | )).......(if.(not.(file-readable | 
| 71b80 |  2d 70 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f    75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69  | -p.gptel-crowdsourced-prompts-fi | 
| 71ba0 |  6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    70 72 6f 67 6e 20 28 6d 65 73 73 61 67 65 20 22  | le))...........(progn.(message." | 
| 71bc0 |  4e 6f 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20    70 72 6f 6d 70 74 73 20 61 76 61 69 6c 61 62 6c  | No.crowdsourced.prompts.availabl | 
| 71be0 |  65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72  | e")..................(call-inter | 
| 71c00 |  61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c    2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 29  | actively.#'gptel-system-prompt)) | 
| 71c20 |  0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74    65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20  | .........(with-temp-buffer...... | 
| 71c40 |  20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c    65 2d 63 6f 6e 74 65 6e 74 73 20 67 70 74 65 6c  | .....(insert-file-contents.gptel | 
| 71c60 |  2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72    6f 6d 70 74 73 2d 66 69 6c 65 29 0a 20 20 20 20  | -crowdsourced-prompts-file)..... | 
| 71c80 |  20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72    20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20  | ......(goto-char.(point-min))... | 
| 71ca0 |  20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64    2d 6c 69 6e 65 20 31 29 0a 20 20 20 20 20 20 20  | ........(forward-line.1)........ | 
| 71cc0 |  20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 28    65 6f 62 70 29 29 0a 09 20 20 20 20 28 77 68 65  | ...(while.(not.(eobp))......(whe | 
| 71ce0 |  6e 2d 6c 65 74 2a 20 28 28 61 63 74 20 28 67 70    74 65 6c 2d 2d 72 65 61 64 2d 63 73 76 2d 63 6f  | n-let*.((act.(gptel--read-csv-co | 
| 71d00 |  6c 75 6d 6e 29 29 0a 09 09 09 28 70 72 6f 6d 70    74 20 28 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63  | lumn))....(prompt.(gptel--read-c | 
| 71d20 |  73 76 2d 63 6f 6c 75 6d 6e 29 29 29 0a 09 09 28    70 75 74 68 61 73 68 20 61 63 74 20 70 72 6f 6d  | sv-column)))...(puthash.act.prom | 
| 71d40 |  70 74 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73    6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 29  | pt.gptel--crowdsourced-prompts)) | 
| 71d60 |  0a 09 20 20 20 20 20 20 28 66 6f 72 77 61 72 64    2d 6c 69 6e 65 20 31 29 29 29 29 29 0a 20 20 20  | ........(forward-line.1))))).... | 
| 71d80 |  20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75    72 63 65 64 2d 70 72 6f 6d 70 74 73 29 29 0a 0a  | .gptel--crowdsourced-prompts)).. | 
| 71da0 |  28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 64 65    73 63 72 69 62 65 2d 69 6e 66 69 78 2d 63 6f 6e  | (defun.gptel--describe-infix-con | 
| 71dc0 |  74 65 78 74 20 28 29 0a 20 20 28 69 66 20 28 6e    75 6c 6c 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | text.()...(if.(null.gptel-contex | 
| 71de0 |  74 2d 2d 61 6c 69 73 74 29 20 22 43 6f 6e 74 65    78 74 22 0a 20 20 20 20 28 70 63 61 73 65 2d 6c  | t--alist)."Context".....(pcase-l | 
| 71e00 |  65 74 2a 0a 20 20 20 20 20 20 20 20 28 28 63 6f    6e 74 65 78 74 73 20 28 67 70 74 65 6c 2d 63 6f  | et*.........((contexts.(gptel-co | 
| 71e20 |  6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 29 29    0a 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65  | ntext--collect))..........(buffe | 
| 71e40 |  72 2d 63 6f 75 6e 74 20 28 6c 65 6e 67 74 68 20    63 6f 6e 74 65 78 74 73 29 29 0a 20 20 20 20 20  | r-count.(length.contexts))...... | 
| 71e60 |  20 20 20 20 28 60 28 2c 66 69 6c 65 2d 63 6f 75    6e 74 20 2c 6f 76 2d 63 6f 75 6e 74 29 0a 20 20  | ....(`(,file-count.,ov-count)... | 
| 71e80 |  20 20 20 20 20 20 20 20 28 69 66 20 28 3e 20 62    75 66 66 65 72 2d 63 6f 75 6e 74 20 30 29 0a 20  | ........(if.(>.buffer-count.0).. | 
| 71ea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c    2d 6c 6f 6f 70 20 66 6f 72 20 28 62 75 66 2d 66  | .............(cl-loop.for.(buf-f | 
| 71ec0 |  69 6c 65 20 2e 20 6f 76 73 29 20 69 6e 20 63 6f    6e 74 65 78 74 73 0a 20 20 20 20 20 20 20 20 20  | ile...ovs).in.contexts.......... | 
| 71ee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66    20 28 62 75 66 66 65 72 70 20 62 75 66 2d 66 69  | ..............if.(bufferp.buf-fi | 
| 71f00 |  6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 73 75 6d 20 28  | le)........................sum.( | 
| 71f20 |  6c 65 6e 67 74 68 20 6f 76 73 29 20 69 6e 74 6f    20 6f 76 2d 63 6f 75 6e 74 0a 20 20 20 20 20 20  | length.ovs).into.ov-count....... | 
| 71f40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 65 6c 73 65 20 63 6f 75 6e 74 20 28 73 74 72  | .................else.count.(str | 
| 71f60 |  69 6e 67 70 20 62 75 66 2d 66 69 6c 65 29 20 69    6e 74 6f 20 66 69 6c 65 2d 63 6f 75 6e 74 0a 20  | ingp.buf-file).into.file-count.. | 
| 71f80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65  | ......................finally.re | 
| 71fa0 |  74 75 72 6e 20 28 6c 69 73 74 20 66 69 6c 65 2d    63 6f 75 6e 74 20 6f 76 2d 63 6f 75 6e 74 29 29  | turn.(list.file-count.ov-count)) | 
| 71fc0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69    73 74 20 30 20 30 29 29 29 29 0a 20 20 20 20 20  | .............(list.0.0))))...... | 
| 71fe0 |  20 28 63 6f 6e 63 61 74 20 22 43 6f 6e 74 65 78    74 20 28 22 0a 20 20 20 20 20 20 20 20 20 20 20  | .(concat."Context.("............ | 
| 72000 |  20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | ...(propertize................(c | 
| 72020 |  6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 61 6e 64 20 28 3e 20 6f 76  | oncat.................(and.(>.ov | 
| 72040 |  2d 63 6f 75 6e 74 20 30 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | -count.0)......................( | 
| 72060 |  66 6f 72 6d 61 74 20 22 25 64 20 72 65 67 69 6f    6e 25 73 20 69 6e 20 25 64 20 62 75 66 66 65 72  | format."%d.region%s.in.%d.buffer | 
| 72080 |  25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | %s"............................. | 
| 720a0 |  20 6f 76 2d 63 6f 75 6e 74 20 28 69 66 20 28 3e    20 6f 76 2d 63 6f 75 6e 74 20 31 29 20 22 73 22  | .ov-count.(if.(>.ov-count.1)."s" | 
| 720c0 |  20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ."")............................ | 
| 720e0 |  20 20 28 2d 20 62 75 66 66 65 72 2d 63 6f 75 6e    74 20 66 69 6c 65 2d 63 6f 75 6e 74 29 0a 20 20  | ..(-.buffer-count.file-count)... | 
| 72100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28  | ...........................(if.( | 
| 72120 |  3e 20 28 20 2d 20 62 75 66 66 65 72 2d 63 6f 75    6e 74 20 66 69 6c 65 2d 63 6f 75 6e 74 29 20 31  | >.(.-.buffer-count.file-count).1 | 
| 72140 |  29 20 22 73 22 20 22 22 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64  | )."s".""))).................(and | 
| 72160 |  20 28 3e 20 66 69 6c 65 2d 63 6f 75 6e 74 20 30    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(>.file-count.0)............... | 
| 72180 |  20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22    25 73 25 64 20 66 69 6c 65 25 73 22 0a 20 20 20  | .......(format."%s%d.file%s".... | 
| 721a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3e  | ..........................(if.(> | 
| 721c0 |  20 6f 76 2d 63 6f 75 6e 74 20 30 29 20 22 2c 20    22 20 22 22 29 20 66 69 6c 65 2d 63 6f 75 6e 74  | .ov-count.0).",."."").file-count | 
| 721e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69  | ..............................(i | 
| 72200 |  66 20 28 3e 20 66 69 6c 65 2d 63 6f 75 6e 74 20    31 29 20 22 73 22 20 22 22 29 29 29 29 0a 20 20  | f.(>.file-count.1)."s".""))))... | 
| 72220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61    63 65 20 27 77 61 72 6e 69 6e 67 29 0a 20 20 20  | .............'face.'warning).... | 
| 72240 |  20 20 20 20 20 20 20 20 20 20 20 22 29 22 29 29    29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c  | ...........")"))))..(defun.gptel | 
| 72260 |  2d 2d 64 65 73 63 72 69 62 65 2d 73 75 66 66 69    78 2d 73 65 6e 64 20 28 29 0a 20 20 22 44 65 73  | --describe-suffix-send.()..."Des | 
| 72280 |  63 72 69 62 65 20 74 68 65 20 61 63 74 69 6f 6e    20 6f 66 20 60 67 70 74 65 6c 2d 2d 73 75 66 66  | cribe.the.action.of.`gptel--suff | 
| 722a0 |  69 78 2d 73 65 6e 64 27 2e 22 0a 20 20 28 63 6c    2d 66 6c 65 74 20 28 28 70 74 76 20 28 73 29 20  | ix-send'."...(cl-flet.((ptv.(s). | 
| 722c0 |  28 70 72 6f 70 65 72 74 69 7a 65 20 73 20 27 66    61 63 65 20 27 77 61 72 6e 69 6e 67 29 29 0a 20  | (propertize.s.'face.'warning)).. | 
| 722e0 |  20 20 20 20 20 20 20 20 20 20 20 28 70 74 68 20    28 73 29 20 28 70 72 6f 70 65 72 74 69 7a 65 20  | ...........(pth.(s).(propertize. | 
| 72300 |  73 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65    6e 74 2d 68 65 61 64 69 6e 67 29 29 29 0a 20 20  | s.'face.'transient-heading)))... | 
| 72320 |  20 20 28 6c 65 74 2a 20 28 28 61 72 67 73 20 28    6f 72 20 28 61 6e 64 20 74 72 61 6e 73 69 65 6e  | ..(let*.((args.(or.(and.transien | 
| 72340 |  74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e    64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-current-command............... | 
| 72360 |  20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61    6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72 61 6e  | ............(transient-args.tran | 
| 72380 |  73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f    6d 6d 61 6e 64 29 29 0a 09 20 20 20 20 20 20 20  | sient-current-command))......... | 
| 723a0 |  20 20 20 20 20 20 3b 3b 20 4e 6f 74 20 79 65 74    20 65 78 70 6f 72 74 65 64 2c 20 73 69 6d 75 6c  | ......;;.Not.yet.exported,.simul | 
| 723c0 |  61 74 65 2e 20 20 48 41 43 4b 3a 20 57 65 20 61    72 65 20 61 63 63 65 73 73 69 6e 67 0a 09 20 20  | ate...HACK:.We.are.accessing.... | 
| 723e0 |  20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 72    61 6e 73 69 65 6e 74 27 73 20 69 6e 74 65 72 6e  | ...........;;.Transient's.intern | 
| 72400 |  61 6c 20 76 61 72 69 61 62 6c 65 73 20 68 65 72    65 20 66 6f 72 20 6c 69 76 65 20 75 70 64 61 74  | al.variables.here.for.live.updat | 
| 72420 |  65 73 2e 0a 09 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6c 65 74 2a 20 28 28 74 72 61 6e 73 69  | es................(let*.((transi | 
| 72440 |  65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d    61 6e 64 20 28 6f 72 65 66 20 74 72 61 6e 73 69  | ent-current-command.(oref.transi | 
| 72460 |  65 6e 74 2d 2d 70 72 65 66 69 78 20 63 6f 6d 6d    61 6e 64 29 29 0a 09 20 20 20 20 20 20 20 20 20  | ent--prefix.command))........... | 
| 72480 |  20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e    73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 73 75  | ...........(transient-current-su | 
| 724a0 |  66 66 69 78 65 73 20 74 72 61 6e 73 69 65 6e 74    2d 2d 73 75 66 66 69 78 65 73 29 29 0a 09 20 20  | ffixes.transient--suffixes)).... | 
| 724c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72    61 6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72 61  | .............(transient-args.tra | 
| 724e0 |  6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63    6f 6d 6d 61 6e 64 29 29 29 29 0a 20 20 20 20 20  | nsient-current-command))))...... | 
| 72500 |  20 20 20 20 20 20 28 6c 62 65 67 20 28 6c 69 6e    65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20  | ......(lbeg.(line-number-at-pos. | 
| 72520 |  28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d    70 29 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e  | (if.(use-region-p).(region-begin | 
| 72540 |  6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ning)........................... | 
| 72560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f    69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20  | .............(point-min))))..... | 
| 72580 |  20 20 20 20 20 20 20 28 6c 65 6e 64 20 28 6c 69    6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73  | .......(lend.(line-number-at-pos | 
| 725a0 |  20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e    2d 70 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29  | .(if.(use-region-p).(region-end) | 
| 725c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 725e0 |  20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c  | ........(point))))............(l | 
| 72600 |  74 65 78 74 20 28 70 74 76 20 28 69 66 20 28 3e    20 6c 65 6e 64 20 6c 62 65 67 29 0a 20 20 20 20  | text.(ptv.(if.(>.lend.lbeg)..... | 
| 72620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22  | .......................(format." | 
| 72640 |  20 28 6c 69 6e 65 73 20 25 64 2d 25 64 29 22 20    6c 62 65 67 20 6c 65 6e 64 29 0a 20 20 20 20 20  | .(lines.%d-%d)".lbeg.lend)...... | 
| 72660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 28 6c  | ....................(format.".(l | 
| 72680 |  69 6e 65 20 25 64 29 22 20 6c 62 65 67 29 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 65  | ine.%d)".lbeg))))............(de | 
| 726a0 |  73 74 29 20 28 63 6f 6e 74 65 78 74 29 29 0a 20    20 20 20 20 20 28 73 65 74 71 20 64 65 73 74 20  | st).(context)).......(setq.dest. | 
| 726c0 |  28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72  | (cond...................((member | 
| 726e0 |  20 22 65 22 20 61 72 67 73 29 20 28 70 74 76 20    22 65 63 68 6f 20 61 72 65 61 22 29 29 0a 20 20  | ."e".args).(ptv."echo.area"))... | 
| 72700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 28 6d 65 6d 62 65 72 20 22 6b 22 20 61 72 67  | ................((member."k".arg | 
| 72720 |  73 29 20 28 70 74 76 20 22 6b 69 6c 6c 2d 72 69    6e 67 22 29 29 0a 20 20 20 20 20 20 20 20 20 20  | s).(ptv."kill-ring"))........... | 
| 72740 |  20 20 20 20 20 20 20 20 28 28 63 6c 2d 73 6f 6d    65 20 28 6c 61 6d 62 64 61 20 28 73 29 0a 20 20  | ........((cl-some.(lambda.(s)... | 
| 72760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64  | ............................(and | 
| 72780 |  20 28 73 74 72 69 6e 67 70 20 73 29 20 28 6d 65    6d 71 20 28 61 72 65 66 20 73 20 30 29 20 27 28  | .(stringp.s).(memq.(aref.s.0).'( | 
| 727a0 |  3f 67 20 3f 62 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ?g.?b))......................... | 
| 727c0 |  20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20    28 65 71 75 61 6c 20 28 73 75 62 73 74 72 69 6e  | ...........(not.(equal.(substrin | 
| 727e0 |  67 20 73 20 31 29 20 28 62 75 66 66 65 72 2d 6e    61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20  | g.s.1).(buffer-name))).......... | 
| 72800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61  | ..........................(conca | 
| 72820 |  74 20 28 70 74 68 20 22 62 75 66 66 65 72 20 22    29 20 28 70 74 76 20 28 73 75 62 73 74 72 69 6e  | t.(pth."buffer.").(ptv.(substrin | 
| 72840 |  67 20 73 20 31 29 29 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | g.s.1)))))...................... | 
| 72860 |  20 20 20 20 20 20 20 61 72 67 73 29 29 29 29 0a    20 20 20 20 20 20 28 73 65 74 71 20 63 6f 6e 74  | .......args)))).......(setq.cont | 
| 72880 |  65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 61 6e 64 20 67 70 74 65 6c 2d 63 6f 6e 74 65  | ext.............(and.gptel-conte | 
| 728a0 |  78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20  | xt--alist..................(let. | 
| 728c0 |  28 28 6c 63 20 28 6c 65 6e 67 74 68 20 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73  | ((lc.(length.gptel-context--alis | 
| 728e0 |  74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20  | t)))....................(concat. | 
| 72900 |  28 70 74 68 20 22 20 61 6c 6f 6e 67 20 77 69 74    68 20 22 29 20 28 70 74 76 20 28 66 6f 72 6d 61  | (pth.".along.with.").(ptv.(forma | 
| 72920 |  74 20 22 25 64 22 20 6c 63 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t."%d".lc))..................... | 
| 72940 |  20 20 20 20 20 20 20 28 70 74 68 20 28 63 6f 6e    63 61 74 20 22 20 63 6f 6e 74 65 78 74 20 73 6f  | .......(pth.(concat.".context.so | 
| 72960 |  75 72 63 65 22 20 28 61 6e 64 20 28 2f 3d 20 6c    63 20 31 29 20 22 73 22 29 29 29 29 29 29 29 0a  | urce".(and.(/=.lc.1)."s"))))))). | 
| 72980 |  20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 6d 65    6d 62 65 72 20 22 6d 22 20 61 72 67 73 29 0a 20  | ......(cond.((member."m".args).. | 
| 729a0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e    63 61 74 20 28 70 74 68 20 22 52 65 61 64 20 70  | ............(concat.(pth."Read.p | 
| 729c0 |  72 6f 6d 70 74 20 66 72 6f 6d 20 22 29 20 28 70    74 76 20 22 6d 69 6e 69 62 75 66 66 65 72 22 29  | rompt.from.").(ptv."minibuffer") | 
| 729e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 63 6f 6e 74 65 78 74 0a 20 20  | ......................context... | 
| 72a00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 69 66 20 64 65 73 74 20 28 63 6f 6e  | ...................(if.dest.(con | 
| 72a20 |  63 61 74 20 28 70 74 68 20 22 2c 20 72 65 73 70    6f 6e 73 65 20 74 6f 20 22 29 20 64 65 73 74 29  | cat.(pth.",.response.to.").dest) | 
| 72a40 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20  | ........................(concat. | 
| 72a60 |  28 70 74 68 20 22 2c 20 69 6e 73 65 72 74 20 72    65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74  | (pth.",.insert.response.at.point | 
| 72a80 |  22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 28 6d 65 6d 62 65 72 20 22 79 22 20  | "))))).............((member."y". | 
| 72aa0 |  61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20  | args)..............(concat.(pth. | 
| 72ac0 |  22 53 65 6e 64 20 70 72 6f 6d 70 74 20 66 72 6f    6d 20 22 29 0a 09 09 20 20 20 20 20 28 63 6f 6e  | "Send.prompt.from.")........(con | 
| 72ae0 |  63 61 74 20 28 70 74 76 20 22 6b 69 6c 6c 2d 72    69 6e 67 20 28 22 29 0a 09 09 09 20 20 20 20 20  | cat.(ptv."kill-ring.(")......... | 
| 72b00 |  28 69 66 2d 6c 65 74 2a 20 28 28 76 61 6c 20 28    63 61 72 2d 73 61 66 65 20 6b 69 6c 6c 2d 72 69  | (if-let*.((val.(car-safe.kill-ri | 
| 72b20 |  6e 67 29 29 0a 09 09 09 09 20 20 20 20 20 20 20    28 76 61 6c 20 28 73 75 62 73 74 72 69 6e 67 2d  | ng))............(val.(substring- | 
| 72b40 |  6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 76 61    6c 29 29 0a 09 09 09 09 20 20 20 20 20 20 20 28  | no-properties.val))............( | 
| 72b60 |  6c 65 6e 20 28 6c 65 6e 67 74 68 20 76 61 6c 29    29 29 0a 09 09 09 09 20 28 70 74 76 20 28 63 6f  | len.(length.val)))......(ptv.(co | 
| 72b80 |  6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ncat............................ | 
| 72ba0 |  20 20 20 20 20 20 20 20 20 20 20 20 22 5c 22 22    20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65  | ............"\"".(string-replace | 
| 72bc0 |  0a 09 09 09 09 09 20 20 20 20 20 22 5c 6e 22 20    22 e2 ae 90 22 0a 09 09 09 09 09 20 20 20 20 20  | ..........."\n"."..."........... | 
| 72be0 |  28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67    2d 74 6f 2d 77 69 64 74 68 0a 09 09 09 09 09 20  | (truncate-string-to-width....... | 
| 72c00 |  20 20 20 20 20 76 61 6c 20 32 30 20 6e 69 6c 20    6e 69 6c 20 74 29 29 0a 09 09 09 09 20 20 20 20  | .....val.20.nil.nil.t))......... | 
| 72c20 |  20 20 20 22 5c 22 22 20 28 77 68 65 6e 20 28 3e    20 6c 65 6e 20 32 30 29 0a 09 09 09 09 09 20 20  | ..."\"".(when.(>.len.20)........ | 
| 72c40 |  20 20 20 20 28 63 6f 6e 63 61 74 0a 09 09 09 09    09 20 20 20 20 20 20 20 22 2c 20 22 0a 09 09 09  | ....(concat.............",.".... | 
| 72c60 |  09 09 20 20 20 20 20 20 20 28 66 69 6c 65 2d 73    69 7a 65 2d 68 75 6d 61 6e 2d 72 65 61 64 61 62  | .........(file-size-human-readab | 
| 72c80 |  6c 65 20 6c 65 6e 20 27 73 69 20 22 20 22 29 0a    09 09 09 09 09 20 20 20 20 20 20 20 22 20 63 68  | le.len.'si.".").............".ch | 
| 72ca0 |  61 72 73 22 29 29 29 29 0a 09 09 09 20 20 20 20    20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 65 6d  | ars")))).........(propertize."em | 
| 72cc0 |  70 74 79 22 20 27 66 61 63 65 20 27 65 72 72 6f    72 29 29 0a 09 09 09 20 20 20 28 70 74 76 20 22  | pty".'face.'error)).......(ptv." | 
| 72ce0 |  29 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78  | )"))......................contex | 
| 72d00 |  74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 69 66 20 64 65 73 74 20  | t......................(if.dest. | 
| 72d20 |  28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 2c 20    72 65 73 70 6f 6e 73 65 20 74 6f 20 22 29 20 64  | (concat.(pth.",.response.to.").d | 
| 72d40 |  65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e  | est)........................(con | 
| 72d60 |  63 61 74 20 28 70 74 68 20 22 2c 20 69 6e 73 65    72 74 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70  | cat.(pth.",.insert.response.at.p | 
| 72d80 |  6f 69 6e 74 22 29 29 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20  | oint"))))).............((member. | 
| 72da0 |  22 69 22 20 61 72 67 73 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 72  | "i".args)..............(let*.((r | 
| 72dc0 |  65 67 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | eg.(use-region-p)).............. | 
| 72de0 |  20 20 20 20 20 20 20 28 73 72 63 20 28 70 74 76    20 28 69 66 20 72 65 67 20 22 73 65 6c 65 63 74  | .......(src.(ptv.(if.reg."select | 
| 72e00 |  69 6f 6e 22 20 28 62 75 66 66 65 72 2d 6e 61 6d    65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | ion".(buffer-name))))).......... | 
| 72e20 |  20 20 20 20 20 20 28 69 66 20 64 65 73 74 20 28    63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65 6e  | ......(if.dest.(concat.(pth."Sen | 
| 72e40 |  64 20 22 29 20 73 72 63 20 6c 74 65 78 74 20 63    6f 6e 74 65 78 74 20 28 70 74 68 20 22 2c 20 77  | d.").src.ltext.context.(pth.",.w | 
| 72e60 |  69 74 68 20 72 65 73 70 6f 6e 73 65 20 74 6f 20    22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ith.response.to.").............. | 
| 72e80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 74 76 20 64 65 73 74 29 20 28 70  | ...................(ptv.dest).(p | 
| 72ea0 |  74 68 20 22 3b 20 6b 69 6c 6c 22 29 20 6c 74 65    78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | th.";.kill").ltext.............. | 
| 72ec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 61 6e 64 20 28 6e 6f 74 20 72 65 67  | ...................(and.(not.reg | 
| 72ee0 |  29 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20 22    20 69 6e 20 22 29 20 73 72 63 29 29 29 0a 20 20  | ).(concat.(pth.".in.").src)))... | 
| 72f00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    63 6f 6e 63 61 74 20 28 70 74 68 20 22 52 65 70  | ...............(concat.(pth."Rep | 
| 72f20 |  6c 61 63 65 20 22 29 20 73 72 63 20 6c 74 65 78    74 20 28 70 74 68 20 22 20 77 69 74 68 20 72 65  | lace.").src.ltext.(pth.".with.re | 
| 72f40 |  73 70 6f 6e 73 65 22 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | sponse")........................ | 
| 72f60 |  20 20 28 61 6e 64 20 63 6f 6e 74 65 78 74 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(and.context.................. | 
| 72f80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 63 61 74 20 28 70 74 68 20 22 20 28 20 77 69  | .............(concat.(pth.".(.wi | 
| 72fa0 |  74 68 22 29 20 28 73 75 62 73 74 72 69 6e 67 20    63 6f 6e 74 65 78 74 20 31 31 29 20 22 20 29 22  | th").(substring.context.11).".)" | 
| 72fc0 |  29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 28 75 73 65 2d 72 65 67 69 6f 6e 2d  | )))))).............((use-region- | 
| 72fe0 |  70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65  | p)..............(concat.(pth."Se | 
| 73000 |  6e 64 20 22 29 20 28 70 74 76 20 22 73 65 6c 65    63 74 69 6f 6e 22 29 20 6c 74 65 78 74 0a 20 20  | nd.").(ptv."selection").ltext... | 
| 73020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 63 6f 6e 74 65 78 74 20 28 69 66 20 64  | ...................context.(if.d | 
| 73040 |  65 73 74 20 28 63 6f 6e 63 61 74 20 28 70 74 68    20 22 2c 20 77 69 74 68 20 72 65 73 70 6f 6e 73  | est.(concat.(pth.",.with.respons | 
| 73060 |  65 20 74 6f 20 22 29 20 64 65 73 74 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.to.").dest)................... | 
| 73080 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 63 61 74 20 28 70 74 68 20 22 2c 20 69 6e 73  | .............(concat.(pth.",.ins | 
| 730a0 |  65 72 74 20 72 65 73 70 6f 6e 73 65 20 61 74 20    72 65 67 69 6f 6e 20 65 6e 64 22 29 29 29 29 29  | ert.response.at.region.end"))))) | 
| 730c0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20    28 63 6f 6e 63 61 74 20 28 70 74 68 20 22 53 65  | .............(t.(concat.(pth."Se | 
| 730e0 |  6e 64 20 22 29 20 28 70 74 76 20 28 62 75 66 66    65 72 2d 6e 61 6d 65 29 29 20 6c 74 65 78 74 0a  | nd.").(ptv.(buffer-name)).ltext. | 
| 73100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 20 28  | .......................context.( | 
| 73120 |  69 66 20 64 65 73 74 20 28 63 6f 6e 63 61 74 20    28 70 74 68 20 22 2c 20 77 69 74 68 20 72 65 73  | if.dest.(concat.(pth.",.with.res | 
| 73140 |  70 6f 6e 73 65 20 74 6f 20 22 29 20 64 65 73 74    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ponse.to.").dest)............... | 
| 73160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 63 6f 6e 63 61 74 20 28 70 74 68 20  | ...................(concat.(pth. | 
| 73180 |  22 2c 20 69 6e 73 65 72 74 20 72 65 73 70 6f 6e    73 65 20 61 74 20 70 6f 69 6e 74 22 29 29 29 29  | ",.insert.response.at.point")))) | 
| 731a0 |  29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70    74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 70 72 65 73  | )))))..(defun.gptel--format-pres | 
| 731c0 |  65 74 2d 73 74 72 69 6e 67 20 28 29 0a 20 20 22    46 6f 72 6d 61 74 20 74 68 65 20 70 72 65 73 65  | et-string.()..."Format.the.prese | 
| 731e0 |  74 20 69 6e 64 69 63 61 74 6f 72 20 64 69 73 70    6c 61 79 20 66 6f 72 20 60 67 70 74 65 6c 2d 6d  | t.indicator.display.for.`gptel-m | 
| 73200 |  65 6e 75 27 2e 22 0a 20 20 28 69 66 20 28 61 6e    64 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70  | enu'."...(if.(and.gptel--known-p | 
| 73220 |  72 65 73 65 74 73 20 67 70 74 65 6c 2d 2d 70 72    65 73 65 74 29 0a 20 20 20 20 20 20 28 61 70 70  | resets.gptel--preset).......(app | 
| 73240 |  6c 79 0a 20 20 20 20 20 20 20 23 27 66 6f 72 6d    61 74 20 22 20 28 25 73 25 73 29 22 0a 20 20 20  | ly........#'format.".(%s%s)".... | 
| 73260 |  20 20 20 20 28 6c 65 74 20 28 28 6d 69 73 6d 61    74 63 68 20 28 67 70 74 65 6c 2d 2d 70 72 65 73  | ....(let.((mismatch.(gptel--pres | 
| 73280 |  65 74 2d 6d 69 73 6d 61 74 63 68 2d 70 20 67 70    74 65 6c 2d 2d 70 72 65 73 65 74 29 29 29 0a 20  | et-mismatch-p.gptel--preset))).. | 
| 732a0 |  20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 70    72 6f 70 65 72 74 69 7a 65 20 22 40 22 20 27 66  | ........(list.(propertize."@".'f | 
| 732c0 |  61 63 65 20 28 69 66 20 6d 69 73 6d 61 74 63 68    20 27 74 72 61 6e 73 69 65 6e 74 2d 6b 65 79 0a  | ace.(if.mismatch.'transient-key. | 
| 732e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 73300 |  20 20 20 20 20 20 20 27 28 20 3a 69 6e 68 65 72    69 74 20 74 72 61 6e 73 69 65 6e 74 2d 6b 65 79  | .......'(.:inherit.transient-key | 
| 73320 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 73340 |  20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 68 65    72 69 74 20 73 65 63 6f 6e 64 61 72 79 2d 73 65  | ...........:inherit.secondary-se | 
| 73360 |  6c 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lection......................... | 
| 73380 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3a 62 6f 78 20 2d 31 20 3a 77 65 69 67 68  | ..................:box.-1.:weigh | 
| 733a0 |  74 20 62 6f 6c 64 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72  | t.bold)))................(proper | 
| 733c0 |  74 69 7a 65 20 28 66 6f 72 6d 61 74 20 22 25 73    22 20 67 70 74 65 6c 2d 2d 70 72 65 73 65 74 29  | tize.(format."%s".gptel--preset) | 
| 733e0 |  20 27 66 61 63 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .'face.......................... | 
| 73400 |  20 20 28 69 66 20 6d 69 73 6d 61 74 63 68 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(if.mismatch.................. | 
| 73420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28    3a 69 6e 68 65 72 69 74 20 77 61 72 6e 69 6e 67  | ..............'(:inherit.warning | 
| 73440 |  20 3a 73 74 72 69 6b 65 2d 74 68 72 6f 75 67 68    20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .:strike-through.t)............. | 
| 73460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 27 28 3a 69 6e 68 65 72 69 74 20 73 65 63 6f  | .................'(:inherit.seco | 
| 73480 |  6e 64 61 72 79 2d 73 65 6c 65 63 74 69 6f 6e 20    3a 62 6f 78 20 2d 31 29 29 29 29 29 29 0a 20 20  | ndary-selection.:box.-1))))))... | 
| 734a0 |  20 20 28 66 6f 72 6d 61 74 20 22 20 28 25 73 25    73 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ..(format.".(%s%s)"............. | 
| 734c0 |  28 70 72 6f 70 65 72 74 69 7a 65 20 22 40 22 20    27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74  | (propertize."@".'face.'transient | 
| 734e0 |  2d 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 70  | -key).............(propertize."p | 
| 73500 |  72 65 73 65 74 22 20 27 66 61 63 65 20 27 74 72    61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65  | reset".'face.'transient-inactive | 
| 73520 |  2d 76 61 6c 75 65 29 29 29 29 0a 0a 0c 0a 3b 3b    20 2a 20 54 72 61 6e 73 69 65 6e 74 20 63 6c 61  | -value))))....;;.*.Transient.cla | 
| 73540 |  73 73 65 73 20 61 6e 64 20 6d 65 74 68 6f 64 73    20 66 6f 72 20 67 70 74 65 6c 0a 0a 3b 3b 20 2a  | sses.and.methods.for.gptel..;;.* | 
| 73560 |  2a 20 43 6c 61 73 73 20 66 6f 72 20 67 65 6e 65    72 69 63 20 67 70 74 65 6c 20 65 6c 69 73 70 20  | *.Class.for.generic.gptel.elisp. | 
| 73580 |  76 61 72 69 61 62 6c 65 73 0a 0a 28 64 65 66 63    6c 61 73 73 20 67 70 74 65 6c 2d 6c 69 73 70 2d  | variables..(defclass.gptel-lisp- | 
| 735a0 |  76 61 72 69 61 62 6c 65 20 28 74 72 61 6e 73 69    65 6e 74 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c  | variable.(transient-lisp-variabl | 
| 735c0 |  65 29 0a 20 20 28 28 64 69 73 70 6c 61 79 2d 6e    69 6c 20 3a 69 6e 69 74 61 72 67 20 3a 64 69 73  | e)...((display-nil.:initarg.:dis | 
| 735e0 |  70 6c 61 79 2d 6e 69 6c 29 20 20 3b 53 74 72 69    6e 67 20 74 6f 20 64 69 73 70 6c 61 79 20 69 66  | play-nil)..;String.to.display.if | 
| 73600 |  20 76 61 6c 75 65 20 69 66 20 6e 69 6c 0a 20 20    20 28 64 69 73 70 6c 61 79 2d 6d 61 70 20 3a 69  | .value.if.nil....(display-map.:i | 
| 73620 |  6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d    6d 61 70 20 3a 69 6e 69 74 66 6f 72 6d 20 6e 69  | nitarg.:display-map.:initform.ni | 
| 73640 |  6c 29 29 20 3b 44 69 73 70 6c 61 79 20 73 74 72    69 6e 67 20 66 72 6f 6d 20 61 6c 69 73 74 20 64  | l)).;Display.string.from.alist.d | 
| 73660 |  69 73 70 6c 61 79 2d 6d 61 70 0a 20 20 22 4c 69    73 70 20 76 61 72 69 61 62 6c 65 73 20 74 68 61  | isplay-map..."Lisp.variables.tha | 
| 73680 |  74 20 73 68 6f 77 20 3a 64 69 73 70 6c 61 79 2d    6e 69 6c 20 69 6e 73 74 65 61 64 20 6f 66 20 6e  | t.show.:display-nil.instead.of.n | 
| 736a0 |  69 6c 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65    74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 66  | il.")..(cl-defmethod.transient-f | 
| 736c0 |  6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62    6a 20 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72  | ormat-value.((obj.gptel-lisp-var | 
| 736e0 |  69 61 62 6c 65 29 29 0a 20 20 28 6c 65 74 20 28    28 64 69 73 70 6c 61 79 2d 76 61 6c 75 65 0a 20  | iable))...(let.((display-value.. | 
| 73700 |  20 20 20 20 20 20 20 20 28 77 69 74 68 2d 73 6c    6f 74 73 20 28 76 61 6c 75 65 20 64 69 73 70 6c  | ........(with-slots.(value.displ | 
| 73720 |  61 79 2d 6e 69 6c 20 64 69 73 70 6c 61 79 2d 6d    61 70 29 20 6f 62 6a 0a 20 20 20 20 20 20 20 20  | ay-nil.display-map).obj......... | 
| 73740 |  20 20 20 28 63 6f 6e 64 20 28 28 6e 75 6c 6c 20    76 61 6c 75 65 29 20 64 69 73 70 6c 61 79 2d 6e  | ...(cond.((null.value).display-n | 
| 73760 |  69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 6d 61  | il)..................(display-ma | 
| 73780 |  70 20 28 6f 72 20 28 63 64 72 20 28 61 73 73 6f    63 20 76 61 6c 75 65 20 64 69 73 70 6c 61 79 2d  | p.(or.(cdr.(assoc.value.display- | 
| 737a0 |  6d 61 70 29 29 20 76 61 6c 75 65 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | map)).value))..................( | 
| 737c0 |  74 20 76 61 6c 75 65 29 29 29 29 29 0a 20 20 20    20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20  | t.value))))).....(propertize.... | 
| 737e0 |  20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 64    69 73 70 6c 61 79 2d 76 61 6c 75 65 29 20 64 69  | ..(if.(stringp.display-value).di | 
| 73800 |  73 70 6c 61 79 2d 76 61 6c 75 65 20 28 70 72 69    6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 64 69 73  | splay-value.(prin1-to-string.dis | 
| 73820 |  70 6c 61 79 2d 76 61 6c 75 65 29 29 0a 20 20 20    20 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65  | play-value))......'face.'transie | 
| 73840 |  6e 74 2d 76 61 6c 75 65 29 29 29 0a 0a 28 63 6c    2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e 73  | nt-value)))..(cl-defmethod.trans | 
| 73860 |  69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28    28 6f 62 6a 20 67 70 74 65 6c 2d 6c 69 73 70 2d  | ient-infix-set.((obj.gptel-lisp- | 
| 73880 |  76 61 72 69 61 62 6c 65 29 20 76 61 6c 75 65 29    0a 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 65  | variable).value)...(funcall.(ore | 
| 738a0 |  66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 65 29    0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65  | f.obj.set-value)............(ore | 
| 738c0 |  66 20 6f 62 6a 20 76 61 72 69 61 62 6c 65 29 0a    20 20 20 20 20 20 20 20 20 20 20 28 6f 73 65 74  | f.obj.variable)............(oset | 
| 738e0 |  20 6f 62 6a 20 76 61 6c 75 65 20 76 61 6c 75 65    29 0a 20 20 20 20 20 20 20 20 20 20 20 67 70 74  | .obj.value.value)............gpt | 
| 73900 |  65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c    6f 63 61 6c 6c 79 29 29 0a 0a 3b 3b 20 2a 2a 20  | el--set-buffer-locally))..;;.**. | 
| 73920 |  43 6c 61 73 73 20 66 6f 72 20 6d 61 6e 61 67 69    6e 67 20 67 70 74 65 6c 20 74 6f 6f 6c 73 0a 0a  | Class.for.managing.gptel.tools.. | 
| 73940 |  28 64 65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d    2d 73 77 69 74 63 68 20 28 74 72 61 6e 73 69 65  | (defclass.gptel--switch.(transie | 
| 73960 |  6e 74 2d 73 77 69 74 63 68 29 0a 20 20 28 28 63    61 74 65 67 6f 72 79 20 3a 69 6e 69 74 61 72 67  | nt-switch)...((category.:initarg | 
| 73980 |  20 3a 63 61 74 65 67 6f 72 79 29 29 0a 20 20 22    43 6c 61 73 73 20 75 73 65 64 20 66 6f 72 20 61  | .:category))..."Class.used.for.a | 
| 739a0 |  72 67 75 6d 65 6e 74 73 20 74 68 61 74 20 73 68    61 72 65 20 61 20 63 61 74 65 67 6f 72 79 2e 22  | rguments.that.share.a.category." | 
| 739c0 |  29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64    20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78  | )..(cl-defmethod.transient-infix | 
| 739e0 |  2d 73 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c    2d 2d 73 77 69 74 63 68 29 20 76 61 6c 75 65 29  | -set.((obj.gptel--switch).value) | 
| 73a00 |  0a 20 20 22 53 65 74 20 56 41 4c 55 45 20 6f 66    20 61 20 60 67 70 74 65 6c 2d 2d 73 77 69 74 63  | ..."Set.VALUE.of.a.`gptel--switc | 
| 73a20 |  68 27 20 4f 42 4a 2e 0a 0a 49 74 20 69 73 20 61    20 6c 69 73 74 20 6f 66 20 74 68 65 20 63 61 74  | h'.OBJ...It.is.a.list.of.the.cat | 
| 73a40 |  65 67 6f 72 79 20 61 6e 64 20 61 72 67 75 6d 65    6e 74 2c 20 65 2e 67 2e 0a 20 28 5c 22 66 69 6c  | egory.and.argument,.e.g...(\"fil | 
| 73a60 |  65 73 79 73 74 65 6d 5c 22 20 5c 22 72 65 61 64    5f 66 69 6c 65 5c 22 29 2e 22 0a 20 20 28 6c 65  | esystem\".\"read_file\")."...(le | 
| 73a80 |  74 20 28 28 73 74 61 74 65 20 28 74 72 61 6e 73    69 65 6e 74 2d 73 63 6f 70 65 29 29 0a 20 20 20  | t.((state.(transient-scope)).... | 
| 73aa0 |  20 20 20 20 20 28 63 61 74 65 67 6f 72 79 20 28    6f 72 65 66 20 6f 62 6a 20 63 61 74 65 67 6f 72  | .....(category.(oref.obj.categor | 
| 73ac0 |  79 29 29 29 0a 20 20 20 20 28 69 66 20 76 61 6c    75 65 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67  | y))).....(if.value.........(prog | 
| 73ae0 |  6e 0a 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d    70 75 73 68 6e 65 77 20 28 6c 69 73 74 20 63 61  | n...........(cl-pushnew.(list.ca | 
| 73b00 |  74 65 67 6f 72 79 20 76 61 6c 75 65 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tegory.value)................... | 
| 73b20 |  20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 73    74 61 74 65 20 3a 74 6f 6f 6c 73 29 20 3a 74 65  | ....(plist-get.state.:tools).:te | 
| 73b40 |  73 74 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20    20 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20  | st.#'equal)...........(oset.obj. | 
| 73b60 |  76 61 6c 75 65 20 28 6c 69 73 74 20 63 61 74 65    67 6f 72 79 20 76 61 6c 75 65 29 29 29 0a 20 20  | value.(list.category.value)))... | 
| 73b80 |  20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 73    74 61 74 65 20 3a 74 6f 6f 6c 73 0a 20 20 20 20  | ....(plist-put.state.:tools..... | 
| 73ba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65    6c 65 74 65 20 28 6c 69 73 74 20 63 61 74 65 67  | .............(delete.(list.categ | 
| 73bc0 |  6f 72 79 20 28 6f 72 65 66 20 6f 62 6a 20 61 72    67 75 6d 65 6e 74 29 29 0a 20 20 20 20 20 20 20  | ory.(oref.obj.argument))........ | 
| 73be0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 6c 69 73 74 2d 67 65 74 20 73 74 61  | ..................(plist-get.sta | 
| 73c00 |  74 65 20 3a 74 6f 6f 6c 73 29 29 29 0a 20 20 20    20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c  | te.:tools))).......(oset.obj.val | 
| 73c20 |  75 65 20 6e 69 6c 29 29 0a 20 20 20 20 28 6f 73    65 74 20 74 72 61 6e 73 69 65 6e 74 2d 2d 70 72  | ue.nil)).....(oset.transient--pr | 
| 73c40 |  65 66 69 78 20 73 63 6f 70 65 20 73 74 61 74 65    29 29 29 0a 0a 3b 3b 20 2a 2a 20 43 6c 61 73 73  | efix.scope.state)))..;;.**.Class | 
| 73c60 |  20 66 6f 72 20 6d 61 6e 61 67 69 6e 67 20 67 70    74 65 6c 20 74 6f 6f 6c 20 63 61 74 65 67 6f 72  | .for.managing.gptel.tool.categor | 
| 73c80 |  69 65 73 0a 0a 28 64 65 66 63 6c 61 73 73 20 67    70 74 65 6c 2d 2d 73 77 69 74 63 68 2d 63 61 74  | ies..(defclass.gptel--switch-cat | 
| 73ca0 |  65 67 6f 72 79 20 28 74 72 61 6e 73 69 65 6e 74    2d 73 77 69 74 63 68 29 0a 20 20 28 28 63 61 74  | egory.(transient-switch)...((cat | 
| 73cc0 |  65 67 6f 72 79 20 3a 69 6e 69 74 61 72 67 20 3a    63 61 74 65 67 6f 72 79 29 29 0a 20 20 22 43 6c  | egory.:initarg.:category))..."Cl | 
| 73ce0 |  61 73 73 20 75 73 65 64 20 66 6f 72 20 61 72 67    75 6d 65 6e 74 73 20 74 68 61 74 20 73 77 69 74  | ass.used.for.arguments.that.swit | 
| 73d00 |  63 68 20 61 20 67 72 6f 75 70 20 6f 66 20 6f 74    68 65 72 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a  | ch.a.group.of.other.arguments... | 
| 73d20 |  54 68 65 69 72 20 6f 77 6e 20 76 61 6c 75 65 20    69 73 20 69 67 6e 6f 72 65 64 22 29 0a 0a 28 63  | Their.own.value.is.ignored")..(c | 
| 73d40 |  6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e    73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c  | l-defmethod.transient-format-val | 
| 73d60 |  75 65 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d    73 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 29  | ue.((obj.gptel--switch-category) | 
| 73d80 |  29 0a 20 20 28 6c 65 74 2a 20 28 28 63 61 74 65    67 6f 72 79 20 28 6f 72 65 66 20 6f 62 6a 20 63  | )...(let*.((category.(oref.obj.c | 
| 73da0 |  61 74 65 67 6f 72 79 29 29 0a 20 20 20 20 20 20    20 20 20 28 61 63 74 69 76 65 2d 63 6f 75 6e 74  | ategory))..........(active-count | 
| 73dc0 |  0a 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63    6f 75 6e 74 2d 69 66 20 28 6c 61 6d 62 64 61 20  | ...........(cl-count-if.(lambda. | 
| 73de0 |  28 74 6c 29 20 28 65 71 75 61 6c 20 28 63 61 72    20 74 6c 29 20 63 61 74 65 67 6f 72 79 29 29 0a  | (tl).(equal.(car.tl).category)). | 
| 73e00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65  | .......................(plist-ge | 
| 73e20 |  74 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f    70 65 29 20 3a 74 6f 6f 6c 73 29 29 29 0a 20 20  | t.(transient-scope).:tools)))... | 
| 73e40 |  20 20 20 20 20 20 20 28 74 6f 74 61 6c 2d 63 6f    75 6e 74 20 28 6c 65 6e 67 74 68 20 28 63 64 72  | .......(total-count.(length.(cdr | 
| 73e60 |  20 28 61 73 73 6f 63 20 63 61 74 65 67 6f 72 79    20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f  | .(assoc.category.gptel--known-to | 
| 73e80 |  6f 6c 73 29 29 29 29 29 0a 20 20 20 20 28 69 66    20 28 3e 20 61 63 74 69 76 65 2d 63 6f 75 6e 74  | ols))))).....(if.(>.active-count | 
| 73ea0 |  20 30 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f    70 65 72 74 69 7a 65 20 28 66 6f 72 6d 61 74 20  | .0).........(propertize.(format. | 
| 73ec0 |  22 28 25 64 2f 25 64 29 22 20 61 63 74 69 76 65    2d 63 6f 75 6e 74 20 74 6f 74 61 6c 2d 63 6f 75  | "(%d/%d)".active-count.total-cou | 
| 73ee0 |  6e 74 29 20 27 66 61 63 65 20 27 74 72 61 6e 73    69 65 6e 74 2d 76 61 6c 75 65 29 0a 20 20 20 20  | nt).'face.'transient-value)..... | 
| 73f00 |  20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66    6f 72 6d 61 74 20 22 28 30 2f 25 64 29 22 20 74  | ..(propertize.(format."(0/%d)".t | 
| 73f20 |  6f 74 61 6c 2d 63 6f 75 6e 74 29 20 27 66 61 63    65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61  | otal-count).'face.'transient-ina | 
| 73f40 |  63 74 69 76 65 2d 76 61 6c 75 65 29 29 29 29 0a    0a 3b 3b 20 50 72 65 73 73 69 6e 67 20 61 20 74  | ctive-value))))..;;.Pressing.a.t | 
| 73f60 |  6f 6f 6c 20 63 61 74 65 67 6f 72 79 20 6b 65 79    20 73 68 6f 75 6c 64 20 68 61 76 65 20 64 69 66  | ool.category.key.should.have.dif | 
| 73f80 |  66 65 72 65 6e 74 20 62 65 68 61 76 69 6f 72 73    20 69 6e 20 64 69 66 66 65 72 65 6e 74 0a 3b 3b  | ferent.behaviors.in.different.;; | 
| 73fa0 |  20 63 6f 6e 74 65 78 74 73 3a 0a 3b 3b 20 2d 20    49 66 20 74 68 65 20 74 6f 6f 6c 73 20 66 6f 72  | .contexts:.;;.-.If.the.tools.for | 
| 73fc0 |  20 74 68 65 20 63 61 74 65 67 6f 72 79 20 61 72    65 20 6e 6f 74 20 73 68 6f 77 6e 2c 20 73 68 6f  | .the.category.are.not.shown,.sho | 
| 73fe0 |  77 20 74 68 65 6d 2c 20 64 6f 20 6e 6f 74 68 69    6e 67 20 65 6c 73 65 0a 3b 3b 20 2d 20 49 66 20  | w.them,.do.nothing.else.;;.-.If. | 
| 74000 |  74 68 65 20 74 6f 6f 6c 73 20 61 72 65 20 73 68    6f 77 69 6e 67 20 61 6e 64 20 61 6e 79 20 6f 66  | the.tools.are.showing.and.any.of | 
| 74020 |  20 74 68 65 6d 20 61 72 65 20 73 65 6c 65 63 74    65 64 2c 20 64 65 73 65 6c 65 63 74 20 61 6c 6c  | .them.are.selected,.deselect.all | 
| 74040 |  0a 3b 3b 20 2d 20 49 66 20 74 68 65 20 74 6f 6f    6c 73 20 61 72 65 20 73 68 6f 77 69 6e 67 20 61  | .;;.-.If.the.tools.are.showing.a | 
| 74060 |  6e 64 20 6e 6f 6e 65 20 6f 66 20 74 68 65 6d 20    61 72 65 20 73 65 6c 65 63 74 65 64 2c 20 73 65  | nd.none.of.them.are.selected,.se | 
| 74080 |  6c 65 63 74 20 61 6c 6c 0a 0a 3b 3b 20 54 6f 20    64 6f 20 74 68 69 73 20 77 65 20 69 6e 64 65 70  | lect.all..;;.To.do.this.we.indep | 
| 740a0 |  65 6e 64 65 6e 74 6c 79 20 74 72 61 63 6b 20 77    68 65 74 68 65 72 20 74 68 65 20 63 61 74 65 67  | endently.track.whether.the.categ | 
| 740c0 |  6f 72 79 20 74 6f 6f 6c 73 20 61 72 65 20 76 69    73 69 62 6c 65 0a 3b 3b 20 28 22 61 63 74 69 76  | ory.tools.are.visible.;;.("activ | 
| 740e0 |  65 22 29 2c 20 61 6e 64 20 77 68 65 74 68 65 72    20 61 6e 79 20 63 61 74 65 67 6f 72 79 20 74 6f  | e"),.and.whether.any.category.to | 
| 74100 |  6f 6c 73 20 68 61 76 65 20 62 65 65 6e 20 22 73    65 6c 65 63 74 65 64 22 3a 0a 28 63 6c 2d 64 65  | ols.have.been."selected":.(cl-de | 
| 74120 |  66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e    74 2d 69 6e 66 69 78 2d 72 65 61 64 20 28 28 6f  | fmethod.transient-infix-read.((o | 
| 74140 |  62 6a 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68    2d 63 61 74 65 67 6f 72 79 29 29 0a 20 20 22 44  | bj.gptel--switch-category))..."D | 
| 74160 |  65 74 65 72 6d 69 6e 65 20 4f 42 4a 20 76 61 6c    75 65 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20  | etermine.OBJ.value.according.to. | 
| 74180 |  63 61 74 65 67 6f 72 79 20 74 6f 67 67 6c 65 20    73 65 74 74 69 6e 67 73 2e 22 0a 20 20 28 6c 65  | category.toggle.settings."...(le | 
| 741a0 |  74 2a 20 28 28 63 61 74 65 67 6f 72 79 20 28 6f    72 65 66 20 6f 62 6a 20 63 61 74 65 67 6f 72 79  | t*.((category.(oref.obj.category | 
| 741c0 |  29 29 0a 20 20 20 20 20 20 20 20 20 28 61 63 74    69 76 65 20 28 65 71 75 61 6c 20 63 61 74 65 67  | ))..........(active.(equal.categ | 
| 741e0 |  6f 72 79 20 28 70 6c 69 73 74 2d 67 65 74 20 28    74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29  | ory.(plist-get.(transient-scope) | 
| 74200 |  20 3a 63 61 74 65 67 6f 72 79 29 29 29 0a 20 20    20 20 20 20 20 20 20 28 73 65 6c 65 63 74 65 64  | .:category)))..........(selected | 
| 74220 |  20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64    61 20 28 74 6f 6f 6c 2d 73 70 65 63 29 20 28 65  | .(cl-some.(lambda.(tool-spec).(e | 
| 74240 |  71 75 61 6c 20 63 61 74 65 67 6f 72 79 20 28 63    61 72 20 74 6f 6f 6c 2d 73 70 65 63 29 29 29 0a  | qual.category.(car.tool-spec))). | 
| 74260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69  | ............................(pli | 
| 74280 |  73 74 2d 67 65 74 20 28 74 72 61 6e 73 69 65 6e    74 2d 73 63 6f 70 65 29 20 3a 74 6f 6f 6c 73 29  | st-get.(transient-scope).:tools) | 
| 742a0 |  29 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74    20 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20  | ))).....(if.(not.active)........ | 
| 742c0 |  20 28 6f 72 65 66 20 6f 62 6a 20 76 61 6c 75 65    29 0a 20 20 20 20 20 20 28 69 66 20 73 65 6c 65  | .(oref.obj.value).......(if.sele | 
| 742e0 |  63 74 65 64 20 6e 69 6c 20 28 6f 72 65 66 20 6f    62 6a 20 61 72 67 75 6d 65 6e 74 29 29 29 29 29  | cted.nil.(oref.obj.argument))))) | 
| 74300 |  0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20    74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d  | ..(cl-defmethod.transient-infix- | 
| 74320 |  73 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d    2d 73 77 69 74 63 68 2d 63 61 74 65 67 6f 72 79  | set.((obj.gptel--switch-category | 
| 74340 |  29 20 76 61 6c 75 65 29 0a 20 20 22 57 68 65 6e    20 73 65 74 74 69 6e 67 20 56 41 4c 55 45 2c 20  | ).value)..."When.setting.VALUE,. | 
| 74360 |  73 65 74 20 61 6c 6c 20 6f 70 74 69 6f 6e 73 20    69 6e 20 74 68 65 20 63 61 74 65 67 6f 72 79 20  | set.all.options.in.the.category. | 
| 74380 |  6f 66 20 4f 42 4a 2e 22 0a 20 20 28 64 6f 6c 69    73 74 20 28 73 75 66 66 69 78 2d 6f 62 6a 20 74  | of.OBJ."...(dolist.(suffix-obj.t | 
| 743a0 |  72 61 6e 73 69 65 6e 74 2d 2d 73 75 66 66 69 78    65 73 29 0a 20 20 20 20 3b 3b 20 46 69 6e 64 20  | ransient--suffixes).....;;.Find. | 
| 743c0 |  61 6c 6c 20 73 75 66 66 69 78 65 73 20 74 68 61    74 20 68 61 76 65 20 74 68 69 73 20 63 61 74 65  | all.suffixes.that.have.this.cate | 
| 743e0 |  67 6f 72 79 0a 20 20 20 20 28 77 68 65 6e 2d 6c    65 74 2a 20 28 28 28 63 6c 2d 74 79 70 65 70 20  | gory.....(when-let*.(((cl-typep. | 
| 74400 |  73 75 66 66 69 78 2d 6f 62 6a 20 27 67 70 74 65    6c 2d 2d 73 77 69 74 63 68 29 29 0a 20 20 20 20  | suffix-obj.'gptel--switch))..... | 
| 74420 |  20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71    75 61 6c 20 28 6f 72 65 66 20 73 75 66 66 69 78  | ............((equal.(oref.suffix | 
| 74440 |  2d 6f 62 6a 20 63 61 74 65 67 6f 72 79 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -obj.category).................. | 
| 74460 |  20 20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a    20 63 61 74 65 67 6f 72 79 29 29 29 0a 20 20 20  | .......(oref.obj.category))).... | 
| 74480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72    67 20 28 69 66 20 28 73 6c 6f 74 2d 62 6f 75 6e  | .............(arg.(if.(slot-boun | 
| 744a0 |  64 70 20 73 75 66 66 69 78 2d 6f 62 6a 20 27 61    72 67 75 6d 65 6e 74 29 0a 20 20 20 20 20 20 20  | dp.suffix-obj.'argument)........ | 
| 744c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6f 72 65 66 20 73 75 66 66 69 78 2d 6f  | ..................(oref.suffix-o | 
| 744e0 |  62 6a 20 61 72 67 75 6d 65 6e 74 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | bj.argument).................... | 
| 74500 |  20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 61 72    67 75 6d 65 6e 74 2d 66 6f 72 6d 61 74 29 29 29  | ....(oref.obj.argument-format))) | 
| 74520 |  29 0a 20 20 20 20 20 20 28 69 66 20 76 61 6c 75    65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).......(if.value............... | 
| 74540 |  20 20 20 20 20 20 20 20 20 20 3b 20 54 75 72 6e    20 6f 6e 2f 6f 66 66 20 61 6c 6c 20 6d 65 6d 62  | ..........;.Turn.on/off.all.memb | 
| 74560 |  65 72 73 20 69 6e 20 63 61 74 65 67 6f 72 79 0a    20 20 20 20 20 20 20 20 20 20 28 74 72 61 6e 73  | ers.in.category...........(trans | 
| 74580 |  69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 73    75 66 66 69 78 2d 6f 62 6a 20 61 72 67 29 0a 20  | ient-infix-set.suffix-obj.arg).. | 
| 745a0 |  20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e    74 2d 69 6e 66 69 78 2d 73 65 74 20 73 75 66 66  | .......(transient-infix-set.suff | 
| 745c0 |  69 78 2d 6f 62 6a 20 6e 69 6c 29 29 29 29 0a 20    20 3b 3b 20 55 70 64 61 74 65 20 74 68 65 20 61  | ix-obj.nil))))...;;.Update.the.a | 
| 745e0 |  63 74 69 76 65 20 6d 65 6e 75 20 63 61 74 65 67    6f 72 79 20 61 6e 64 20 6b 65 79 20 69 6e 20 74  | ctive.menu.category.and.key.in.t | 
| 74600 |  68 65 20 70 72 65 66 69 78 20 73 63 6f 70 65 0a    20 20 28 70 6c 69 73 74 2d 70 75 74 20 28 74 72  | he.prefix.scope...(plist-put.(tr | 
| 74620 |  61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a    63 61 74 65 67 6f 72 79 20 28 6f 72 65 66 20 6f  | ansient-scope).:category.(oref.o | 
| 74640 |  62 6a 20 63 61 74 65 67 6f 72 79 29 29 0a 20 20    28 70 6c 69 73 74 2d 70 75 74 20 28 74 72 61 6e  | bj.category))...(plist-put.(tran | 
| 74660 |  73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a 6b 65    79 20 28 6f 72 65 66 20 6f 62 6a 20 6b 65 79 29  | sient-scope).:key.(oref.obj.key) | 
| 74680 |  29 0a 20 20 3b 3b 20 46 69 6e 61 6c 6c 79 20 73    65 74 20 74 68 65 20 22 76 61 6c 75 65 22 20 6f  | )...;;.Finally.set.the."value".o | 
| 746a0 |  66 20 74 68 65 20 63 61 74 65 67 6f 72 79 20 69    74 73 65 6c 66 0a 20 20 28 6f 73 65 74 20 6f 62  | f.the.category.itself...(oset.ob | 
| 746c0 |  6a 20 76 61 6c 75 65 20 76 61 6c 75 65 29 29 0a    0a 3b 3b 20 2a 2a 20 43 6c 61 73 73 20 66 6f 72  | j.value.value))..;;.**.Class.for | 
| 746e0 |  20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 20 74    68 61 74 20 61 72 65 20 74 68 72 65 65 2d 77 61  | .gptel.options.that.are.three-wa | 
| 74700 |  79 20 73 77 69 74 63 68 65 73 0a 0a 28 64 65 66    63 6c 61 73 73 20 67 70 74 65 6c 2d 2d 73 77 69  | y.switches..(defclass.gptel--swi | 
| 74720 |  74 63 68 65 73 20 28 67 70 74 65 6c 2d 6c 69 73    70 2d 76 61 72 69 61 62 6c 65 29 0a 20 20 28 28  | tches.(gptel-lisp-variable)...(( | 
| 74740 |  64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20    3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61  | display-if-true.:initarg.:displa | 
| 74760 |  79 2d 69 66 2d 74 72 75 65 20 3a 69 6e 69 74 66    6f 72 6d 20 22 54 72 75 65 22 29 0a 20 20 20 28  | y-if-true.:initform."True")....( | 
| 74780 |  64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65    20 3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c  | display-if-false.:initarg.:displ | 
| 747a0 |  61 79 2d 69 66 2d 66 61 6c 73 65 20 3a 69 6e 69    74 66 6f 72 6d 20 22 46 61 6c 73 65 22 29 29 0a  | ay-if-false.:initform."False")). | 
| 747c0 |  20 20 22 42 6f 6f 6c 65 61 6e 20 6c 69 73 70 20    76 61 72 69 61 62 6c 65 20 63 6c 61 73 73 20 66  | .."Boolean.lisp.variable.class.f | 
| 747e0 |  6f 72 20 67 70 74 65 6c 2d 74 72 61 6e 73 69 65    6e 74 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65  | or.gptel-transient.")..(cl-defme | 
| 74800 |  74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 69    6e 66 69 78 2d 72 65 61 64 20 28 28 6f 62 6a 20  | thod.transient-infix-read.((obj. | 
| 74820 |  67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 29    29 0a 20 20 22 43 79 63 6c 65 20 74 68 72 6f 75  | gptel--switches))..."Cycle.throu | 
| 74840 |  67 68 20 74 68 65 20 6d 75 74 75 61 6c 6c 79 20    65 78 63 6c 75 73 69 76 65 20 73 77 69 74 63 68  | gh.the.mutually.exclusive.switch | 
| 74860 |  65 73 2e 22 0a 20 20 28 6e 6f 74 20 28 6f 72 65    66 20 6f 62 6a 20 76 61 6c 75 65 29 29 29 0a 0a  | es."...(not.(oref.obj.value))).. | 
| 74880 |  28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72    61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76  | (cl-defmethod.transient-format-v | 
| 748a0 |  61 6c 75 65 20 28 28 6f 62 6a 20 67 70 74 65 6c    2d 2d 73 77 69 74 63 68 65 73 29 29 0a 20 20 28  | alue.((obj.gptel--switches))...( | 
| 748c0 |  77 69 74 68 2d 73 6c 6f 74 73 20 28 76 61 6c 75    65 20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75  | with-slots.(value.display-if-tru | 
| 748e0 |  65 20 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c    73 65 29 20 6f 62 6a 0a 20 20 20 20 20 20 28 66  | e.display-if-false).obj.......(f | 
| 74900 |  6f 72 6d 61 74 0a 20 20 20 20 20 20 20 28 70 72    6f 70 65 72 74 69 7a 65 20 22 28 25 73 29 22 20  | ormat........(propertize."(%s)". | 
| 74920 |  27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74    2d 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 20  | 'face.'transient-delimiter)..... | 
| 74940 |  20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20    20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 64  | ...(concat.........(propertize.d | 
| 74960 |  69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | isplay-if-false................. | 
| 74980 |  20 20 20 20 27 66 61 63 65 20 28 69 66 20 76 61    6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69  | ....'face.(if.value.'transient-i | 
| 749a0 |  6e 61 63 74 69 76 65 2d 76 61 6c 75 65 20 27 74    72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29 29  | nactive-value.'transient-value)) | 
| 749c0 |  0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72    74 69 7a 65 20 22 7c 22 20 27 66 61 63 65 20 27  | .........(propertize."|".'face.' | 
| 749e0 |  74 72 61 6e 73 69 65 6e 74 2d 64 65 6c 69 6d 69    74 65 72 29 0a 20 20 20 20 20 20 20 20 28 70 72  | transient-delimiter).........(pr | 
| 74a00 |  6f 70 65 72 74 69 7a 65 20 64 69 73 70 6c 61 79    2d 69 66 2d 74 72 75 65 0a 20 20 20 20 20 20 20  | opertize.display-if-true........ | 
| 74a20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61    63 65 20 28 69 66 20 76 61 6c 75 65 20 27 74 72  | .............'face.(if.value.'tr | 
| 74a40 |  61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74    72 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76  | ansient-value.'transient-inactiv | 
| 74a60 |  65 2d 76 61 6c 75 65 29 29 29 29 29 29 0a 0a 3b    3b 20 2a 2a 20 43 6c 61 73 73 20 66 6f 72 20 67  | e-value))))))..;;.**.Class.for.g | 
| 74a80 |  70 74 65 6c 27 73 20 73 63 6f 70 65 20 6d 61 6e    61 67 65 6d 65 6e 74 2c 20 73 69 6e 67 6c 65 74  | ptel's.scope.management,.singlet | 
| 74aa0 |  6f 6e 0a 0a 28 64 65 66 63 6c 61 73 73 20 67 70    74 65 6c 2d 2d 73 63 6f 70 65 20 28 67 70 74 65  | on..(defclass.gptel--scope.(gpte | 
| 74ac0 |  6c 2d 2d 73 77 69 74 63 68 65 73 29 0a 20 20 28    28 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65  | l--switches)...((display-if-true | 
| 74ae0 |  20 3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c    61 79 2d 69 66 2d 74 72 75 65 20 3a 69 6e 69 74  | .:initarg.:display-if-true.:init | 
| 74b00 |  66 6f 72 6d 20 22 62 75 66 66 65 72 22 29 0a 20    20 20 28 64 69 73 70 6c 61 79 2d 69 66 2d 66 61  | form."buffer")....(display-if-fa | 
| 74b20 |  6c 73 65 20 3a 69 6e 69 74 61 72 67 20 3a 64 69    73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 3a  | lse.:initarg.:display-if-false.: | 
| 74b40 |  69 6e 69 74 66 6f 72 6d 20 22 67 6c 6f 62 61 6c    22 29 29 0a 20 20 22 53 69 6e 67 6c 65 74 6f 6e  | initform."global"))..."Singleton | 
| 74b60 |  20 6c 69 73 70 20 76 61 72 69 61 62 6c 65 20 63    6c 61 73 73 20 66 6f 72 20 60 67 70 74 65 6c 2d  | .lisp.variable.class.for.`gptel- | 
| 74b80 |  2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61    6c 6c 79 27 2e 0a 0a 54 68 69 73 20 69 73 20 75  | -set-buffer-locally'...This.is.u | 
| 74ba0 |  73 65 64 20 6f 6e 6c 79 20 66 6f 72 20 73 65 74    74 69 6e 67 20 74 68 69 73 20 76 61 72 69 61 62  | sed.only.for.setting.this.variab | 
| 74bc0 |  6c 65 20 76 69 61 20 60 67 70 74 65 6c 2d 6d 65    6e 75 27 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d  | le.via.`gptel-menu'.")..(cl-defm | 
| 74be0 |  65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d    69 6e 66 69 78 2d 72 65 61 64 20 28 28 6f 62 6a  | ethod.transient-infix-read.((obj | 
| 74c00 |  20 67 70 74 65 6c 2d 2d 73 63 6f 70 65 29 29 0a    20 20 22 43 79 63 6c 65 20 74 68 72 6f 75 67 68  | .gptel--scope))..."Cycle.through | 
| 74c20 |  20 74 68 65 20 6d 75 74 75 61 6c 6c 79 20 65 78    63 6c 75 73 69 76 65 20 73 77 69 74 63 68 65 73  | .the.mutually.exclusive.switches | 
| 74c40 |  2e 22 0a 20 20 28 77 69 74 68 2d 73 6c 6f 74 73    20 28 76 61 6c 75 65 29 20 6f 62 6a 0a 20 20 20  | ."...(with-slots.(value).obj.... | 
| 74c60 |  20 28 70 63 61 73 65 20 76 61 6c 75 65 0a 20 20    20 20 20 20 28 27 74 20 28 6d 65 73 73 61 67 65  | .(pcase.value.......('t.(message | 
| 74c80 |  20 22 50 61 72 61 6d 65 74 65 72 73 20 77 69 6c    6c 20 62 65 20 73 65 74 20 66 6f 72 20 74 68 65  | ."Parameters.will.be.set.for.the | 
| 74ca0 |  20 6e 65 78 74 20 72 65 71 75 65 73 74 20 6f 6e    6c 79 22 29 29 0a 20 20 20 20 20 20 28 27 6e 69  | .next.request.only")).......('ni | 
| 74cc0 |  6c 20 28 6d 65 73 73 61 67 65 20 22 50 61 72 61    6d 65 74 65 72 73 20 77 69 6c 6c 20 62 65 20 73  | l.(message."Parameters.will.be.s | 
| 74ce0 |  65 74 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c    79 22 29 29 0a 20 20 20 20 20 20 28 31 20 28 6d  | et.buffer-locally")).......(1.(m | 
| 74d00 |  65 73 73 61 67 65 20 22 50 61 72 61 6d 65 74 65    72 73 20 77 69 6c 6c 20 62 65 20 73 65 74 20 67  | essage."Parameters.will.be.set.g | 
| 74d20 |  6c 6f 62 61 6c 6c 79 22 29 29 29 0a 20 20 20 20    28 70 63 61 73 65 20 76 61 6c 75 65 20 28 27 74  | lobally"))).....(pcase.value.('t | 
| 74d40 |  20 31 29 20 28 27 6e 69 6c 20 74 29 20 28 31 20    6e 69 6c 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66  | .1).('nil.t).(1.nil))))..(cl-def | 
| 74d60 |  6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74    2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28  | method.transient-format-value.(( | 
| 74d80 |  6f 62 6a 20 67 70 74 65 6c 2d 2d 73 63 6f 70 65    29 29 0a 20 20 28 77 69 74 68 2d 73 6c 6f 74 73  | obj.gptel--scope))...(with-slots | 
| 74da0 |  20 28 76 61 6c 75 65 20 64 69 73 70 6c 61 79 2d    69 66 2d 74 72 75 65 20 64 69 73 70 6c 61 79 2d  | .(value.display-if-true.display- | 
| 74dc0 |  69 66 2d 66 61 6c 73 65 29 20 6f 62 6a 0a 20 20    20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20  | if-false).obj.......(format..... | 
| 74de0 |  20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22    28 25 73 29 22 20 27 66 61 63 65 20 27 74 72 61  | ...(propertize."(%s)".'face.'tra | 
| 74e00 |  6e 73 69 65 6e 74 2d 64 65 6c 69 6d 69 74 65 72    29 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74  | nsient-delimiter)........(concat | 
| 74e20 |  0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72    74 69 7a 65 20 64 69 73 70 6c 61 79 2d 69 66 2d  | .........(propertize.display-if- | 
| 74e40 |  66 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20  | false.....................'face. | 
| 74e60 |  28 69 66 20 28 6e 75 6c 6c 20 76 61 6c 75 65 29    20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75  | (if.(null.value).'transient-valu | 
| 74e80 |  65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61    63 74 69 76 65 2d 76 61 6c 75 65 29 29 0a 20 20  | e.'transient-inactive-value))... | 
| 74ea0 |  20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a    65 20 22 7c 22 20 27 66 61 63 65 20 27 74 72 61  | ......(propertize."|".'face.'tra | 
| 74ec0 |  6e 73 69 65 6e 74 2d 64 65 6c 69 6d 69 74 65 72    29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65  | nsient-delimiter).........(prope | 
| 74ee0 |  72 74 69 7a 65 20 64 69 73 70 6c 61 79 2d 69 66    2d 74 72 75 65 0a 20 20 20 20 20 20 20 20 20 20  | rtize.display-if-true........... | 
| 74f00 |  20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20    28 69 66 20 28 65 71 20 76 61 6c 75 65 20 74 29  | ..........'face.(if.(eq.value.t) | 
| 74f20 |  20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75    65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61  | .'transient-value.'transient-ina | 
| 74f40 |  63 74 69 76 65 2d 76 61 6c 75 65 29 29 0a 20 20    20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a  | ctive-value)).........(propertiz | 
| 74f60 |  65 20 22 7c 22 20 27 66 61 63 65 20 27 74 72 61    6e 73 69 65 6e 74 2d 64 65 6c 69 6d 69 74 65 72  | e."|".'face.'transient-delimiter | 
| 74f80 |  29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65    72 74 69 7a 65 20 22 6f 6e 65 73 68 6f 74 22 20  | ).........(propertize."oneshot". | 
| 74fa0 |  27 66 61 63 65 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65  | 'face.....................(if.(e | 
| 74fc0 |  71 6c 20 76 61 6c 75 65 20 31 29 20 27 74 72 61    6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72  | ql.value.1).'transient-value.'tr | 
| 74fe0 |  61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65    2d 76 61 6c 75 65 29 29 29 29 29 29 0a 0a 28 63  | ansient-inactive-value))))))..(c | 
| 75000 |  6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e    73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20  | l-defmethod.transient-infix-set. | 
| 75020 |  28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 63 6f    70 65 29 20 76 61 6c 75 65 29 0a 20 20 28 66 75  | ((obj.gptel--scope).value)...(fu | 
| 75040 |  6e 63 61 6c 6c 20 28 6f 72 65 66 20 6f 62 6a 20    73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20  | ncall.(oref.obj.set-value)...... | 
| 75060 |  20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20    76 61 72 69 61 62 6c 65 29 0a 20 20 20 20 20 20  | ......(oref.obj.variable)....... | 
| 75080 |  20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76    61 6c 75 65 20 76 61 6c 75 65 29 29 29 0a 0a 3b  | .....(oset.obj.value.value)))..; | 
| 750a0 |  3b 20 2a 2a 20 43 6c 61 73 73 20 66 6f 72 20 6d    61 6e 61 67 69 6e 67 20 67 70 74 65 6c 27 73 20  | ;.**.Class.for.managing.gptel's. | 
| 750c0 |  62 61 63 6b 65 6e 64 20 61 6e 64 20 6d 6f 64 65    6c 2c 20 73 69 6e 67 6c 65 74 6f 6e 0a 0a 28 64  | backend.and.model,.singleton..(d | 
| 750e0 |  65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d 70 72    6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 20  | efclass.gptel-provider-variable. | 
| 75100 |  28 74 72 61 6e 73 69 65 6e 74 2d 6c 69 73 70 2d    76 61 72 69 61 62 6c 65 29 0a 20 20 28 28 62 61  | (transient-lisp-variable)...((ba | 
| 75120 |  63 6b 65 6e 64 20 20 20 20 20 20 20 3a 69 6e 69    74 61 72 67 20 3a 62 61 63 6b 65 6e 64 29 0a 20  | ckend.......:initarg.:backend).. | 
| 75140 |  20 20 28 62 61 63 6b 65 6e 64 2d 76 61 6c 75 65    20 3a 69 6e 69 74 61 72 67 20 3a 62 61 63 6b 65  | ..(backend-value.:initarg.:backe | 
| 75160 |  6e 64 2d 76 61 6c 75 65 29 0a 20 20 20 28 61 6c    77 61 79 73 2d 72 65 61 64 20 3a 69 6e 69 74 66  | nd-value)....(always-read.:initf | 
| 75180 |  6f 72 6d 20 74 29 0a 20 20 20 28 73 65 74 2d 76    61 6c 75 65 20 3a 69 6e 69 74 61 72 67 20 3a 73  | orm.t)....(set-value.:initarg.:s | 
| 751a0 |  65 74 2d 76 61 6c 75 65 20 3a 69 6e 69 74 66 6f    72 6d 20 23 27 73 65 74 29 29 0a 20 20 22 43 6c  | et-value.:initform.#'set))..."Cl | 
| 751c0 |  61 73 73 20 75 73 65 64 20 66 6f 72 20 67 70 74    65 6c 2d 62 61 63 6b 65 6e 64 73 2e 22 29 0a 0a  | ass.used.for.gptel-backends.").. | 
| 751e0 |  28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72    61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76  | (cl-defmethod.transient-format-v | 
| 75200 |  61 6c 75 65 20 28 28 6f 62 6a 20 67 70 74 65 6c    2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62  | alue.((obj.gptel-provider-variab | 
| 75220 |  6c 65 29 29 0a 20 20 28 70 72 6f 70 65 72 74 69    7a 65 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20  | le))...(propertize.(concat...... | 
| 75240 |  20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c    2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20  | ..........(gptel-backend-name... | 
| 75260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62    75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75  | ..............(buffer-local-valu | 
| 75280 |  65 20 28 6f 72 65 66 20 6f 62 6a 20 62 61 63 6b    65 6e 64 29 20 74 72 61 6e 73 69 65 6e 74 2d 2d  | e.(oref.obj.backend).transient-- | 
| 752a0 |  6f 72 69 67 69 6e 61 6c 2d 62 75 66 66 65 72 29    29 20 22 3a 22 0a 20 20 20 20 20 20 20 20 20 20  | original-buffer)).":"........... | 
| 752c0 |  20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64    65 6c 2d 6e 61 6d 65 20 28 6f 72 65 66 20 6f 62  | .....(gptel--model-name.(oref.ob | 
| 752e0 |  6a 20 76 61 6c 75 65 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27  | j.value)))...............'face.' | 
| 75300 |  74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29    29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64  | transient-value))..(cl-defmethod | 
| 75320 |  20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78    2d 73 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c  | .transient-infix-set.((obj.gptel | 
| 75340 |  2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62    6c 65 29 20 76 61 6c 75 65 29 0a 20 20 28 70 63  | -provider-variable).value)...(pc | 
| 75360 |  61 73 65 2d 6c 65 74 20 28 28 60 28 2c 62 61 63    6b 65 6e 64 2d 76 61 6c 75 65 20 2c 6d 6f 64 65  | ase-let.((`(,backend-value.,mode | 
| 75380 |  6c 2d 76 61 6c 75 65 29 20 76 61 6c 75 65 29 29    0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f  | l-value).value)).....(funcall.(o | 
| 753a0 |  72 65 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75    65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ref.obj.set-value).............. | 
| 753c0 |  28 6f 72 65 66 20 6f 62 6a 20 76 61 72 69 61 62    6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | (oref.obj.variable)............. | 
| 753e0 |  20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 65    20 6d 6f 64 65 6c 2d 76 61 6c 75 65 29 0a 20 20  | .(oset.obj.value.model-value)... | 
| 75400 |  20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c    2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63  | ...........gptel--set-buffer-loc | 
| 75420 |  61 6c 6c 79 29 0a 20 20 20 20 28 66 75 6e 63 61    6c 6c 20 28 6f 72 65 66 20 6f 62 6a 20 73 65 74  | ally).....(funcall.(oref.obj.set | 
| 75440 |  2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 62  | -value)..............(oref.obj.b | 
| 75460 |  61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 62  | ackend)..............(oset.obj.b | 
| 75480 |  61 63 6b 65 6e 64 2d 76 61 6c 75 65 20 62 61 63    6b 65 6e 64 2d 76 61 6c 75 65 29 0a 20 20 20 20  | ackend-value.backend-value)..... | 
| 754a0 |  20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d    73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c  | .........gptel--set-buffer-local | 
| 754c0 |  6c 79 29 29 0a 20 20 28 74 72 61 6e 73 69 65 6e    74 2d 73 65 74 75 70 29 29 0a 0a 3b 3b 20 2a 2a  | ly))...(transient-setup))..;;.** | 
| 754e0 |  20 43 6c 61 73 73 20 66 6f 72 20 69 6e 66 69 78    20 6f 70 74 69 6f 6e 73 20 77 69 74 68 20 69 6e  | .Class.for.infix.options.with.in | 
| 75500 |  2d 62 75 66 66 65 72 20 6f 76 65 72 6c 61 79 20    64 69 73 70 6c 61 79 0a 0a 28 64 65 66 63 6c 61  | -buffer.overlay.display..(defcla | 
| 75520 |  73 73 20 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d    6f 76 65 72 6c 61 69 64 20 28 74 72 61 6e 73 69  | ss.gptel-option-overlaid.(transi | 
| 75540 |  65 6e 74 2d 6f 70 74 69 6f 6e 29 0a 20 20 28 28    64 69 73 70 6c 61 79 2d 6e 69 6c 20 3a 69 6e 69  | ent-option)...((display-nil.:ini | 
| 75560 |  74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 6e 69    6c 29 0a 20 20 20 28 6f 76 65 72 6c 61 79 20 3a  | targ.:display-nil)....(overlay.: | 
| 75580 |  69 6e 69 74 61 72 67 20 3a 6f 76 65 72 6c 61 79    29 29 0a 20 20 22 54 72 61 6e 73 69 65 6e 74 20  | initarg.:overlay))..."Transient. | 
| 755a0 |  6f 70 74 69 6f 6e 73 20 66 6f 72 20 6f 76 65 72    6c 61 79 73 20 64 69 73 70 6c 61 79 65 64 20 69  | options.for.overlays.displayed.i | 
| 755c0 |  6e 20 74 68 65 20 77 6f 72 6b 69 6e 67 20 62 75    66 66 65 72 2e 22 29 0a 0a 28 63 6c 2d 64 65 66  | n.the.working.buffer.")..(cl-def | 
| 755e0 |  6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74    2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28  | method.transient-format-value.(( | 
| 75600 |  6f 62 6a 20 67 70 74 65 6c 2d 6f 70 74 69 6f 6e    2d 6f 76 65 72 6c 61 69 64 29 29 0a 20 20 22 53  | obj.gptel-option-overlaid))..."S | 
| 75620 |  65 74 20 75 70 20 74 68 65 20 69 6e 2d 62 75 66    66 65 72 20 6f 76 65 72 6c 61 79 20 66 6f 72 20  | et.up.the.in-buffer.overlay.for. | 
| 75640 |  61 64 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63    74 69 76 65 2c 20 61 20 73 74 72 69 6e 67 2e 0a  | additional.directive,.a.string.. | 
| 75660 |  0a 41 6c 73 6f 20 66 6f 72 6d 61 74 20 69 74 73    20 76 61 6c 75 65 20 69 6e 20 74 68 65 20 54 72  | .Also.format.its.value.in.the.Tr | 
| 75680 |  61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e 22 0a 20    20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 6f  | ansient.menu."...(let.((value.(o | 
| 756a0 |  72 65 66 20 6f 62 6a 20 76 61 6c 75 65 29 29 0a    20 20 20 20 20 20 20 20 28 6f 76 20 20 20 20 28  | ref.obj.value)).........(ov....( | 
| 756c0 |  6f 72 65 66 20 6f 62 6a 20 6f 76 65 72 6c 61 79    29 29 0a 20 20 20 20 20 20 20 20 28 61 72 67 75  | oref.obj.overlay)).........(argu | 
| 756e0 |  6d 65 6e 74 20 28 6f 72 65 66 20 6f 62 6a 20 61    72 67 75 6d 65 6e 74 29 29 29 0a 20 20 20 20 3b  | ment.(oref.obj.argument))).....; | 
| 75700 |  3b 20 4d 61 6b 69 6e 67 20 61 6e 20 6f 76 65 72    6c 61 79 0a 20 20 20 20 28 69 66 20 28 6f 72 20  | ;.Making.an.overlay.....(if.(or. | 
| 75720 |  28 6e 6f 74 20 76 61 6c 75 65 29 20 28 73 74 72    69 6e 67 2d 65 6d 70 74 79 2d 70 20 76 61 6c 75  | (not.value).(string-empty-p.valu | 
| 75740 |  65 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65    6e 20 6f 76 20 28 64 65 6c 65 74 65 2d 6f 76 65  | e)).........(when.ov.(delete-ove | 
| 75760 |  72 6c 61 79 20 6f 76 29 29 0a 20 20 20 20 20 20    28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75  | rlay.ov)).......(with-current-bu | 
| 75780 |  66 66 65 72 20 74 72 61 6e 73 69 65 6e 74 2d 2d    6f 72 69 67 69 6e 61 6c 2d 62 75 66 66 65 72 0a  | ffer.transient--original-buffer. | 
| 757a0 |  20 20 20 20 20 20 20 20 28 6f 73 65 74 20 6f 62    6a 20 6f 76 65 72 6c 61 79 20 28 67 70 74 65 6c  | ........(oset.obj.overlay.(gptel | 
| 757c0 |  2d 2d 69 6e 73 74 72 75 63 74 69 6f 6e 73 2d 6d    61 6b 65 2d 6f 76 65 72 6c 61 79 20 76 61 6c 75  | --instructions-make-overlay.valu | 
| 757e0 |  65 20 6f 76 29 29 29 0a 20 20 20 20 20 20 28 6c    65 74 72 65 63 20 28 28 6f 76 2d 63 6c 65 61 72  | e.ov))).......(letrec.((ov-clear | 
| 75800 |  2d 68 6f 6f 6b 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29  | -hook.................(lambda.() | 
| 75820 |  20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76    20 28 6f 72 65 66 20 6f 62 6a 20 6f 76 65 72 6c  | .(when-let*.((ov.(oref.obj.overl | 
| 75840 |  61 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ay))............................ | 
| 75860 |  20 20 20 20 20 20 20 28 28 6f 76 65 72 6c 61 79    70 20 6f 76 29 29 29 0a 20 20 20 20 20 20 20 20  | .......((overlayp.ov)))......... | 
| 75880 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 74 72  | ................(remove-hook.'tr | 
| 758a0 |  61 6e 73 69 65 6e 74 2d 65 78 69 74 2d 68 6f 6f    6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ansient-exit-hook............... | 
| 758c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 6f 76 2d 63 6c 65 61 72 2d  | .......................ov-clear- | 
| 758e0 |  68 6f 6f 6b 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64  | hook).........................(d | 
| 75900 |  65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76    29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 61  | elete-overlay.ov))))).........(a | 
| 75920 |  64 64 2d 68 6f 6f 6b 20 27 74 72 61 6e 73 69 65    6e 74 2d 65 78 69 74 2d 68 6f 6f 6b 20 6f 76 2d  | dd-hook.'transient-exit-hook.ov- | 
| 75940 |  63 6c 65 61 72 2d 68 6f 6f 6b 29 29 29 0a 20 20    20 20 3b 3b 20 55 70 64 61 74 69 6e 67 20 74 72  | clear-hook))).....;;.Updating.tr | 
| 75960 |  61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 64 69 73    70 6c 61 79 0a 20 20 20 20 28 69 66 20 76 61 6c  | ansient.menu.display.....(if.val | 
| 75980 |  75 65 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70    65 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 20 61  | ue.........(propertize.(concat.a | 
| 759a0 |  72 67 75 6d 65 6e 74 20 28 74 72 75 6e 63 61 74    65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74  | rgument.(truncate-string-to-widt | 
| 759c0 |  68 20 76 61 6c 75 65 20 33 35 20 6e 69 6c 20 6e    69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 20 20  | h.value.35.nil.nil.t)).......... | 
| 759e0 |  20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65    20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75  | ...........'face.'transient-valu | 
| 75a00 |  65 29 0a 20 20 20 20 20 20 28 70 72 6f 70 65 72    74 69 7a 65 0a 20 20 20 20 20 20 20 28 63 6f 6e  | e).......(propertize........(con | 
| 75a20 |  63 61 74 20 22 28 22 20 28 73 79 6d 62 6f 6c 2d    6e 61 6d 65 20 28 6f 72 65 66 20 6f 62 6a 20 64  | cat."(".(symbol-name.(oref.obj.d | 
| 75a40 |  69 73 70 6c 61 79 2d 6e 69 6c 29 29 20 22 29 22    29 0a 20 20 20 20 20 20 20 27 66 61 63 65 20 27  | isplay-nil)).")")........'face.' | 
| 75a60 |  74 72 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69    76 65 2d 76 61 6c 75 65 29 29 29 29 0a 0a 0c 0a  | transient-inactive-value)))).... | 
| 75a80 |  3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 50    72 65 66 69 78 65 73 0a 0a 3b 3b 3b 23 23 23 61  | ;;.*.Transient.Prefixes..;;;###a | 
| 75aa0 |  75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61    64 20 27 67 70 74 65 6c 2d 6d 65 6e 75 20 22 67  | utoload.(autoload.'gptel-menu."g | 
| 75ac0 |  70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 20    6e 69 6c 20 74 29 0a 28 74 72 61 6e 73 69 65 6e  | ptel-transient".nil.t).(transien | 
| 75ae0 |  74 2d 64 65 66 69 6e 65 2d 70 72 65 66 69 78 20    67 70 74 65 6c 2d 6d 65 6e 75 20 28 29 0a 20 20  | t-define-prefix.gptel-menu.()... | 
| 75b00 |  22 43 68 61 6e 67 65 20 70 61 72 61 6d 65 74 65    72 73 20 6f 66 20 70 72 6f 6d 70 74 20 74 6f 20  | "Change.parameters.of.prompt.to. | 
| 75b20 |  73 65 6e 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2e    22 0a 20 20 3a 69 6e 63 6f 6d 70 61 74 69 62 6c  | send.to.the.LLM."...:incompatibl | 
| 75b40 |  65 20 27 28 28 22 6d 22 20 22 79 22 20 22 69 22    29 20 28 22 65 22 20 22 67 22 20 22 62 22 20 22  | e.'(("m"."y"."i").("e"."g"."b"." | 
| 75b60 |  6b 22 29 29 0a 20 20 3b 3b 20 3a 76 61 6c 75 65    20 28 6c 69 73 74 20 28 63 6f 6e 63 61 74 20 22  | k"))...;;.:value.(list.(concat." | 
| 75b80 |  62 22 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29    29 29 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69  | b".(buffer-name)))...[:descripti | 
| 75ba0 |  6f 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d    70 72 6f 6d 70 74 2d 2d 66 6f 72 6d 61 74 0a 20  | on.gptel-system-prompt--format.. | 
| 75bc0 |  20 20 5b 22 22 0a 20 20 20 20 3a 69 66 20 28 6c    61 6d 62 64 61 20 28 29 20 28 6e 6f 74 20 28 67  | ..["".....:if.(lambda.().(not.(g | 
| 75be0 |  70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61    62 6c 65 2d 70 20 27 6e 6f 73 79 73 74 65 6d 29  | ptel--model-capable-p.'nosystem) | 
| 75c00 |  29 29 0a 20 20 20 20 22 49 6e 73 74 72 75 63 74    69 6f 6e 73 22 0a 20 20 20 20 28 22 73 22 20 22  | ))....."Instructions".....("s"." | 
| 75c20 |  53 65 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61    67 65 22 20 67 70 74 65 6c 2d 73 79 73 74 65 6d  | Set.system.message".gptel-system | 
| 75c40 |  2d 70 72 6f 6d 70 74 20 3a 74 72 61 6e 73 69 65    6e 74 20 74 29 0a 20 20 20 20 28 67 70 74 65 6c  | -prompt.:transient.t).....(gptel | 
| 75c60 |  2d 2d 69 6e 66 69 78 2d 61 64 64 2d 64 69 72 65    63 74 69 76 65 29 5d 0a 20 20 20 5b 3a 70 61 64  | --infix-add-directive)]....[:pad | 
| 75c80 |  2d 6b 65 79 73 20 74 20 22 22 0a 20 20 20 20 28    3a 69 6e 66 6f 20 23 27 67 70 74 65 6c 2d 2d 64  | -keys.t."".....(:info.#'gptel--d | 
| 75ca0 |  65 73 63 72 69 62 65 2d 69 6e 66 69 78 2d 63 6f    6e 74 65 78 74 0a 20 20 20 20 20 3a 66 61 63 65  | escribe-infix-context......:face | 
| 75cc0 |  20 74 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 69    6e 67 20 3a 66 6f 72 6d 61 74 20 22 25 64 22 29  | .transient-heading.:format."%d") | 
| 75ce0 |  0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66    69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 63  | .....(gptel--infix-context-add-c | 
| 75d00 |  75 72 72 65 6e 74 2d 6b 69 6c 6c 29 0a 20 20 20    20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63  | urrent-kill).....(gptel--infix-c | 
| 75d20 |  6f 6e 74 65 78 74 2d 61 64 64 2d 72 65 67 69 6f    6e 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69  | ontext-add-region).....(gptel--i | 
| 75d40 |  6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64    2d 62 75 66 66 65 72 29 0a 20 20 20 20 28 67 70  | nfix-context-add-buffer).....(gp | 
| 75d60 |  74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 74 65    78 74 2d 61 64 64 2d 66 69 6c 65 29 0a 20 20 20  | tel--infix-context-add-file).... | 
| 75d80 |  20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63    6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c  | .(gptel--infix-context-remove-al | 
| 75da0 |  6c 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73    75 66 66 69 78 2d 63 6f 6e 74 65 78 74 2d 62 75  | l).....(gptel--suffix-context-bu | 
| 75dc0 |  66 66 65 72 29 5d 0a 20 20 20 5b 3a 70 61 64 2d    6b 65 79 73 20 74 0a 20 20 20 20 3a 69 66 20 28  | ffer)]....[:pad-keys.t.....:if.( | 
| 75de0 |  6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67    70 74 65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 0a 20  | lambda.().(and.gptel-use-tools.. | 
| 75e00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6f 72 20 67 70 74 65 6c 2d 2d 6b 6e 6f  | ..................(or.gptel--kno | 
| 75e20 |  77 6e 2d 74 6f 6f 6c 73 20 28 66 65 61 74 75 72    65 70 20 27 67 70 74 65 6c 2d 69 6e 74 65 67 72  | wn-tools.(featurep.'gptel-integr | 
| 75e40 |  61 74 69 6f 6e 73 29 29 29 29 0a 20 20 20 20 22    22 20 28 3a 69 6e 66 6f 0a 20 20 20 20 20 20 20  | ations))))....."".(:info........ | 
| 75e60 |  20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20  | .(lambda.()...........(concat... | 
| 75e80 |  20 20 20 20 20 20 20 20 20 22 54 6f 6f 6c 73 22    20 28 61 6e 64 20 67 70 74 65 6c 2d 74 6f 6f 6c  | ........."Tools".(and.gptel-tool | 
| 75ea0 |  73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61  | s.........................(conca | 
| 75ec0 |  74 20 22 20 28 22 20 28 70 72 6f 70 65 72 74 69    7a 65 20 28 66 6f 72 6d 61 74 20 22 25 64 20 73  | t.".(".(propertize.(format."%d.s | 
| 75ee0 |  65 6c 65 63 74 65 64 22 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | elected"........................ | 
| 75f00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 75f20 |  20 20 28 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d    74 6f 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20  | ..(length.gptel-tools))......... | 
| 75f40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 75f60 |  20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27    77 61 72 6e 69 6e 67 29 0a 20 20 20 20 20 20 20  | .........'face.'warning)........ | 
| 75f80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 22 29 22 29 29 29 29  | .........................")")))) | 
| 75fa0 |  0a 20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74    20 22 25 64 22 20 3a 66 61 63 65 20 74 72 61 6e  | .........:format."%d".:face.tran | 
| 75fc0 |  73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29 0a 20    20 20 20 28 22 74 22 20 22 53 65 6c 65 63 74 20  | sient-heading).....("t"."Select. | 
| 75fe0 |  74 6f 6f 6c 73 22 20 67 70 74 65 6c 2d 74 6f 6f    6c 73 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29  | tools".gptel-tools.:transient.t) | 
| 76000 |  0a 20 20 20 20 28 22 54 22 20 22 43 6f 6e 74 69    6e 75 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 22 0a  | .....("T"."Continue.tool.calls". | 
| 76020 |  20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20    28 69 6e 74 65 72 61 63 74 69 76 65 29 20 28 67  | .....(lambda.().(interactive).(g | 
| 76040 |  70 74 65 6c 2d 2d 68 61 6e 64 6c 65 2d 74 6f 6f    6c 2d 75 73 65 20 67 70 74 65 6c 2d 2d 66 73 6d  | ptel--handle-tool-use.gptel--fsm | 
| 76060 |  2d 6c 61 73 74 29 29 0a 20 20 20 20 20 3a 69 66    20 28 6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64  | -last))......:if.(lambda.().(and | 
| 76080 |  20 67 70 74 65 6c 2d 2d 66 73 6d 2d 6c 61 73 74    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .gptel--fsm-last................ | 
| 760a0 |  20 20 20 20 20 28 65 71 20 28 67 70 74 65 6c 2d    66 73 6d 2d 73 74 61 74 65 20 67 70 74 65 6c 2d  | .....(eq.(gptel-fsm-state.gptel- | 
| 760c0 |  2d 66 73 6d 2d 6c 61 73 74 29 20 27 54 4f 4f 4c    29 29 29 29 5d 5d 0a 20 20 5b 5b 28 67 70 74 65  | -fsm-last).'TOOL))))]]...[[(gpte | 
| 760e0 |  6c 2d 2d 70 72 65 73 65 74 0a 20 20 20 20 20 3a    6b 65 79 20 22 40 22 20 3a 66 6f 72 6d 61 74 20  | l--preset......:key."@".:format. | 
| 76100 |  22 25 64 22 0a 20 20 20 20 20 3a 64 65 73 63 72    69 70 74 69 6f 6e 0a 20 20 20 20 20 28 6c 61 6d  | "%d"......:description......(lam | 
| 76120 |  62 64 61 20 28 29 0a 20 20 20 20 20 20 20 28 63    6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a  | bda.()........(concat.(propertiz | 
| 76140 |  65 20 22 52 65 71 75 65 73 74 20 50 61 72 61 6d    65 74 65 72 73 22 20 27 66 61 63 65 20 27 74 72  | e."Request.Parameters".'face.'tr | 
| 76160 |  61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ansient-heading)................ | 
| 76180 |  28 67 70 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 70    72 65 73 65 74 2d 73 74 72 69 6e 67 29 29 29 29  | (gptel--format-preset-string)))) | 
| 761a0 |  0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66    69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70  | .....(gptel--infix-variable-scop | 
| 761c0 |  65 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69    6e 66 69 78 2d 70 72 6f 76 69 64 65 72 29 0a 20  | e).....(gptel--infix-provider).. | 
| 761e0 |  20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78    2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a 20 20 20  | ...(gptel--infix-max-tokens).... | 
| 76200 |  20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6e    75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73  | .(gptel--infix-num-messages-to-s | 
| 76220 |  65 6e 64 0a 20 20 20 20 20 3a 69 66 20 28 6c 61    6d 62 64 61 20 28 29 20 28 61 6e 64 20 67 70 74  | end......:if.(lambda.().(and.gpt | 
| 76240 |  65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e    64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | el-expert-commands.............. | 
| 76260 |  20 20 20 20 20 20 20 28 6f 72 20 67 70 74 65 6c    2d 6d 6f 64 65 20 67 70 74 65 6c 2d 74 72 61 63  | .......(or.gptel-mode.gptel-trac | 
| 76280 |  6b 2d 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20    20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78  | k-response)))).....(gptel--infix | 
| 762a0 |  2d 74 65 6d 70 65 72 61 74 75 72 65 20 3a 69 66    20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65  | -temperature.:if.(lambda.().gpte | 
| 762c0 |  6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e 64    73 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d  | l-expert-commands)).....(gptel-- | 
| 762e0 |  69 6e 66 69 78 2d 75 73 65 2d 63 6f 6e 74 65 78    74 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69  | infix-use-context).....(gptel--i | 
| 76300 |  6e 66 69 78 2d 69 6e 63 6c 75 64 65 2d 72 65 61    73 6f 6e 69 6e 67 29 0a 20 20 20 20 28 67 70 74  | nfix-include-reasoning).....(gpt | 
| 76320 |  65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d 74 6f    6f 6c 73 29 0a 20 20 20 20 28 67 70 74 65 6c 2d  | el--infix-use-tools).....(gptel- | 
| 76340 |  2d 69 6e 66 69 78 2d 74 72 61 63 6b 2d 72 65 73    70 6f 6e 73 65 0a 20 20 20 20 20 3a 69 66 20 28  | -infix-track-response......:if.( | 
| 76360 |  6c 61 6d 62 64 61 20 28 29 20 28 61 6e 64 20 67    70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d  | lambda.().(and.gptel-expert-comm | 
| 76380 |  61 6e 64 73 20 28 6e 6f 74 20 67 70 74 65 6c 2d    6d 6f 64 65 29 29 29 29 0a 20 20 20 20 28 67 70  | ands.(not.gptel-mode)))).....(gp | 
| 763a0 |  74 65 6c 2d 2d 69 6e 66 69 78 2d 74 72 61 63 6b    2d 6d 65 64 69 61 20 3a 69 66 20 28 6c 61 6d 62  | tel--infix-track-media.:if.(lamb | 
| 763c0 |  64 61 20 28 29 20 67 70 74 65 6c 2d 6d 6f 64 65    29 29 5d 0a 20 20 20 5b 22 20 3c 50 72 6f 6d 70  | da.().gptel-mode))]....[".<Promp | 
| 763e0 |  74 20 66 72 6f 6d 22 0a 20 20 20 20 28 22 6d 22    20 22 4d 69 6e 69 62 75 66 66 65 72 20 69 6e 73  | t.from".....("m"."Minibuffer.ins | 
| 76400 |  74 65 61 64 22 20 22 6d 22 29 0a 20 20 20 20 28    22 79 22 20 22 4b 69 6c 6c 2d 72 69 6e 67 20 69  | tead"."m").....("y"."Kill-ring.i | 
| 76420 |  6e 73 74 65 61 64 22 20 22 79 22 29 0a 20 20 20    20 22 22 0a 20 20 20 20 28 22 69 22 20 22 52 65  | nstead"."y")....."".....("i"."Re | 
| 76440 |  73 70 6f 6e 64 20 69 6e 20 70 6c 61 63 65 22 20    22 69 22 29 5d 0a 20 20 20 5b 22 20 3e 52 65 73  | spond.in.place"."i")]....[".>Res | 
| 76460 |  70 6f 6e 73 65 20 74 6f 22 0a 20 20 20 20 28 22    65 22 20 22 45 63 68 6f 20 61 72 65 61 22 20 22  | ponse.to".....("e"."Echo.area"." | 
| 76480 |  65 22 29 0a 20 20 20 20 28 22 62 22 20 22 4f 74    68 65 72 20 62 75 66 66 65 72 22 20 22 62 22 0a  | e").....("b"."Other.buffer"."b". | 
| 764a0 |  20 20 20 20 20 3a 63 6c 61 73 73 20 74 72 61 6e    73 69 65 6e 74 2d 6f 70 74 69 6f 6e 0a 20 20 20  | .....:class.transient-option.... | 
| 764c0 |  20 20 3a 70 72 6f 6d 70 74 20 22 4f 75 74 70 75    74 20 74 6f 20 62 75 66 66 65 72 3a 20 22 0a 20  | ..:prompt."Output.to.buffer:.".. | 
| 764e0 |  20 20 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d    62 64 61 20 28 70 72 6f 6d 70 74 20 5f 20 5f 68  | ....:reader.(lambda.(prompt._._h | 
| 76500 |  69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 72 65 61 64 2d 62 75 66  | istory)................(read-buf | 
| 76520 |  66 65 72 20 70 72 6f 6d 70 74 20 28 62 75 66 66    65 72 2d 6e 61 6d 65 20 28 6f 74 68 65 72 2d 62  | fer.prompt.(buffer-name.(other-b | 
| 76540 |  75 66 66 65 72 29 29 20 6e 69 6c 29 29 29 0a 20    20 20 20 28 22 67 22 20 22 67 70 74 65 6c 20 73  | uffer)).nil))).....("g"."gptel.s | 
| 76560 |  65 73 73 69 6f 6e 22 20 22 67 22 0a 20 20 20 20    20 3a 63 6c 61 73 73 20 74 72 61 6e 73 69 65 6e  | ession"."g"......:class.transien | 
| 76580 |  74 2d 6f 70 74 69 6f 6e 0a 20 20 20 20 20 3a 70    72 6f 6d 70 74 20 22 45 78 69 73 74 69 6e 67 20  | t-option......:prompt."Existing. | 
| 765a0 |  6f 72 20 6e 65 77 20 67 70 74 65 6c 20 73 65 73    73 69 6f 6e 3a 20 22 0a 20 20 20 20 20 3a 72 65  | or.new.gptel.session:."......:re | 
| 765c0 |  61 64 65 72 0a 20 20 20 20 20 28 6c 61 6d 62 64    61 20 28 70 72 6f 6d 70 74 20 5f 20 5f 68 69 73  | ader......(lambda.(prompt._._his | 
| 765e0 |  74 6f 72 79 29 0a 20 20 20 20 20 20 20 28 72 65    61 64 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20  | tory)........(read-buffer....... | 
| 76600 |  20 20 70 72 6f 6d 70 74 20 28 67 65 6e 65 72 61    74 65 2d 6e 65 77 2d 62 75 66 66 65 72 2d 6e 61  | ..prompt.(generate-new-buffer-na | 
| 76620 |  6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 63 6f 6e 63 61 74 20 22 2a 22 20 28  | me.................(concat."*".( | 
| 76640 |  67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61    6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64  | gptel-backend-name.gptel-backend | 
| 76660 |  29 20 22 2a 22 29 29 0a 20 20 20 20 20 20 20 20    6e 69 6c 20 28 6c 61 6d 62 64 61 20 28 62 75 66  | )."*")).........nil.(lambda.(buf | 
| 76680 |  2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 69 66 20 28 63 6f 6e 73 70 20  | -name)...............(if.(consp. | 
| 766a0 |  62 75 66 2d 6e 61 6d 65 29 20 28 73 65 74 71 20    62 75 66 2d 6e 61 6d 65 20 28 63 61 72 20 62 75  | buf-name).(setq.buf-name.(car.bu | 
| 766c0 |  66 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62  | f-name)))...............(let.((b | 
| 766e0 |  75 66 20 28 67 65 74 2d 62 75 66 66 65 72 20 62    75 66 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20  | uf.(get-buffer.buf-name)))...... | 
| 76700 |  20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20    28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61  | ...........(and.(buffer-local-va | 
| 76720 |  6c 75 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 20    62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20  | lue.'gptel-mode.buf)............ | 
| 76740 |  20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28    65 71 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66  | ..........(not.(eq.(current-buff | 
| 76760 |  65 72 29 20 62 75 66 29 29 29 29 29 29 29 29 0a    20 20 20 20 28 22 6b 22 20 22 4b 69 6c 6c 2d 72  | er).buf)))))))).....("k"."Kill-r | 
| 76780 |  69 6e 67 22 20 22 6b 22 29 5d 5d 0a 20 20 5b 5b    3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 61  | ing"."k")]]...[[:description.(la | 
| 767a0 |  6d 62 64 61 20 28 29 20 28 63 6f 6e 63 61 74 20    28 61 6e 64 20 67 70 74 65 6c 2d 2d 72 65 77 72  | mbda.().(concat.(and.gptel--rewr | 
| 767c0 |  69 74 65 2d 6f 76 65 72 6c 61 79 73 20 22 43 6f    6e 74 69 6e 75 65 20 22 29 0a 20 20 20 20 20 20  | ite-overlays."Continue.")....... | 
| 767e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 22 52 65 77 72 69 74  | ........................."Rewrit | 
| 76800 |  65 22 29 29 0a 20 20 20 20 3a 69 66 20 28 6c 61    6d 62 64 61 20 28 29 20 28 6f 72 20 28 75 73 65  | e")).....:if.(lambda.().(or.(use | 
| 76820 |  2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e  | -region-p)...................(an | 
| 76840 |  64 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65    2d 6f 76 65 72 6c 61 79 73 0a 20 20 20 20 20 20  | d.gptel--rewrite-overlays....... | 
| 76860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65  | .................(gptel--rewrite | 
| 76880 |  2d 73 61 6e 69 74 69 7a 65 2d 6f 76 65 72 6c 61    79 73 29 29 29 29 0a 20 20 20 20 28 22 72 22 0a  | -sanitize-overlays)))).....("r". | 
| 768a0 |  20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20    28 69 66 20 28 67 65 74 2d 63 68 61 72 2d 70 72  | .....(lambda.().(if.(get-char-pr | 
| 768c0 |  6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27    67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a 20  | operty.(point).'gptel-rewrite).. | 
| 768e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49    74 65 72 61 74 65 22 20 22 52 65 77 72 69 74 65  | .............."Iterate"."Rewrite | 
| 76900 |  22 29 29 0a 20 20 20 20 20 67 70 74 65 6c 2d 72    65 77 72 69 74 65 29 5d 0a 20 20 20 5b 22 54 77  | "))......gptel-rewrite)]....["Tw | 
| 76920 |  65 61 6b 20 52 65 73 70 6f 6e 73 65 22 20 3a 69    66 20 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70  | eak.Response".:if.gptel--in-resp | 
| 76940 |  6f 6e 73 65 2d 70 20 3a 70 61 64 2d 6b 65 79 73    20 74 0a 20 20 20 20 28 22 53 50 43 22 20 22 4d  | onse-p.:pad-keys.t.....("SPC"."M | 
| 76960 |  61 72 6b 22 20 67 70 74 65 6c 2d 2d 6d 61 72 6b    2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 28  | ark".gptel--mark-response).....( | 
| 76980 |  22 4d 2d 52 45 54 22 20 22 52 65 67 65 6e 65 72    61 74 65 22 20 67 70 74 65 6c 2d 2d 72 65 67 65  | "M-RET"."Regenerate".gptel--rege | 
| 769a0 |  6e 65 72 61 74 65 20 3a 69 66 20 67 70 74 65 6c    2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29  | nerate.:if.gptel--in-response-p) | 
| 769c0 |  0a 20 20 20 20 28 22 50 22 20 22 50 72 65 76 69    6f 75 73 20 76 61 72 69 61 6e 74 22 20 67 70 74  | .....("P"."Previous.variant".gpt | 
| 769e0 |  65 6c 2d 2d 70 72 65 76 69 6f 75 73 2d 76 61 72    69 61 6e 74 0a 20 20 20 20 20 3a 69 66 20 67 70  | el--previous-variant......:if.gp | 
| 76a00 |  74 65 6c 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 65    2d 68 69 73 74 6f 72 79 2d 70 0a 20 20 20 20 20  | tel--at-response-history-p...... | 
| 76a20 |  3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 20 20    20 20 28 22 4e 22 20 22 4e 65 78 74 20 76 61 72  | :transient.t).....("N"."Next.var | 
| 76a40 |  69 61 6e 74 22 20 67 70 74 65 6c 2d 2d 70 72 65    76 69 6f 75 73 2d 76 61 72 69 61 6e 74 0a 20 20  | iant".gptel--previous-variant... | 
| 76a60 |  20 20 20 3a 69 66 20 67 70 74 65 6c 2d 2d 61 74    2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72  | ...:if.gptel--at-response-histor | 
| 76a80 |  79 2d 70 0a 20 20 20 20 20 3a 74 72 61 6e 73 69    65 6e 74 20 74 29 0a 20 20 20 20 28 22 45 22 20  | y-p......:transient.t).....("E". | 
| 76aa0 |  22 45 64 69 66 66 20 70 72 65 76 69 6f 75 73 22    20 67 70 74 65 6c 2d 2d 65 64 69 66 66 0a 20 20  | "Ediff.previous".gptel--ediff... | 
| 76ac0 |  20 20 20 3a 69 66 20 67 70 74 65 6c 2d 2d 61 74    2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72  | ...:if.gptel--at-response-histor | 
| 76ae0 |  79 2d 70 29 5d 0a 20 20 20 5b 22 44 72 79 20 52    75 6e 22 20 3a 69 66 20 28 6c 61 6d 62 64 61 20  | y-p)]....["Dry.Run".:if.(lambda. | 
| 76b00 |  28 29 20 28 6f 72 20 67 70 74 65 6c 2d 6c 6f 67    2d 6c 65 76 65 6c 20 67 70 74 65 6c 2d 65 78 70  | ().(or.gptel-log-level.gptel-exp | 
| 76b20 |  65 72 74 2d 63 6f 6d 6d 61 6e 64 73 29 29 0a 20    20 20 20 28 22 49 22 20 22 49 6e 73 70 65 63 74  | ert-commands)).....("I"."Inspect | 
| 76b40 |  20 71 75 65 72 79 20 28 4c 69 73 70 29 22 0a 20    20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20  | .query.(Lisp)"......(lambda.().. | 
| 76b60 |  20 20 20 20 20 20 22 49 6e 73 70 65 63 74 20 74    68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69  | ......"Inspect.the.query.that.wi | 
| 76b80 |  6c 6c 20 62 65 20 73 65 6e 74 20 61 73 20 61 20    6c 69 73 70 20 6f 62 6a 65 63 74 2e 22 0a 20 20  | ll.be.sent.as.a.lisp.object."... | 
| 76ba0 |  20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76    65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c  | .....(interactive)........(gptel | 
| 76bc0 |  2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c    29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d  | --sanitize-model)........(gptel- | 
| 76be0 |  2d 69 6e 73 70 65 63 74 2d 71 75 65 72 79 0a 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73  | -inspect-query.........(gptel--s | 
| 76c00 |  75 66 66 69 78 2d 73 65 6e 64 0a 20 20 20 20 20    20 20 20 20 28 63 6f 6e 73 20 22 49 22 20 28 74  | uffix-send..........(cons."I".(t | 
| 76c20 |  72 61 6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72    61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d  | ransient-args.transient-current- | 
| 76c40 |  63 6f 6d 6d 61 6e 64 29 29 29 29 29 29 0a 20 20    20 20 28 22 4a 22 20 22 49 6e 73 70 65 63 74 20  | command)))))).....("J"."Inspect. | 
| 76c60 |  71 75 65 72 79 20 28 4a 53 4f 4e 29 22 0a 20 20    20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20  | query.(JSON)"......(lambda.()... | 
| 76c80 |  20 20 20 20 20 22 49 6e 73 70 65 63 74 20 74 68    65 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c  | ....."Inspect.the.query.that.wil | 
| 76ca0 |  6c 20 62 65 20 73 65 6e 74 20 61 73 20 61 20 4a    53 4f 4e 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20  | l.be.sent.as.a.JSON.object.".... | 
| 76cc0 |  20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65    29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d  | ....(interactive)........(gptel- | 
| 76ce0 |  2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29    0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d  | -sanitize-model)........(gptel-- | 
| 76d00 |  69 6e 73 70 65 63 74 2d 71 75 65 72 79 0a 20 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75  | inspect-query.........(gptel--su | 
| 76d20 |  66 66 69 78 2d 73 65 6e 64 0a 20 20 20 20 20 20    20 20 20 28 63 6f 6e 73 20 22 49 22 20 28 74 72  | ffix-send..........(cons."I".(tr | 
| 76d40 |  61 6e 73 69 65 6e 74 2d 61 72 67 73 20 74 72 61    6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63  | ansient-args.transient-current-c | 
| 76d60 |  6f 6d 6d 61 6e 64 29 29 29 0a 20 20 20 20 20 20    20 20 27 6a 73 6f 6e 29 29 29 5d 5d 0a 20 20 5b  | ommand))).........'json)))]]...[ | 
| 76d80 |  28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73    65 6e 64 29 5d 0a 20 20 28 69 6e 74 65 72 61 63  | (gptel--suffix-send)]...(interac | 
| 76da0 |  74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 2d    73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a  | tive)...(gptel--sanitize-model). | 
| 76dc0 |  20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74    75 70 20 27 67 70 74 65 6c 2d 6d 65 6e 75 29 29  | ..(transient-setup.'gptel-menu)) | 
| 76de0 |  0a 0a 3b 3b 20 2a 2a 20 50 72 65 66 69 78 20 66    6f 72 20 73 65 74 74 69 6e 67 20 74 68 65 20 73  | ..;;.**.Prefix.for.setting.the.s | 
| 76e00 |  79 73 74 65 6d 20 70 72 6f 6d 70 74 2e 0a 0a 28    64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 65 74  | ystem.prompt...(defun.gptel--set | 
| 76e20 |  75 70 2d 64 69 72 65 63 74 69 76 65 2d 6d 65 6e    75 20 28 73 79 6d 20 6d 73 67 20 26 6f 70 74 69  | up-directive-menu.(sym.msg.&opti | 
| 76e40 |  6f 6e 61 6c 20 65 78 74 65 72 6e 61 6c 29 0a 20    20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20  | onal.external)..."Return.a.list. | 
| 76e60 |  6f 66 20 74 72 61 6e 73 69 65 6e 74 20 69 6e 66    69 78 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 66  | of.transient.infix.definitions.f | 
| 76e80 |  6f 72 20 73 65 74 74 69 6e 67 20 67 70 74 65 6c    0a 64 69 72 65 63 74 69 76 65 73 2e 0a 0a 53 59  | or.setting.gptel.directives...SY | 
| 76ea0 |  4d 20 69 73 20 74 68 65 20 73 79 6d 62 6f 6c 20    77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 73  | M.is.the.symbol.whose.value.is.s | 
| 76ec0 |  65 74 20 74 6f 20 74 68 65 20 73 65 6c 65 63 74    65 64 20 64 69 72 65 63 74 69 76 65 2e 2e 0a 4d  | et.to.the.selected.directive...M | 
| 76ee0 |  53 47 20 69 73 20 74 68 65 20 6d 65 61 6e 69 6e    67 20 6f 66 20 73 79 6d 62 6f 6c 2c 20 75 73 65  | SG.is.the.meaning.of.symbol,.use | 
| 76f00 |  64 20 77 68 65 6e 20 6d 65 73 73 61 67 69 6e 67    2e 0a 49 66 20 45 58 54 45 52 4e 41 4c 20 69 73  | d.when.messaging..If.EXTERNAL.is | 
| 76f20 |  20 6e 6f 6e 2d 6e 69 6c 2c 20 69 6e 63 6c 75 64    65 20 65 78 74 65 72 6e 61 6c 20 73 6f 75 72 63  | .non-nil,.include.external.sourc | 
| 76f40 |  65 73 20 6f 66 20 64 69 72 65 63 74 69 76 65 73    2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f  | es.of.directives."...(cl-loop.fo | 
| 76f60 |  72 20 28 74 79 70 65 20 2e 20 70 72 6f 6d 70 74    29 20 69 6e 20 67 70 74 65 6c 2d 64 69 72 65 63  | r.(type...prompt).in.gptel-direc | 
| 76f80 |  74 69 76 65 73 0a 20 20 20 20 20 20 20 20 20 20    20 3b 3b 20 41 76 6f 69 64 20 63 6c 61 73 68 65  | tives............;;.Avoid.clashe | 
| 76fa0 |  73 20 77 69 74 68 20 74 68 65 20 63 75 73 74 6f    6d 20 64 69 72 65 63 74 69 76 65 20 6b 65 79 0a  | s.with.the.custom.directive.key. | 
| 76fc0 |  20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20    75 6e 75 73 65 64 2d 6b 65 79 73 20 3d 20 28 64  | ...........with.unused-keys.=.(d | 
| 76fe0 |  65 6c 65 74 65 20 3f 73 20 28 6e 63 6f 6e 63 20    28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65  | elete.?s.(nconc.(number-sequence | 
| 77000 |  20 3f 61 20 3f 7a 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .?a.?z)......................... | 
| 77020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6e 75 6d 62 65 72 2d  | ........................(number- | 
| 77040 |  73 65 71 75 65 6e 63 65 20 3f 30 20 3f 39 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 77 69 74  | sequence.?0.?9)))............wit | 
| 77060 |  68 20 77 69 64 74 68 20 3d 20 28 77 69 6e 64 6f    77 2d 77 69 64 74 68 29 0a 20 20 20 20 20 20 20  | h.width.=.(window-width)........ | 
| 77080 |  20 20 20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28    73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 79 70 65  | ....for.name.=.(symbol-name.type | 
| 770a0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72    20 6b 65 79 20 3d 20 28 73 65 71 2d 66 69 6e 64  | )............for.key.=.(seq-find | 
| 770c0 |  20 28 6c 61 6d 62 64 61 20 28 6b 29 20 28 6d 65    6d 62 65 72 20 6b 20 75 6e 75 73 65 64 2d 6b 65  | .(lambda.(k).(member.k.unused-ke | 
| 770e0 |  79 73 29 29 20 6e 61 6d 65 20 28 73 65 71 2d 66    69 72 73 74 20 75 6e 75 73 65 64 2d 6b 65 79 73  | ys)).name.(seq-first.unused-keys | 
| 77100 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 64 6f    20 28 73 65 74 71 20 75 6e 75 73 65 64 2d 6b 65  | ))............do.(setq.unused-ke | 
| 77120 |  79 73 20 28 64 65 6c 65 74 65 20 6b 65 79 20 75    6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20  | ys.(delete.key.unused-keys)).... | 
| 77140 |  20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 65    78 70 6c 69 63 69 74 20 64 65 63 6c 61 72 61 74  | ........;;.The.explicit.declarat | 
| 77160 |  69 6f 6e 20 22 3a 74 72 61 6e 73 69 65 6e 74 20    74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 65  | ion.":transient.transient--do-re | 
| 77180 |  74 75 72 6e 22 20 68 65 72 65 0a 20 20 20 20 20    20 20 20 20 20 20 3b 3b 20 61 70 70 65 61 72 73  | turn".here............;;.appears | 
| 771a0 |  20 74 6f 20 62 65 20 72 65 71 75 69 72 65 64 20    66 6f 72 20 54 72 61 6e 73 69 65 6e 74 20 76 30  | .to.be.required.for.Transient.v0 | 
| 771c0 |  2e 35 20 61 6e 64 20 75 70 2e 20 20 57 69 74 68    6f 75 74 20 69 74 2c 20 74 68 65 73 65 0a 20 20  | .5.and.up...Without.it,.these... | 
| 771e0 |  20 20 20 20 20 20 20 20 20 3b 3b 20 61 72 65 20    74 72 65 61 74 65 64 20 61 73 20 73 75 66 66 69  | .........;;.are.treated.as.suffi | 
| 77200 |  78 65 73 20 77 68 65 6e 20 69 6e 76 6f 6b 69 6e    67 20 60 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d  | xes.when.invoking.`gptel-system- | 
| 77220 |  70 72 6f 6d 70 74 27 20 64 69 72 65 63 74 6c 79    2c 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | prompt'.directly,............;;. | 
| 77240 |  61 6e 64 20 69 6e 66 69 78 65 73 20 77 68 65 6e    20 67 6f 69 6e 67 20 74 68 72 6f 75 67 68 20 60  | and.infixes.when.going.through.` | 
| 77260 |  67 70 74 65 6c 2d 6d 65 6e 75 27 2e 0a 20 20 20    20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a  | gptel-menu'.............;;.TODO: | 
| 77280 |  20 52 61 69 73 65 20 61 6e 20 69 73 73 75 65 20    77 69 74 68 20 54 72 61 6e 73 69 65 6e 74 2e 0a  | .Raise.an.issue.with.Transient.. | 
| 772a0 |  20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65    63 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c  | ...........collect............(l | 
| 772c0 |  69 73 74 20 28 6b 65 79 2d 64 65 73 63 72 69 70    74 69 6f 6e 20 28 6c 69 73 74 20 6b 65 79 29 29  | ist.(key-description.(list.key)) | 
| 772e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 63 6f 6e 63 61 74 20 28 63 61 70 69 74  | ..................(concat.(capit | 
| 77300 |  61 6c 69 7a 65 20 6e 61 6d 65 29 20 22 20 22 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | alize.name)."."................. | 
| 77320 |  20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72    74 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61  | .........(propertize.".".'displa | 
| 77340 |  79 20 27 28 73 70 61 63 65 20 3a 61 6c 69 67 6e    2d 74 6f 20 32 30 29 29 0a 20 20 20 20 20 20 20  | y.'(space.:align-to.20))........ | 
| 77360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20  | ..................(propertize... | 
| 77380 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20  | ........................(concat. | 
| 773a0 |  22 28 22 20 28 67 70 74 65 6c 2d 2d 64 65 73 63    72 69 62 65 2d 64 69 72 65 63 74 69 76 65 20 70  | "(".(gptel--describe-directive.p | 
| 773c0 |  72 6f 6d 70 74 20 28 2d 20 77 69 64 74 68 20 33    30 29 29 20 22 29 22 29 0a 20 20 20 20 20 20 20  | rompt.(-.width.30)).")")........ | 
| 773e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 27 66 61 63 65 20 27 73 68 61 64 6f 77  | ...................'face.'shadow | 
| 77400 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 60 28 6c 61 6d 62 64 61 20 28 29 20  | ))..................`(lambda.(). | 
| 77420 |  28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (interactive)................... | 
| 77440 |  20 20 28 6d 65 73 73 61 67 65 20 22 25 73 3a 20    25 73 22 20 2c 6d 73 67 20 2c 28 67 70 74 65 6c  | ..(message."%s:.%s".,msg.,(gptel | 
| 77460 |  2d 2d 64 65 73 63 72 69 62 65 2d 64 69 72 65 63    74 69 76 65 20 70 72 6f 6d 70 74 20 31 30 30 20  | --describe-directive.prompt.100. | 
| 77480 |  22 e2 ae 90 20 22 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70  | "....")).....................(gp | 
| 774a0 |  74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63    6f 70 65 20 27 2c 73 79 6d 20 27 2c 70 72 6f 6d  | tel--set-with-scope.',sym.',prom | 
| 774c0 |  70 74 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75    66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 0a 09  | pt.gptel--set-buffer-locally)).. | 
| 774e0 |  20 20 20 20 20 20 20 20 20 3a 74 72 61 6e 73 69    65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d  | .........:transient.'transient-- | 
| 77500 |  64 6f 2d 72 65 74 75 72 6e 29 0a 20 20 20 20 20    20 20 20 20 20 20 69 6e 74 6f 20 70 72 6f 6d 70  | do-return)............into.promp | 
| 77520 |  74 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20    20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65  | t-suffixes............finally.re | 
| 77540 |  74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20    28 6e 63 6f 6e 63 0a 20 20 20 20 20 20 20 20 20  | turn............(nconc.......... | 
| 77560 |  20 20 20 70 72 6f 6d 70 74 2d 73 75 66 66 69 78    65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...prompt-suffixes.............( | 
| 77580 |  6c 69 73 74 20 28 6c 69 73 74 20 22 44 45 4c 22    20 22 4e 6f 6e 65 22 0a 20 20 20 20 20 20 20 20  | list.(list."DEL"."None"......... | 
| 775a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    60 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74  | ................`(lambda.().(int | 
| 775c0 |  65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | eractive)....................... | 
| 775e0 |  20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25    73 20 75 6e 73 65 74 22 20 2c 6d 73 67 29 0a 20  | .....(message."%s.unset".,msg).. | 
| 77600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c  | ..........................(gptel | 
| 77620 |  2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65    20 27 2c 73 79 6d 20 6e 69 6c 20 67 70 74 65 6c  | --set-with-scope.',sym.nil.gptel | 
| 77640 |  2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63    61 6c 6c 79 29 29 0a 20 20 20 20 20 20 20 20 20  | --set-buffer-locally)).......... | 
| 77660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73  | ...............:transient.'trans | 
| 77680 |  69 65 6e 74 2d 2d 64 6f 2d 72 65 74 75 72 6e 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61  | ient--do-return)).............(a | 
| 776a0 |  6e 64 20 65 78 74 65 72 6e 61 6c 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69  | nd.external..................(li | 
| 776c0 |  73 74 20 28 6c 69 73 74 20 22 53 50 43 22 20 22    50 69 63 6b 20 63 72 6f 77 64 73 6f 75 72 63 65  | st.(list."SPC"."Pick.crowdsource | 
| 776e0 |  64 20 70 72 6f 6d 70 74 22 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | d.prompt"....................... | 
| 77700 |  20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 72    65 61 64 2d 63 72 6f 77 64 73 6f 75 72 63 65 64  | .......'gptel--read-crowdsourced | 
| 77720 |  2d 70 72 6f 6d 70 74 0a 09 09 20 20 20 20 20 20    20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20  | -prompt................;;.NOTE:. | 
| 77740 |  51 75 69 74 74 69 6e 67 20 74 68 65 20 63 6f 6d    70 6c 65 74 69 6e 67 20 72 65 61 64 20 77 68 65  | Quitting.the.completing.read.whe | 
| 77760 |  6e 20 70 69 63 6b 69 6e 67 20 61 0a 09 09 20 20    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 72  | n.picking.a................;;.cr | 
| 77780 |  6f 77 64 73 6f 75 72 63 65 64 20 70 72 6f 6d 70    74 20 77 69 6c 6c 20 63 61 75 73 65 20 74 68 65  | owdsourced.prompt.will.cause.the | 
| 777a0 |  20 74 72 61 6e 73 69 65 6e 74 20 74 6f 20 65 78    69 74 0a 09 09 20 20 20 20 20 20 20 20 20 20 20  | .transient.to.exit.............. | 
| 777c0 |  20 20 3b 3b 20 69 6e 73 74 65 61 64 20 6f 66 20    72 65 74 75 72 6e 69 6e 67 20 74 6f 20 74 68 65  | ..;;.instead.of.returning.to.the | 
| 777e0 |  20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 20 6d    65 6e 75 2e 0a 20 20 20 20 20 20 20 20 20 20 20  | .system.prompt.menu............. | 
| 77800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72  | ..................:transient.'tr | 
| 77820 |  61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69 74    29 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75  | ansient--do-exit))))))..;;;###au | 
| 77840 |  74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64    20 27 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70  | toload.(autoload.'gptel-system-p | 
| 77860 |  72 6f 6d 70 74 20 22 67 70 74 65 6c 2d 74 72 61    6e 73 69 65 6e 74 22 20 6e 69 6c 20 74 29 0a 28  | rompt."gptel-transient".nil.t).( | 
| 77880 |  74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65    2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 73 79  | transient-define-prefix.gptel-sy | 
| 778a0 |  73 74 65 6d 2d 70 72 6f 6d 70 74 20 28 29 0a 20    20 22 53 65 74 20 74 68 65 20 4c 4c 4d 20 73 79  | stem-prompt.()..."Set.the.LLM.sy | 
| 778c0 |  73 74 65 6d 20 6d 65 73 73 61 67 65 20 66 6f 72    20 4c 4c 4d 20 69 6e 74 65 72 61 63 74 69 6f 6e  | stem.message.for.LLM.interaction | 
| 778e0 |  73 2e 0a 0a 54 68 65 20 5c 22 73 79 73 74 65 6d    20 6d 65 73 73 61 67 65 5c 22 20 65 73 74 61 62  | s...The.\"system.message\".estab | 
| 77900 |  6c 69 73 68 65 73 20 64 69 72 65 63 74 69 76 65    73 20 66 6f 72 20 74 68 65 20 63 68 61 74 0a 73  | lishes.directives.for.the.chat.s | 
| 77920 |  65 73 73 69 6f 6e 20 61 6e 64 20 6d 6f 64 69 66    69 65 73 20 74 68 65 20 62 65 68 61 76 69 6f 72  | ession.and.modifies.the.behavior | 
| 77940 |  20 6f 66 20 74 68 65 20 4c 4c 4d 2e 20 53 6f 6d    65 20 65 78 61 6d 70 6c 65 73 20 6f 66 0a 73 79  | .of.the.LLM..Some.examples.of.sy | 
| 77960 |  73 74 65 6d 20 70 72 6f 6d 70 74 73 20 61 72 65    3a 0a 0a 59 6f 75 20 61 72 65 20 61 20 68 65 6c  | stem.prompts.are:..You.are.a.hel | 
| 77980 |  70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20    41 6e 73 77 65 72 20 61 73 20 63 6f 6e 63 69 73  | pful.assistant..Answer.as.concis | 
| 779a0 |  65 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 2e    0a 52 65 70 6c 79 20 6f 6e 6c 79 20 77 69 74 68  | ely.as.possible..Reply.only.with | 
| 779c0 |  20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20    61 6e 64 20 6e 6f 20 70 72 6f 73 65 2e 0a 59 6f  | .shell.commands.and.no.prose..Yo | 
| 779e0 |  75 20 61 72 65 20 61 20 70 6f 65 74 2e 20 52 65    70 6c 79 20 6f 6e 6c 79 20 69 6e 20 76 65 72 73  | u.are.a.poet..Reply.only.in.vers | 
| 77a00 |  65 2e 0a 0a 4d 6f 72 65 20 65 78 74 65 6e 73 69    76 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67  | e...More.extensive.system.messag | 
| 77a20 |  65 73 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c    20 66 6f 72 20 73 70 65 63 69 66 69 63 20 74 61  | es.can.be.useful.for.specific.ta | 
| 77a40 |  73 6b 73 2e 0a 0a 43 75 73 74 6f 6d 69 7a 65 20    60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65  | sks...Customize.`gptel-directive | 
| 77a60 |  73 27 20 66 6f 72 20 74 61 73 6b 2d 73 70 65 63    69 66 69 63 20 70 72 6f 6d 70 74 73 2e 22 0a 20  | s'.for.task-specific.prompts.".. | 
| 77a80 |  20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 67    70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d  | .[:description.gptel-system-prom | 
| 77aa0 |  70 74 2d 2d 66 6f 72 6d 61 74 0a 20 20 20 5b 28    67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 79  | pt--format....[(gptel--suffix-sy | 
| 77ac0 |  73 74 65 6d 2d 6d 65 73 73 61 67 65 29 5d 0a 20    20 20 5b 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78  | stem-message)]....[(gptel--infix | 
| 77ae0 |  2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 65 29    5d 5d 0a 20 20 20 5b 3a 63 6c 61 73 73 20 74 72  | -variable-scope)]]....[:class.tr | 
| 77b00 |  61 6e 73 69 65 6e 74 2d 63 6f 6c 75 6d 6e 0a 20    20 20 20 3a 73 65 74 75 70 2d 63 68 69 6c 64 72  | ansient-column.....:setup-childr | 
| 77b20 |  65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28    5f 29 20 28 74 72 61 6e 73 69 65 6e 74 2d 70 61  | en.....(lambda.(_).(transient-pa | 
| 77b40 |  72 73 65 2d 73 75 66 66 69 78 65 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d  | rse-suffixes.............'gptel- | 
| 77b60 |  73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c  | system-prompt.............(gptel | 
| 77b80 |  2d 2d 73 65 74 75 70 2d 64 69 72 65 63 74 69 76    65 2d 6d 65 6e 75 0a 20 20 20 20 20 20 20 20 20  | --setup-directive-menu.......... | 
| 77ba0 |  20 20 20 20 27 67 70 74 65 6c 2d 2d 73 79 73 74    65 6d 2d 6d 65 73 73 61 67 65 20 22 44 69 72 65  | ....'gptel--system-message."Dire | 
| 77bc0 |  63 74 69 76 65 22 20 74 29 29 29 0a 20 20 20 20    3a 70 61 64 2d 6b 65 79 73 20 74 5d 29 0a 0a 3b  | ctive".t))).....:pad-keys.t])..; | 
| 77be0 |  3b 20 2a 2a 20 50 72 65 66 69 78 20 66 6f 72 20    73 61 76 69 6e 67 20 61 6e 64 20 61 70 70 6c 79  | ;.**.Prefix.for.saving.and.apply | 
| 77c00 |  69 6e 67 20 70 72 65 73 65 74 73 0a 0a 28 74 72    61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 70  | ing.presets..(transient-define-p | 
| 77c20 |  72 65 66 69 78 20 67 70 74 65 6c 2d 2d 70 72 65    73 65 74 20 28 29 0a 20 20 22 41 70 70 6c 79 20  | refix.gptel--preset.()..."Apply. | 
| 77c40 |  61 20 67 70 74 65 6c 20 70 72 65 73 65 74 2c 20    6f 72 20 73 61 76 65 20 74 68 65 20 63 75 72 72  | a.gptel.preset,.or.save.the.curr | 
| 77c60 |  65 6e 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f    6e 20 61 73 20 61 20 70 72 65 73 65 74 2e 0a 0a  | ent.configuration.as.a.preset... | 
| 77c80 |  41 20 5c 22 70 72 65 73 65 74 5c 22 20 69 73 20    61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20  | A.\"preset\".is.a.collection.of. | 
| 77ca0 |  67 70 74 65 6c 20 73 65 74 74 69 6e 67 73 2c 20    73 75 63 68 20 61 73 20 74 68 65 20 6d 6f 64 65  | gptel.settings,.such.as.the.mode | 
| 77cc0 |  6c 2c 0a 62 61 63 6b 65 6e 64 2c 20 73 79 73 74    65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 20 65  | l,.backend,.system.message.and.e | 
| 77ce0 |  6e 61 62 6c 65 64 20 74 6f 6f 6c 73 2c 20 74 68    61 74 20 61 72 65 20 61 70 70 6c 69 65 64 20 61  | nabled.tools,.that.are.applied.a | 
| 77d00 |  6e 64 20 75 73 65 64 0a 74 6f 67 65 74 68 65 72    2e 20 20 53 65 65 20 60 67 70 74 65 6c 2d 6d 61  | nd.used.together...See.`gptel-ma | 
| 77d20 |  6b 65 2d 70 72 65 73 65 74 27 20 66 6f 72 20 64    65 74 61 69 6c 73 2e 22 0a 20 20 3a 74 72 61 6e  | ke-preset'.for.details."...:tran | 
| 77d40 |  73 69 65 6e 74 2d 73 75 66 66 69 78 20 23 27 74    72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 65 74  | sient-suffix.#'transient--do-ret | 
| 77d60 |  75 72 6e 0a 20 20 5b 3a 64 65 73 63 72 69 70 74    69 6f 6e 20 22 53 61 76 65 20 6f 72 20 61 70 70  | urn...[:description."Save.or.app | 
| 77d80 |  6c 79 20 61 20 70 72 65 73 65 74 20 63 6f 6c 6c    65 63 74 69 6f 6e 20 6f 66 20 67 70 74 65 6c 20  | ly.a.preset.collection.of.gptel. | 
| 77da0 |  6f 70 74 69 6f 6e 73 22 0a 20 20 20 5b 3a 70 61    64 2d 6b 65 79 73 20 74 0a 20 20 20 20 28 22 43  | options"....[:pad-keys.t.....("C | 
| 77dc0 |  2d 73 22 20 22 53 61 76 65 20 63 75 72 72 65 6e    74 20 73 65 74 74 69 6e 67 73 20 74 6f 20 70 72  | -s"."Save.current.settings.to.pr | 
| 77de0 |  65 73 65 74 22 20 67 70 74 65 6c 2d 2d 73 61 76    65 2d 70 72 65 73 65 74 29 5d 5d 0a 20 20 5b 3a  | eset".gptel--save-preset)]]...[: | 
| 77e00 |  69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70    74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 70 72 65 73 65  | if.(lambda.().gptel--known-prese | 
| 77e20 |  74 73 29 0a 20 20 20 3a 63 6c 61 73 73 20 74 72    61 6e 73 69 65 6e 74 2d 63 6f 6c 75 6d 6e 0a 20  | ts)....:class.transient-column.. | 
| 77e40 |  20 20 3a 73 65 74 75 70 2d 63 68 69 6c 64 72 65    6e 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29  | ..:setup-children....(lambda.(_) | 
| 77e60 |  0a 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74    2d 70 61 72 73 65 2d 73 75 66 66 69 78 65 73 0a  | ......(transient-parse-suffixes. | 
| 77e80 |  20 20 20 20 20 20 27 67 70 74 65 6c 2d 2d 70 72    65 73 65 74 0a 20 20 20 20 20 20 28 63 6c 2d 6c  | ......'gptel--preset.......(cl-l | 
| 77ea0 |  6f 6f 70 0a 20 20 20 20 20 20 20 66 6f 72 20 28    6e 61 6d 65 2d 73 79 6d 20 2e 20 70 72 65 73 65  | oop........for.(name-sym...prese | 
| 77ec0 |  74 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e 6f    77 6e 2d 70 72 65 73 65 74 73 0a 20 20 20 20 20  | t).in.gptel--known-presets...... | 
| 77ee0 |  20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28 66 6f    72 6d 61 74 20 22 25 73 22 20 6e 61 6d 65 2d 73  | ..for.name.=.(format."%s".name-s | 
| 77f00 |  79 6d 29 0a 20 20 20 20 20 20 20 77 69 74 68 20    75 6e 75 73 65 64 2d 6b 65 79 73 20 3d 20 28 6e  | ym)........with.unused-keys.=.(n | 
| 77f20 |  63 6f 6e 63 20 28 6e 75 6d 62 65 72 2d 73 65 71    75 65 6e 63 65 20 3f 61 20 3f 7a 29 0a 20 20 20  | conc.(number-sequence.?a.?z).... | 
| 77f40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e  | ..............................(n | 
| 77f60 |  75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f    30 20 3f 39 29 29 0a 20 20 20 20 20 20 20 66 6f  | umber-sequence.?0.?9))........fo | 
| 77f80 |  72 20 64 65 73 63 72 69 70 74 69 6f 6e 20 3d 20    28 70 6c 69 73 74 2d 67 65 74 20 70 72 65 73 65  | r.description.=.(plist-get.prese | 
| 77fa0 |  74 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 0a    20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 20 3d  | t.:description)........for.key.= | 
| 77fc0 |  20 28 73 65 71 2d 66 69 6e 64 20 28 6c 61 6d 62    64 61 20 28 6b 29 20 28 6d 65 6d 62 65 72 20 6b  | .(seq-find.(lambda.(k).(member.k | 
| 77fe0 |  20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .unused-keys)).................. | 
| 78000 |  20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 28    73 65 71 2d 66 69 72 73 74 20 75 6e 75 73 65 64  | ..........name.(seq-first.unused | 
| 78020 |  2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 64    6f 20 28 73 65 74 71 20 75 6e 75 73 65 64 2d 6b  | -keys))........do.(setq.unused-k | 
| 78040 |  65 79 73 20 28 64 65 6c 71 20 6b 65 79 20 75 6e    75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20 20  | eys.(delq.key.unused-keys))..... | 
| 78060 |  20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20    20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20  | ...collect........(list......... | 
| 78080 |  28 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f 6e    20 28 6c 69 73 74 20 6b 65 79 29 29 0a 20 20 20  | (key-description.(list.key)).... | 
| 780a0 |  20 20 20 20 20 28 63 6f 6e 63 61 74 20 6e 61 6d    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....(concat.name............... | 
| 780c0 |  20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20    22 20 27 64 69 73 70 6c 61 79 20 27 28 73 70 61  | ..(propertize.".".'display.'(spa | 
| 780e0 |  63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 32 30 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ce.:align-to.20))............... | 
| 78100 |  20 20 28 61 6e 64 20 64 65 73 63 72 69 70 74 69    6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(and.description.............. | 
| 78120 |  20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74    69 7a 65 20 28 63 6f 6e 63 61 74 0a 20 20 20 20  | ........(propertize.(concat..... | 
| 78140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28  | .............................."( | 
| 78160 |  22 20 28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69    62 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20  | ".(gptel--describe-directive.... | 
| 78180 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 781a0 |  20 20 20 20 64 65 73 63 72 69 70 74 69 6f 6e 20    28 2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68  | ....description.(-.(window-width | 
| 781c0 |  29 20 33 30 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).30)).......................... | 
| 781e0 |  20 20 20 20 20 20 20 20 20 22 29 22 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .........")")................... | 
| 78200 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27    66 61 63 65 20 27 73 68 61 64 6f 77 29 29 29 0a  | ...............'face.'shadow))). | 
| 78220 |  20 20 20 20 20 20 20 20 60 28 6c 61 6d 62 64 61    20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65  | ........`(lambda.().(interactive | 
| 78240 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63  | )............(gptel--set-with-sc | 
| 78260 |  6f 70 65 20 27 67 70 74 65 6c 2d 2d 70 72 65 73    65 74 20 27 2c 6e 61 6d 65 2d 73 79 6d 0a 20 20  | ope.'gptel--preset.',name-sym... | 
| 78280 |  20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d    2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61  | ..........gptel--set-buffer-loca | 
| 782a0 |  6c 6c 79 29 0a 20 20 20 20 20 20 20 20 20 20 20    28 67 70 74 65 6c 2d 2d 61 70 70 6c 79 2d 70 72  | lly)............(gptel--apply-pr | 
| 782c0 |  65 73 65 74 0a 20 20 20 20 20 20 20 20 20 20 20    20 27 2c 28 63 6f 6e 73 20 6e 61 6d 65 2d 73 79  | eset.............',(cons.name-sy | 
| 782e0 |  6d 20 70 72 65 73 65 74 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73  | m.preset).............(lambda.(s | 
| 78300 |  79 6d 20 76 61 6c 29 20 28 67 70 74 65 6c 2d 2d    73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20  | ym.val).(gptel--set-with-scope.. | 
| 78320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79  | ..............................sy | 
| 78340 |  6d 20 76 61 6c 20 67 70 74 65 6c 2d 2d 73 65 74    2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29  | m.val.gptel--set-buffer-locally) | 
| 78360 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d    65 73 73 61 67 65 20 22 41 70 70 6c 69 65 64 20  | ))............(message."Applied. | 
| 78380 |  67 70 74 65 6c 20 70 72 65 73 65 74 20 25 73 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72  | gptel.preset.%s".............(pr | 
| 783a0 |  6f 70 65 72 74 69 7a 65 20 2c 6e 61 6d 65 20 27    66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d  | opertize.,name.'face.'transient- | 
| 783c0 |  76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 28 77 68 65 6e 20 74 72 61 6e 73 69 65  | value))............(when.transie | 
| 783e0 |  6e 74 2d 2d 73 74 61 63 6b 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69  | nt--stack.............(run-at-ti | 
| 78400 |  6d 65 20 30 20 6e 69 6c 20 23 27 74 72 61 6e 73    69 65 6e 74 2d 73 65 74 75 70 29 29 29 29 0a 20  | me.0.nil.#'transient-setup)))).. | 
| 78420 |  20 20 20 20 20 20 69 6e 74 6f 20 67 65 6e 65 72    61 74 65 64 0a 20 20 20 20 20 20 20 66 69 6e 61  | ......into.generated........fina | 
| 78440 |  6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20    20 20 28 6e 63 6f 6e 63 20 28 6c 69 73 74 20 27  | lly.return........(nconc.(list.' | 
| 78460 |  28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 76 61    72 69 61 62 6c 65 2d 73 63 6f 70 65 0a 20 20 20  | (gptel--infix-variable-scope.... | 
| 78480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 66 6f 72 6d 61 74 20 22 25 64 20 25  | ...................:format."%d.% | 
| 784a0 |  6b 20 25 76 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73  | k.%v".......................:des | 
| 784c0 |  63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | cription.......................( | 
| 784e0 |  6c 61 6d 62 64 61 20 28 29 20 28 66 6f 72 6d 61    74 20 22 25 73 20 20 20 20 20 20 20 20 25 73 22  | lambda.().(format."%s........%s" | 
| 78500 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | ..............................(p | 
| 78520 |  72 6f 70 65 72 74 69 7a 65 20 22 41 70 70 6c 79    20 70 72 65 73 65 74 22 20 27 66 61 63 65 20 27  | ropertize."Apply.preset".'face.' | 
| 78540 |  74 72 61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e    67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | transient-heading).............. | 
| 78560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 72 6f 70 65 72 74 69 7a 65 20 22 53 63 6f  | ................(propertize."Sco | 
| 78580 |  70 65 22 20 27 66 61 63 65 20 27 74 72 61 6e 73    69 65 6e 74 2d 61 63 74 69 76 65 2d 70 72 65 66  | pe".'face.'transient-active-pref | 
| 785a0 |  69 78 29 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 67 65 6e 65 72 61 74 65 64 29  | ix)))))...............generated) | 
| 785c0 |  29 29 29 5d 29 0a 0a 3b 3b 20 2a 2a 20 50 72 65    66 69 78 20 66 6f 72 20 73 65 6c 65 63 74 69 6e  | )))])..;;.**.Prefix.for.selectin | 
| 785e0 |  67 20 74 6f 6f 6c 73 0a 0a 3b 3b 20 67 70 74 65    6c 2d 74 6f 6f 6c 73 20 6f 66 66 65 72 73 20 61  | g.tools..;;.gptel-tools.offers.a | 
| 78600 |  20 74 77 6f 2d 6c 65 76 65 6c 20 6d 65 6e 75 20    66 6f 72 20 73 65 6c 65 63 74 69 6e 67 20 74 6f  | .two-level.menu.for.selecting.to | 
| 78620 |  6f 6c 73 2c 20 69 74 73 20 64 65 73 69 67 6e 20    69 73 20 61 0a 3b 3b 20 6c 69 74 74 6c 65 20 63  | ols,.its.design.is.a.;;.little.c | 
| 78640 |  6f 6e 76 6f 6c 75 74 65 64 20 73 6f 20 68 65 72    65 27 73 20 61 6e 20 65 78 70 6c 61 6e 61 74 69  | onvoluted.so.here's.an.explanati | 
| 78660 |  6f 6e 3a 0a 3b 3b 0a 3b 3b 20 4e 6f 72 6d 61 6c    6c 79 20 61 20 74 72 61 6e 73 69 65 6e 74 20 70  | on:.;;.;;.Normally.a.transient.p | 
| 78680 |  72 65 66 69 78 20 65 78 70 6f 72 74 73 20 69 74    73 20 76 61 6c 75 65 20 76 69 61 20 74 72 61 6e  | refix.exports.its.value.via.tran | 
| 786a0 |  73 69 65 6e 74 2d 61 72 67 73 2c 20 74 6f 20 62    65 0a 3b 3b 20 63 6f 6e 73 75 6d 65 64 20 62 79  | sient-args,.to.be.;;.consumed.by | 
| 786c0 |  20 73 75 66 66 69 78 65 73 2c 20 77 68 65 72 65    20 74 68 65 73 65 20 61 72 67 73 20 61 72 65 20  | .suffixes,.where.these.args.are. | 
| 786e0 |  64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68    65 20 73 74 61 74 65 20 6f 66 20 74 68 65 0a 3b  | determined.by.the.state.of.the.; | 
| 78700 |  3b 20 6d 65 6e 75 20 61 74 20 74 68 65 20 74 69    6d 65 20 6f 66 20 65 78 70 6f 72 74 2e 20 20 54  | ;.menu.at.the.time.of.export...T | 
| 78720 |  68 65 20 67 70 74 65 6c 2d 74 6f 6f 6c 73 20 6d    65 6e 75 20 69 73 20 64 79 6e 61 6d 69 63 20 61  | he.gptel-tools.menu.is.dynamic.a | 
| 78740 |  6e 64 20 6e 65 65 64 73 20 74 6f 0a 3b 3b 20 73    74 6f 72 65 20 74 6f 6f 6c 20 73 65 6c 65 63 74  | nd.needs.to.;;.store.tool.select | 
| 78760 |  69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 6e 6f    74 20 62 65 20 76 69 73 69 62 6c 65 20 69 6e 20  | ions.that.may.not.be.visible.in. | 
| 78780 |  74 68 65 20 6d 65 6e 79 20 61 6e 79 20 6d 6f 72    65 2c 20 73 6f 20 77 65 0a 3b 3b 20 63 61 6e 6e  | the.meny.any.more,.so.we.;;.cann | 
| 787a0 |  6f 74 20 75 73 65 20 74 68 65 20 74 72 61 6e 73    69 65 6e 74 2d 61 72 67 73 2e 0a 3b 3b 0a 3b 3b  | ot.use.the.transient-args..;;.;; | 
| 787c0 |  20 57 65 20 63 61 6e 20 6e 6f 74 20 28 73 68 6f    75 6c 64 20 6e 6f 74 3f 29 20 63 6f 6e 74 72 6f  | .We.can.not.(should.not?).contro | 
| 787e0 |  6c 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74    68 65 20 70 72 65 66 69 78 20 64 69 72 65 63 74  | l.the.value.of.the.prefix.direct | 
| 78800 |  6c 79 2c 20 73 6f 20 77 65 0a 3b 3b 20 69 6e 73    74 65 61 64 20 75 73 65 20 74 68 65 20 73 63 6f  | ly,.so.we.;;.instead.use.the.sco | 
| 78820 |  70 65 20 28 61 20 73 65 63 6f 6e 64 61 72 79 20    76 61 6c 75 65 29 20 6f 66 20 74 68 65 20 70 72  | pe.(a.secondary.value).of.the.pr | 
| 78840 |  65 66 69 78 20 74 6f 20 6d 61 69 6e 74 61 69 6e    20 74 68 65 0a 3b 3b 20 68 69 73 74 6f 72 79 20  | efix.to.maintain.the.;;.history. | 
| 78860 |  6f 66 20 73 65 6c 65 63 74 69 6f 6e 73 2e 20 20    57 68 65 6e 20 72 75 6e 6e 69 6e 67 20 61 20 73  | of.selections...When.running.a.s | 
| 78880 |  75 66 66 69 78 2c 20 77 65 20 67 61 74 68 65 72    20 74 6f 6f 6c 20 73 65 6c 65 63 74 69 6f 6e 73  | uffix,.we.gather.tool.selections | 
| 788a0 |  20 66 72 6f 6d 0a 3b 3b 20 74 68 65 20 73 63 6f    70 65 2e 20 20 54 68 65 20 73 63 6f 70 65 20 69  | .from.;;.the.scope...The.scope.i | 
| 788c0 |  73 20 61 6c 73 6f 20 75 73 65 64 20 61 73 20 61    20 6d 65 73 73 61 67 65 20 63 68 61 6e 6e 65 6c  | s.also.used.as.a.message.channel | 
| 788e0 |  20 66 6f 72 20 63 6f 6e 6e 65 63 74 69 6e 67 20    74 68 65 0a 3b 3b 20 63 61 74 65 67 6f 72 79 20  | .for.connecting.the.;;.category. | 
| 78900 |  6d 65 6e 75 20 61 6e 64 20 74 68 65 20 74 6f 6f    6c 20 6c 69 73 74 20 6d 65 6e 75 20 66 6f 72 20  | menu.and.the.tool.list.menu.for. | 
| 78920 |  74 68 61 74 20 63 61 74 65 67 6f 72 79 2e 0a 0a    3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28  | that.category...;;;###autoload.( | 
| 78940 |  61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d    74 6f 6f 6c 73 20 22 67 70 74 65 6c 2d 74 72 61  | autoload.'gptel-tools."gptel-tra | 
| 78960 |  6e 73 69 65 6e 74 22 20 6e 69 6c 20 74 29 0a 28    74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65  | nsient".nil.t).(transient-define | 
| 78980 |  2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 74 6f    6f 6c 73 20 28 29 0a 20 20 22 53 65 6c 65 63 74  | -prefix.gptel-tools.()..."Select | 
| 789a0 |  20 74 6f 6f 6c 73 20 74 6f 20 69 6e 63 6c 75 64    65 20 77 69 74 68 20 67 70 74 65 6c 20 72 65 71  | .tools.to.include.with.gptel.req | 
| 789c0 |  75 65 73 74 73 2e 0a 0a 54 6f 6f 6c 73 20 61 72    65 20 6f 72 67 61 6e 69 7a 65 64 20 69 6e 74 6f  | uests...Tools.are.organized.into | 
| 789e0 |  20 63 61 74 65 67 6f 72 69 65 73 2e 20 20 53 65    6c 65 63 74 69 6e 67 20 74 68 65 20 63 61 74 65  | .categories...Selecting.the.cate | 
| 78a00 |  67 6f 72 79 0a 74 6f 67 67 6c 65 73 20 61 6c 6c    20 74 68 65 20 74 6f 6f 6c 73 20 77 69 74 68 20  | gory.toggles.all.the.tools.with. | 
| 78a20 |  74 68 61 74 20 63 61 74 65 67 6f 72 79 2e 0a 0a    54 6f 20 61 64 64 20 74 6f 6f 6c 73 20 74 6f 20  | that.category...To.add.tools.to. | 
| 78a40 |  74 68 69 73 20 6c 69 73 74 2c 20 75 73 65 20 60    67 70 74 65 6c 2d 6d 61 6b 65 2d 74 6f 6f 6c 27  | this.list,.use.`gptel-make-tool' | 
| 78a60 |  2c 20 77 68 69 63 68 20 73 65 65 2e 0a 0a 55 73    69 6e 67 20 74 68 65 20 73 63 6f 70 65 20 6f 70  | ,.which.see...Using.the.scope.op | 
| 78a80 |  74 69 6f 6e 2c 20 79 6f 75 20 63 61 6e 20 73 65    74 20 74 6f 6f 6c 73 20 74 6f 20 75 73 65 20 77  | tion,.you.can.set.tools.to.use.w | 
| 78aa0 |  69 74 68 20 67 70 74 65 6c 0a 72 65 71 75 65 73    74 73 20 67 6c 6f 62 61 6c 6c 79 2c 20 69 6e 20  | ith.gptel.requests.globally,.in. | 
| 78ac0 |  74 68 69 73 20 62 75 66 66 65 72 20 6f 72 20 66    6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75  | this.buffer.or.for.the.next.requ | 
| 78ae0 |  65 73 74 0a 6f 6e 6c 79 20 28 5c 22 6f 6e 65 73    68 6f 74 5c 22 29 2e 22 0a 20 20 3a 72 65 66 72  | est.only.(\"oneshot\")."...:refr | 
| 78b00 |  65 73 68 2d 73 75 66 66 69 78 65 73 20 74 0a 20    20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22  | esh-suffixes.t...[:description." | 
| 78b20 |  50 72 6f 76 69 64 65 20 74 68 65 20 4c 4c 4d 20    77 69 74 68 20 74 6f 6f 6c 73 20 74 6f 20 72 75  | Provide.the.LLM.with.tools.to.ru | 
| 78b40 |  6e 20 74 61 73 6b 73 20 66 6f 72 20 79 6f 75 22    0a 20 20 20 5b 22 22 0a 20 20 20 20 28 67 70 74  | n.tasks.for.you"....["".....(gpt | 
| 78b60 |  65 6c 2d 2d 69 6e 66 69 78 2d 76 61 72 69 61 62    6c 65 2d 73 63 6f 70 65 29 0a 20 20 20 20 28 67  | el--infix-variable-scope).....(g | 
| 78b80 |  70 74 65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d    74 6f 6f 6c 73 29 0a 20 20 20 20 28 67 70 74 65  | ptel--infix-use-tools).....(gpte | 
| 78ba0 |  6c 2d 2d 69 6e 66 69 78 2d 63 6f 6e 66 69 72 6d    2d 74 6f 6f 6c 2d 63 61 6c 6c 73 29 0a 20 20 20  | l--infix-confirm-tool-calls).... | 
| 78bc0 |  20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 69    6e 63 6c 75 64 65 2d 74 6f 6f 6c 2d 72 65 73 75  | .(gptel--infix-include-tool-resu | 
| 78be0 |  6c 74 73 29 5d 0a 20 20 20 5b 22 22 0a 20 20 20    20 28 22 52 45 54 22 20 22 43 6f 6e 66 69 72 6d  | lts)]....["".....("RET"."Confirm | 
| 78c00 |  20 73 65 6c 65 63 74 69 6f 6e 22 0a 20 20 20 20    20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 73 29  | .selection"......(lambda.(tools) | 
| 78c20 |  0a 20 20 20 20 20 20 20 3b 3b 20 57 65 20 64 6f    6e 27 74 20 63 61 72 65 20 61 62 6f 75 74 20 74  | ........;;.We.don't.care.about.t | 
| 78c40 |  68 65 20 74 72 61 6e 73 69 65 6e 74 20 61 72 67    73 20 6f 66 20 74 68 69 73 20 70 72 65 66 69 78  | he.transient.args.of.this.prefix | 
| 78c60 |  20 61 74 20 61 6c 6c 2c 20 73 69 6e 63 65 0a 20    20 20 20 20 20 20 3b 3b 20 74 68 65 20 73 74 61  | .at.all,.since........;;.the.sta | 
| 78c80 |  74 65 20 69 73 20 6d 61 6e 61 67 65 64 20 65 6e    74 69 72 65 6c 79 20 74 68 72 6f 75 67 68 20 69  | te.is.managed.entirely.through.i | 
| 78ca0 |  74 73 20 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f    70 65 3a 0a 20 20 20 20 20 20 20 28 69 6e 74 65  | ts.transient-scope:........(inte | 
| 78cc0 |  72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 70    6c 69 73 74 2d 67 65 74 20 28 74 72 61 6e 73 69  | ractive.(list.(plist-get.(transi | 
| 78ce0 |  65 6e 74 2d 73 63 6f 70 65 20 27 67 70 74 65 6c    2d 74 6f 6f 6c 73 29 20 3a 74 6f 6f 6c 73 29 29  | ent-scope.'gptel-tools).:tools)) | 
| 78d00 |  29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a  | )........(gptel--set-with-scope. | 
| 78d20 |  20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 74    6f 6f 6c 73 0a 20 20 20 20 20 20 20 20 28 6d 61  | ........'gptel-tools.........(ma | 
| 78d40 |  70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 63 61    74 65 67 6f 72 79 2d 61 6e 64 2d 6e 61 6d 65 29  | pcar.(lambda.(category-and-name) | 
| 78d60 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65  | ...................(map-nested-e | 
| 78d80 |  6c 74 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d    74 6f 6f 6c 73 20 63 61 74 65 67 6f 72 79 2d 61  | lt.gptel--known-tools.category-a | 
| 78da0 |  6e 64 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 64 65  | nd-name)).................(cl-de | 
| 78dc0 |  6c 65 74 65 2d 69 66 2d 6e 6f 74 20 23 27 63 6f    6e 73 70 20 74 6f 6f 6c 73 29 29 0a 20 20 20 20  | lete-if-not.#'consp.tools))..... | 
| 78de0 |  20 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62    75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 0a  | ....gptel--set-buffer-locally)). | 
| 78e00 |  20 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20    74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 65  | .....:transient.transient--do-re | 
| 78e20 |  74 75 72 6e 29 0a 20 20 20 20 28 22 71 22 20 22    43 61 6e 63 65 6c 22 20 74 72 61 6e 73 69 65 6e  | turn).....("q"."Cancel".transien | 
| 78e40 |  74 2d 71 75 69 74 2d 6f 6e 65 29 5d 5d 0a 20 20    5b 5b 3a 63 6c 61 73 73 20 74 72 61 6e 73 69 65  | t-quit-one)]]...[[:class.transie | 
| 78e60 |  6e 74 2d 63 6f 6c 75 6d 6e 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 44 69 73 70 6c 61 79 20 6b  | nt-column.............;Display.k | 
| 78e80 |  6e 6f 77 6e 20 63 61 74 65 67 6f 72 69 65 73 0a    20 20 20 20 3a 73 65 74 75 70 2d 63 68 69 6c 64  | nown.categories.....:setup-child | 
| 78ea0 |  72 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 20    28 5f 29 0a 20 20 20 20 20 20 28 74 72 61 6e 73  | ren.....(lambda.(_).......(trans | 
| 78ec0 |  69 65 6e 74 2d 70 61 72 73 65 2d 73 75 66 66 69    78 65 73 0a 20 20 20 20 20 20 20 27 67 70 74 65  | ient-parse-suffixes........'gpte | 
| 78ee0 |  6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 28    63 6c 2d 6c 6f 6f 70 20 20 20 20 20 20 20 20 20  | l-tools........(cl-loop......... | 
| 78f00 |  20 3b 6c 6f 6f 70 20 74 68 72 6f 75 67 68 20 67    70 74 65 6c 2d 2d 6b 6e 6f 77 6e 20 74 6f 6f 6c  | .;loop.through.gptel--known.tool | 
| 78f20 |  73 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 63 61    74 65 67 6f 72 69 65 73 0a 20 20 20 20 20 20 20  | s.and.collect.categories........ | 
| 78f40 |  20 66 6f 72 20 28 63 61 74 65 67 6f 72 79 20 2e    20 74 6f 6f 6c 73 2d 61 6c 69 73 74 29 20 69 6e  | .for.(category...tools-alist).in | 
| 78f60 |  20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f    6f 6c 73 0a 20 20 20 20 20 20 20 20 77 69 74 68  | .gptel--known-tools.........with | 
| 78f80 |  20 75 6e 75 73 65 64 2d 6b 65 79 73 20 3d 20 28    6e 63 6f 6e 63 20 28 64 65 6c 65 74 65 20 3f 71  | .unused-keys.=.(nconc.(delete.?q | 
| 78fa0 |  20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63    65 20 3f 61 20 3f 7a 29 29 0a 20 20 20 20 20 20  | .(number-sequence.?a.?z))....... | 
| 78fc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6d  | ............................(num | 
| 78fe0 |  62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f 30 20    3f 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ber-sequence.?0.?9)............. | 
| 79000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6e 75 6d 62 65 72 2d 73 65  | ......................(number-se | 
| 79020 |  71 75 65 6e 63 65 20 3f 41 20 3f 5a 29 29 0a 20    20 20 20 20 20 20 20 66 6f 72 20 63 61 74 65 67  | quence.?A.?Z)).........for.categ | 
| 79040 |  6f 72 79 2d 6b 65 79 20 3d 20 28 73 65 71 2d 66    69 6e 64 20 28 6c 61 6d 62 64 61 20 28 6b 29 20  | ory-key.=.(seq-find.(lambda.(k). | 
| 79060 |  28 6d 65 6d 62 65 72 20 6b 20 75 6e 75 73 65 64    2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 20  | (member.k.unused-keys))......... | 
| 79080 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74  | .............................(st | 
| 790a0 |  72 69 6e 67 2d 72 65 6d 6f 76 65 2d 70 72 65 66    69 78 20 22 6d 63 70 2d 22 20 63 61 74 65 67 6f  | ring-remove-prefix."mcp-".catego | 
| 790c0 |  72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ry)............................. | 
| 790e0 |  20 20 20 20 20 20 20 20 20 28 73 65 71 2d 66 69    72 73 74 20 75 6e 75 73 65 64 2d 6b 65 79 73 29  | .........(seq-first.unused-keys) | 
| 79100 |  29 0a 20 20 20 20 20 20 20 20 64 6f 20 28 73 65    74 71 20 75 6e 75 73 65 64 2d 6b 65 79 73 20 28  | ).........do.(setq.unused-keys.( | 
| 79120 |  64 65 6c 65 74 65 20 63 61 74 65 67 6f 72 79 2d    6b 65 79 20 75 6e 75 73 65 64 2d 6b 65 79 73 29  | delete.category-key.unused-keys) | 
| 79140 |  29 0a 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63    74 20 28 6c 69 73 74 20 28 6b 65 79 2d 64 65 73  | ).........collect.(list.(key-des | 
| 79160 |  63 72 69 70 74 69 6f 6e 20 28 6c 69 73 74 20 63    61 74 65 67 6f 72 79 2d 6b 65 79 29 29 0a 20 20  | cription.(list.category-key))... | 
| 79180 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f  | ....................(concat.(pro | 
| 791a0 |  70 65 72 74 69 7a 65 20 63 61 74 65 67 6f 72 79    20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e  | pertize.category.'face.'transien | 
| 791c0 |  74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-heading)...................... | 
| 791e0 |  20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73    74 72 69 6e 67 20 28 6d 61 78 20 28 2d 20 31 34  | .........(make-string.(max.(-.14 | 
| 79200 |  20 28 6c 65 6e 67 74 68 20 63 61 74 65 67 6f 72    79 29 29 20 30 29 20 3f 20 29 29 0a 20 20 20 20  | .(length.category)).0).?.))..... | 
| 79220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 63 68 61 72 2d 74 6f 2d 73 74 72 69 6e  | ..................(char-to-strin | 
| 79240 |  67 20 63 61 74 65 67 6f 72 79 2d 6b 65 79 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | g.category-key)................. | 
| 79260 |  20 20 20 20 20 20 3a 66 6f 72 6d 61 74 20 22 20    25 6b 20 25 64 20 25 76 22 0a 20 20 20 20 20 20  | ......:format.".%k.%d.%v"....... | 
| 79280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73  | ................:class.'gptel--s | 
| 792a0 |  77 69 74 63 68 2d 63 61 74 65 67 6f 72 79 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | witch-category.................. | 
| 792c0 |  20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 63    61 74 65 67 6f 72 79 29 0a 20 20 20 20 20 20 20  | .....:category.category)........ | 
| 792e0 |  20 69 6e 74 6f 20 63 61 74 65 67 6f 72 69 65 73    0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79  | .into.categories.........finally | 
| 79300 |  20 64 6f 20 28 70 6c 69 73 74 2d 70 75 74 20 28    74 72 61 6e 73 69 65 6e 74 2d 73 63 6f 70 65 29  | .do.(plist-put.(transient-scope) | 
| 79320 |  20 3a 6b 65 79 73 20 75 6e 75 73 65 64 2d 6b 65    79 73 29 0a 20 20 20 20 20 20 20 20 66 69 6e 61  | .:keys.unused-keys).........fina | 
| 79340 |  6c 6c 79 20 72 65 74 75 72 6e 20 63 61 74 65 67    6f 72 69 65 73 29 29 29 5d 0a 20 20 20 5b 3a 63  | lly.return.categories)))]....[:c | 
| 79360 |  6c 61 73 73 20 74 72 61 6e 73 69 65 6e 74 2d 63    6f 6c 75 6d 6e 20 20 20 20 20 20 20 20 20 20 20  | lass.transient-column........... | 
| 79380 |  3b 44 69 73 70 6c 61 79 20 6b 6e 6f 77 6e 20 74    6f 6f 6c 73 20 66 6f 72 20 73 65 6c 65 63 74 65  | ;Display.known.tools.for.selecte | 
| 793a0 |  64 20 63 61 74 65 67 6f 72 79 0a 20 20 20 20 3a    73 65 74 75 70 2d 63 68 69 6c 64 72 65 6e 0a 20  | d.category.....:setup-children.. | 
| 793c0 |  20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20    20 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 2d  | ...(lambda.(_).......(transient- | 
| 793e0 |  70 61 72 73 65 2d 73 75 66 66 69 78 65 73 0a 20    20 20 20 20 20 20 27 67 70 74 65 6c 2d 74 6f 6f  | parse-suffixes........'gptel-too | 
| 79400 |  6c 73 0a 20 20 20 20 20 20 20 28 77 68 65 6e 2d    6c 65 74 2a 20 28 28 63 61 74 65 67 6f 72 79 20  | ls........(when-let*.((category. | 
| 79420 |  28 70 6c 69 73 74 2d 67 65 74 20 28 74 72 61 6e    73 69 65 6e 74 2d 73 63 6f 70 65 29 20 3a 63 61  | (plist-get.(transient-scope).:ca | 
| 79440 |  74 65 67 6f 72 79 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6f  | tegory))....................(too | 
| 79460 |  6c 2d 6b 65 79 73 20 28 70 6c 69 73 74 2d 67 65    74 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63 6f  | l-keys.(plist-get.(transient-sco | 
| 79480 |  70 65 29 20 3a 6b 65 79 73 29 29 29 0a 20 20 20    20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 20  | pe).:keys)))..........(cl-loop.. | 
| 794a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3b 66 6f 72 20 65 61 63 68 20 63 61 74 65 67  | .................;for.each.categ | 
| 794c0 |  6f 72 79 2c 20 63 6f 6c 6c 65 63 74 20 74 6f 6f    6c 73 20 61 73 20 69 6e 66 69 78 65 73 0a 20 20  | ory,.collect.tools.as.infixes... | 
| 794e0 |  20 20 20 20 20 20 20 20 77 69 74 68 20 74 6f 6f    6c 73 2d 61 6c 69 73 74 20 3d 20 28 63 64 72 20  | ........with.tools-alist.=.(cdr. | 
| 79500 |  28 61 73 73 6f 63 20 63 61 74 65 67 6f 72 79 20    67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 74 6f 6f  | (assoc.category.gptel--known-too | 
| 79520 |  6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 66    6f 72 20 28 6e 61 6d 65 20 2e 20 74 6f 6f 6c 29  | ls))...........for.(name...tool) | 
| 79540 |  20 69 6e 20 74 6f 6f 6c 73 2d 61 6c 69 73 74 0a    20 20 20 20 20 20 20 20 20 20 66 6f 72 20 74 6f  | .in.tools-alist...........for.to | 
| 79560 |  6f 6c 2d 6b 65 79 20 3d 20 28 73 65 71 2d 66 69    6e 64 20 28 6c 61 6d 62 64 61 20 28 6b 29 20 28  | ol-key.=.(seq-find.(lambda.(k).( | 
| 79580 |  6d 65 6d 62 65 72 20 6b 20 74 6f 6f 6c 2d 6b 65    79 73 29 29 20 6e 61 6d 65 20 28 73 65 71 2d 66  | member.k.tool-keys)).name.(seq-f | 
| 795a0 |  69 72 73 74 20 74 6f 6f 6c 2d 6b 65 79 73 29 29    0a 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 73  | irst.tool-keys))...........do.(s | 
| 795c0 |  65 74 71 20 74 6f 6f 6c 2d 6b 65 79 73 20 28 64    65 6c 65 74 65 20 74 6f 6f 6c 2d 6b 65 79 20 74  | etq.tool-keys.(delete.tool-key.t | 
| 795e0 |  6f 6f 6c 2d 6b 65 79 73 29 29 0a 20 20 20 20 20    20 20 20 20 20 63 6f 6c 6c 65 63 74 20 20 20 20  | ool-keys))...........collect.... | 
| 79600 |  20 20 20 20 20 20 3b 45 61 63 68 20 6c 69 73 74    20 69 73 20 61 20 74 72 61 6e 73 69 65 6e 74 20  | ......;Each.list.is.a.transient. | 
| 79620 |  69 6e 66 69 78 20 6f 66 20 74 79 70 65 20 67 70    74 65 6c 2d 2d 73 77 69 74 63 68 0a 20 20 20 20  | infix.of.type.gptel--switch..... | 
| 79640 |  20 20 20 20 20 20 28 6c 69 73 74 20 28 6b 65 79    2d 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 69  | ......(list.(key-description.(li | 
| 79660 |  73 74 20 74 6f 6f 6c 2d 6b 65 79 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | st.tool-key)).................(c | 
| 79680 |  6f 6e 63 61 74 20 28 6d 61 6b 65 2d 73 74 72 69    6e 67 20 28 6d 61 78 20 28 2d 20 32 30 20 28 6c  | oncat.(make-string.(max.(-.20.(l | 
| 796a0 |  65 6e 67 74 68 20 6e 61 6d 65 29 29 20 30 29 20    3f 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ength.name)).0).?.)............. | 
| 796c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f    70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20  | ............(propertize......... | 
| 796e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 63 61 74 20 22 28 22 20 28 67 70  | .................(concat."(".(gp | 
| 79700 |  74 65 6c 2d 2d 64 65 73 63 72 69 62 65 2d 64 69    72 65 63 74 69 76 65 0a 20 20 20 20 20 20 20 20  | tel--describe-directive......... | 
| 79720 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67  | ..............................(g | 
| 79740 |  70 74 65 6c 2d 74 6f 6f 6c 2d 64 65 73 63 72 69    70 74 69 6f 6e 20 74 6f 6f 6c 29 20 28 2d 20 28  | ptel-tool-description.tool).(-.( | 
| 79760 |  77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 34 30    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | window-width).40)).............. | 
| 79780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 22 29 22 29 0a 20 20 20 20 20 20 20  | ....................")")........ | 
| 797a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 27 66 61 63 65 20 27 73 68 61 64 6f 77 29  | ..................'face.'shadow) | 
| 797c0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 74 6f 6f 6c 2d 6e 61  | ).................(gptel-tool-na | 
| 797e0 |  6d 65 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 66 6f 72 6d 61 74  | me.tool).................:format | 
| 79800 |  20 22 20 25 6b 20 25 76 20 25 64 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e  | .".%k.%v.%d".................:in | 
| 79820 |  69 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c    2d 2d 74 6f 6f 6c 73 2d 69 6e 69 74 2d 76 61 6c  | it-value.#'gptel--tools-init-val | 
| 79840 |  75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c  | ue.................:class.'gptel | 
| 79860 |  2d 2d 73 77 69 74 63 68 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f  | --switch.................:catego | 
| 79880 |  72 79 20 63 61 74 65 67 6f 72 79 29 0a 20 20 20    20 20 20 20 20 20 20 69 6e 74 6f 20 69 6e 66 69  | ry.category)...........into.infi | 
| 798a0 |  78 65 73 2d 66 6f 72 2d 63 61 74 65 67 6f 72 79    0a 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c  | xes-for-category...........final | 
| 798c0 |  6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 73 20 28 6c 69 73 74 20  | ly.return...........(cons.(list. | 
| 798e0 |  3a 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d  | :info.......................(lam | 
| 79900 |  62 64 61 20 28 29 20 28 63 6f 6e 63 61 74 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | bda.().(concat.................. | 
| 79920 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f    70 65 72 74 69 7a 65 20 28 70 6c 69 73 74 2d 67  | ............(propertize.(plist-g | 
| 79940 |  65 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 63    6f 70 65 29 20 3a 6b 65 79 29 0a 20 20 20 20 20  | et.(transient-scope).:key)...... | 
| 79960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 79980 |  20 20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73    69 65 6e 74 2d 6b 65 79 29 0a 20 20 20 20 20 20  | ....'face.'transient-key)....... | 
| 799a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69  | .......................(properti | 
| 799c0 |  7a 65 20 22 20 74 6f 67 67 6c 65 20 61 6c 6c 22    20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e  | ze.".toggle.all".'face.'transien | 
| 799e0 |  74 2d 68 65 61 64 69 6e 67 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-heading))).................... | 
| 79a00 |  20 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 64 22    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...:format.".%d")............... | 
| 79a20 |  20 20 69 6e 66 69 78 65 73 2d 66 6f 72 2d 63 61    74 65 67 6f 72 79 29 29 29 29 29 5d 5d 0a 20 20  | ..infixes-for-category)))))]]... | 
| 79a40 |  28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20    28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70  | (interactive)...(transient-setup | 
| 79a60 |  0a 20 20 20 27 67 70 74 65 6c 2d 74 6f 6f 6c 73    20 6e 69 6c 20 6e 69 6c 0a 20 20 20 3a 73 63 6f  | ....'gptel-tools.nil.nil....:sco | 
| 79a80 |  70 65 20 28 6c 69 73 74 20 3a 74 6f 6f 6c 73 20    28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20  | pe.(list.:tools.(mapcar.(lambda. | 
| 79aa0 |  28 74 6f 6f 6c 29 20 28 6c 69 73 74 20 28 67 70    74 65 6c 2d 74 6f 6f 6c 2d 63 61 74 65 67 6f 72  | (tool).(list.(gptel-tool-categor | 
| 79ac0 |  79 20 74 6f 6f 6c 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | y.tool)......................... | 
| 79ae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 74 6f  | .......................(gptel-to | 
| 79b00 |  6f 6c 2d 6e 61 6d 65 20 74 6f 6f 6c 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ol-name.tool)))................. | 
| 79b20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67    70 74 65 6c 2d 74 6f 6f 6c 73 29 29 29 29 0a 0a  | ...............gptel-tools)))).. | 
| 79b40 |  0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74    20 49 6e 66 69 78 65 73 0a 0a 3b 3b 20 2a 2a 20  | ..;;.*.Transient.Infixes..;;.**. | 
| 79b60 |  49 6e 66 69 78 65 73 20 66 6f 72 20 63 6f 6e 74    65 78 74 20 61 67 67 72 65 67 61 74 69 6f 6e 0a  | Infixes.for.context.aggregation. | 
| 79b80 |  0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69    6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d  | .(transient-define-infix.gptel-- | 
| 79ba0 |  69 6e 66 69 78 2d 75 73 65 2d 63 6f 6e 74 65 78    74 20 28 29 0a 20 20 22 44 65 73 63 72 69 62 65  | infix-use-context.()..."Describe | 
| 79bc0 |  20 74 61 72 67 65 74 20 64 65 73 74 69 6e 61 74    69 6f 6e 20 66 6f 72 20 63 6f 6e 74 65 78 74 20  | .target.destination.for.context. | 
| 79be0 |  69 6e 6a 65 63 74 69 6f 6e 2e 0a 0a 67 70 74 65    6c 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 77  | injection...gptel.will.include.w | 
| 79c00 |  69 74 68 20 74 68 65 20 4c 4c 4d 20 72 65 71 75    65 73 74 20 61 6e 79 20 61 64 64 69 74 69 6f 6e  | ith.the.LLM.request.any.addition | 
| 79c20 |  61 6c 20 63 6f 6e 74 65 78 74 0a 61 64 64 65 64    20 77 69 74 68 20 60 67 70 74 65 6c 2d 61 64 64  | al.context.added.with.`gptel-add | 
| 79c40 |  27 2e 20 20 54 68 69 73 20 63 6f 6e 74 65 78 74    20 63 61 6e 20 62 65 20 69 67 6e 6f 72 65 64 2c  | '...This.context.can.be.ignored, | 
| 79c60 |  20 69 6e 63 6c 75 64 65 64 0a 77 69 74 68 20 74    68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67  | .included.with.the.system.messag | 
| 79c80 |  65 20 6f 72 20 69 6e 63 6c 75 64 65 64 20 77 69    74 68 20 74 68 65 20 75 73 65 72 20 70 72 6f 6d  | e.or.included.with.the.user.prom | 
| 79ca0 |  70 74 2e 0a 0a 57 68 65 72 65 20 69 6e 20 74 68    65 20 72 65 71 75 65 73 74 20 74 68 69 73 20 63  | pt...Where.in.the.request.this.c | 
| 79cc0 |  6f 6e 74 65 78 74 20 69 73 20 69 6e 63 6c 75 64    65 64 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68  | ontext.is.included.depends.on.th | 
| 79ce0 |  65 0a 76 61 6c 75 65 20 6f 66 20 60 67 70 74 65    6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 27 2c 20  | e.value.of.`gptel-use-context',. | 
| 79d00 |  73 65 74 20 66 72 6f 6d 20 68 65 72 65 2e 22 0a    20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22  | set.from.here."...:description." | 
| 79d20 |  49 6e 63 6c 75 64 65 20 63 6f 6e 74 65 78 74 22    0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c  | Include.context"...:class.'gptel | 
| 79d40 |  2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20    20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65  | -lisp-variable...:variable.'gpte | 
| 79d60 |  6c 2d 75 73 65 2d 63 6f 6e 74 65 78 74 0a 20 20    3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20  | l-use-context...:format.".%k.%d. | 
| 79d80 |  25 76 22 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65    20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69  | %v"...:set-value.#'gptel--set-wi | 
| 79da0 |  74 68 2d 73 63 6f 70 65 0a 20 20 3a 64 69 73 70    6c 61 79 2d 6e 69 6c 20 22 4e 6f 22 0a 20 20 3a  | th-scope...:display-nil."No"...: | 
| 79dc0 |  64 69 73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e    69 6c 20 20 20 20 2e 20 22 4e 6f 22 29 0a 20 20  | display-map.'((nil......"No")... | 
| 79de0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    73 79 73 74 65 6d 20 2e 20 22 77 69 74 68 20 73  | ...............(system..."with.s | 
| 79e00 |  79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ystem.message")................. | 
| 79e20 |  20 28 75 73 65 72 20 20 20 2e 20 22 77 69 74 68    20 75 73 65 72 20 70 72 6f 6d 70 74 22 29 29 0a  | .(user....."with.user.prompt")). | 
| 79e40 |  20 20 3a 6b 65 79 20 22 2d 69 22 0a 20 20 3a 72    65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70  | ..:key."-i"...:reader.(lambda.(p | 
| 79e60 |  72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a  | rompt.&rest._).............(let* | 
| 79e80 |  20 28 28 63 68 6f 69 63 65 73 20 27 28 28 22 4e    6f 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .((choices.'(("No".............. | 
| 79ea0 |  20 20 20 20 2e 20 6e 69 6c 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......nil)...................... | 
| 79ec0 |  20 20 20 20 20 20 20 20 20 28 22 77 69 74 68 20    73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 20  | .........("with.system.message". | 
| 79ee0 |  2e 20 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..system)....................... | 
| 79f00 |  20 20 20 20 20 20 20 20 28 22 77 69 74 68 20 75    73 65 72 20 70 72 6f 6d 70 74 22 20 20 20 20 2e  | ........("with.user.prompt"..... | 
| 79f20 |  20 75 73 65 72 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 73  | .user)))....................(des | 
| 79f40 |  74 69 6e 61 74 69 6f 6e 20 28 63 6f 6d 70 6c 65    74 69 6e 67 2d 72 65 61 64 20 70 72 6f 6d 70 74  | tination.(completing-read.prompt | 
| 79f60 |  20 63 68 6f 69 63 65 73 20 6e 69 6c 20 74 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .choices.nil.t)))............... | 
| 79f80 |  28 63 64 72 20 28 61 73 73 6f 63 20 64 65 73 74    69 6e 61 74 69 6f 6e 20 63 68 6f 69 63 65 73 29  | (cdr.(assoc.destination.choices) | 
| 79fa0 |  29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69    78 65 73 20 66 6f 72 20 6d 6f 64 65 6c 20 70 61  | ))))..;;.**.Infixes.for.model.pa | 
| 79fc0 |  72 61 6d 65 74 65 72 73 0a 0a 28 74 72 61 6e 73    69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e 66 69  | rameters..(transient-define-infi | 
| 79fe0 |  78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 76    61 72 69 61 62 6c 65 2d 73 63 6f 70 65 20 28 29  | x.gptel--infix-variable-scope.() | 
| 7a000 |  0a 20 20 22 53 65 74 20 67 70 74 65 6c 27 73 20    6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73  | ..."Set.gptel's.model.parameters | 
| 7a020 |  20 61 6e 64 20 73 79 73 74 65 6d 20 6d 65 73 73    61 67 65 20 69 6e 20 74 68 69 73 20 62 75 66 66  | .and.system.message.in.this.buff | 
| 7a040 |  65 72 20 6f 72 20 67 6c 6f 62 61 6c 6c 79 2e 22    0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 73 63  | er.or.globally."...:argument."sc | 
| 7a060 |  6f 70 65 22 0a 20 20 3a 76 61 72 69 61 62 6c 65    20 27 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66  | ope"...:variable.'gptel--set-buf | 
| 7a080 |  66 65 72 2d 6c 6f 63 61 6c 6c 79 0a 20 20 3a 63    6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 63 6f  | fer-locally...:class.'gptel--sco | 
| 7a0a0 |  70 65 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 20    25 6b 20 25 64 20 25 76 22 0a 20 20 3a 6b 65 79  | pe...:format."..%k.%d.%v"...:key | 
| 7a0c0 |  20 22 3d 22 0a 20 20 3a 64 65 73 63 72 69 70 74    69 6f 6e 20 28 70 72 6f 70 65 72 74 69 7a 65 20  | ."="...:description.(propertize. | 
| 7a0e0 |  22 53 63 6f 70 65 22 20 27 66 61 63 65 20 27 74    72 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76  | "Scope".'face.'transient-inactiv | 
| 7a100 |  65 2d 61 72 67 75 6d 65 6e 74 29 29 0a 0a 28 74    72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d  | e-argument))..(transient-define- | 
| 7a120 |  69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66    69 78 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d  | infix.gptel--infix-num-messages- | 
| 7a140 |  74 6f 2d 73 65 6e 64 20 28 29 0a 20 20 22 4e 75    6d 62 65 72 20 6f 66 20 72 65 63 65 6e 74 20 6d  | to-send.()..."Number.of.recent.m | 
| 7a160 |  65 73 73 61 67 65 73 20 74 6f 20 73 65 6e 64 20    77 69 74 68 20 65 61 63 68 20 65 78 63 68 61 6e  | essages.to.send.with.each.exchan | 
| 7a180 |  67 65 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c    20 74 68 65 20 66 75 6c 6c 20 63 6f 6e 76 65 72  | ge...By.default,.the.full.conver | 
| 7a1a0 |  73 61 74 69 6f 6e 20 68 69 73 74 6f 72 79 20 69    73 20 73 65 6e 74 20 77 69 74 68 20 65 76 65 72  | sation.history.is.sent.with.ever | 
| 7a1c0 |  79 20 6e 65 77 0a 70 72 6f 6d 70 74 2e 20 54 68    69 73 20 72 65 74 61 69 6e 73 20 74 68 65 20 66  | y.new.prompt..This.retains.the.f | 
| 7a1e0 |  75 6c 6c 20 63 6f 6e 74 65 78 74 20 6f 66 20 74    68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2c  | ull.context.of.the.conversation, | 
| 7a200 |  20 62 75 74 0a 63 61 6e 20 62 65 20 65 78 70 65    6e 73 69 76 65 20 69 6e 20 74 6f 6b 65 6e 20 73  | .but.can.be.expensive.in.token.s | 
| 7a220 |  69 7a 65 2e 20 53 65 74 20 68 6f 77 20 6d 61 6e    79 20 72 65 63 65 6e 74 20 6d 65 73 73 61 67 65  | ize..Set.how.many.recent.message | 
| 7a240 |  73 20 74 6f 0a 69 6e 63 6c 75 64 65 2e 22 0a 20    20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 70  | s.to.include."...:description."p | 
| 7a260 |  72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65    73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74  | revious.responses"...:class.'gpt | 
| 7a280 |  65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65    0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70  | el-lisp-variable...:variable.'gp | 
| 7a2a0 |  74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65    73 2d 74 6f 2d 73 65 6e 64 0a 20 20 3a 73 65 74  | tel--num-messages-to-send...:set | 
| 7a2c0 |  2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d    73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20  | -value.#'gptel--set-with-scope.. | 
| 7a2e0 |  20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 27 61    6c 6c 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25  | .:display-nil.'all...:format.".% | 
| 7a300 |  6b 20 25 76 20 25 64 22 0a 20 20 3a 6b 65 79 20    22 2d 6e 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22  | k.%v.%d"...:key."-n"...:prompt." | 
| 7a320 |  4e 75 6d 62 65 72 20 6f 66 20 70 61 73 74 20 6d    65 73 73 61 67 65 73 20 74 6f 20 69 6e 63 6c 75  | Number.of.past.messages.to.inclu | 
| 7a340 |  64 65 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 28    6c 65 61 76 65 20 65 6d 70 74 79 20 66 6f 72 20  | de.for.context.(leave.empty.for. | 
| 7a360 |  61 6c 6c 29 3a 20 22 0a 20 20 3a 72 65 61 64 65    72 20 27 67 70 74 65 6c 2d 2d 74 72 61 6e 73 69  | all):."...:reader.'gptel--transi | 
| 7a380 |  65 6e 74 2d 72 65 61 64 2d 6e 75 6d 62 65 72 29    0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66  | ent-read-number)..(transient-def | 
| 7a3a0 |  69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d    2d 69 6e 66 69 78 2d 6d 61 78 2d 74 6f 6b 65 6e  | ine-infix.gptel--infix-max-token | 
| 7a3c0 |  73 20 28 29 0a 20 20 22 4d 61 78 20 74 6f 6b 65    6e 73 20 70 65 72 20 72 65 73 70 6f 6e 73 65 2e  | s.()..."Max.tokens.per.response. | 
| 7a3e0 |  0a 0a 54 68 69 73 20 69 73 20 72 6f 75 67 68 6c    79 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  | ..This.is.roughly.the.number.of. | 
| 7a400 |  77 6f 72 64 73 20 69 6e 20 74 68 65 20 72 65 73    70 6f 6e 73 65 2e 20 31 30 30 2d 33 30 30 20 69  | words.in.the.response..100-300.i | 
| 7a420 |  73 20 61 0a 72 65 61 73 6f 6e 61 62 6c 65 20 72    61 6e 67 65 20 66 6f 72 20 73 68 6f 72 74 20 61  | s.a.reasonable.range.for.short.a | 
| 7a440 |  6e 73 77 65 72 73 2c 20 34 30 30 20 6f 72 20 6d    6f 72 65 20 66 6f 72 20 6c 6f 6e 67 65 72 0a 72  | nswers,.400.or.more.for.longer.r | 
| 7a460 |  65 73 70 6f 6e 73 65 73 2e 22 0a 20 20 3a 64 65    73 63 72 69 70 74 69 6f 6e 20 22 52 65 73 70 6f  | esponses."...:description."Respo | 
| 7a480 |  6e 73 65 20 6c 65 6e 67 74 68 20 28 74 6f 6b 65    6e 73 29 22 0a 20 20 3a 63 6c 61 73 73 20 27 67  | nse.length.(tokens)"...:class.'g | 
| 7a4a0 |  70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62    6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27  | ptel-lisp-variable...:variable.' | 
| 7a4c0 |  67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73    0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27  | gptel-max-tokens...:set-value.#' | 
| 7a4e0 |  67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d    73 63 6f 70 65 0a 20 20 3a 64 69 73 70 6c 61 79  | gptel--set-with-scope...:display | 
| 7a500 |  2d 6e 69 6c 20 27 61 75 74 6f 0a 20 20 3a 6b 65    79 20 22 2d 63 22 0a 20 20 3a 70 72 6f 6d 70 74  | -nil.'auto...:key."-c"...:prompt | 
| 7a520 |  20 22 52 65 73 70 6f 6e 73 65 20 6c 65 6e 67 74    68 20 69 6e 20 74 6f 6b 65 6e 73 20 28 6c 65 61  | ."Response.length.in.tokens.(lea | 
| 7a540 |  76 65 20 65 6d 70 74 79 3a 20 64 65 66 61 75 6c    74 2c 20 38 30 2d 32 30 30 3a 20 73 68 6f 72 74  | ve.empty:.default,.80-200:.short | 
| 7a560 |  2c 20 32 30 30 2d 35 30 30 3a 20 6c 6f 6e 67 29    3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 27 67  | ,.200-500:.long):."...:reader.'g | 
| 7a580 |  70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74 2d    72 65 61 64 2d 6e 75 6d 62 65 72 29 0a 0a 28 74  | ptel--transient-read-number)..(t | 
| 7a5a0 |  72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d    69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66  | ransient-define-infix.gptel--inf | 
| 7a5c0 |  69 78 2d 70 72 6f 76 69 64 65 72 20 28 29 0a 20    20 22 41 49 20 50 72 6f 76 69 64 65 72 20 66 6f  | ix-provider.()..."AI.Provider.fo | 
| 7a5e0 |  72 20 43 68 61 74 2e 22 0a 20 20 3a 64 65 73 63    72 69 70 74 69 6f 6e 20 22 4d 6f 64 65 6c 22 0a  | r.Chat."...:description."Model". | 
| 7a600 |  20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d    70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c  | ..:class.'gptel-provider-variabl | 
| 7a620 |  65 0a 20 20 3a 70 72 6f 6d 70 74 20 22 4d 6f 64    65 6c 3a 20 22 0a 20 20 3a 76 61 72 69 61 62 6c  | e...:prompt."Model:."...:variabl | 
| 7a640 |  65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20    20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70  | e.'gptel-model...:set-value.#'gp | 
| 7a660 |  74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63    6f 70 65 0a 20 20 3a 62 61 63 6b 65 6e 64 20 27  | tel--set-with-scope...:backend.' | 
| 7a680 |  67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20    3a 6b 65 79 20 22 2d 6d 22 0a 20 20 3a 72 65 61  | gptel-backend...:key."-m"...:rea | 
| 7a6a0 |  64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f    6d 70 74 20 26 72 65 73 74 20 5f 29 0a 20 20 20  | der.(lambda.(prompt.&rest._).... | 
| 7a6c0 |  20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f    70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66  | .........(cl-loop..............f | 
| 7a6e0 |  6f 72 20 28 6e 61 6d 65 20 2e 20 62 61 63 6b 65    6e 64 29 20 69 6e 20 67 70 74 65 6c 2d 2d 6b 6e  | or.(name...backend).in.gptel--kn | 
| 7a700 |  6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 6e 63 6f 6e 63 20  | own-backends..............nconc. | 
| 7a720 |  28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 6d 6f 64    65 6c 20 69 6e 20 28 67 70 74 65 6c 2d 62 61 63  | (cl-loop.for.model.in.(gptel-bac | 
| 7a740 |  6b 65 6e 64 2d 6d 6f 64 65 6c 73 20 62 61 63 6b    65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  | kend-models.backend)............ | 
| 7a760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 28  | .................collect.(list.( | 
| 7a780 |  63 6f 6e 63 61 74 20 6e 61 6d 65 20 22 3a 22 20    28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61  | concat.name.":".(gptel--model-na | 
| 7a7a0 |  6d 65 20 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | me.model))...................... | 
| 7a7c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 62 61 63 6b 65 6e 64 20 6d 6f 64  | .....................backend.mod | 
| 7a7e0 |  65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 69 6e 74 6f 20 6d 6f 64 65 6c 73 2d 61 6c  | el))..............into.models-al | 
| 7a800 |  69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 77 69 74 68 20 63 6f 6d 70 6c 65 74 69 6f 6e  | ist..............with.completion | 
| 7a820 |  2d 65 78 74 72 61 2d 70 72 6f 70 65 72 74 69 65    73 20 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20  | -extra-properties.=............. | 
| 7a840 |  20 60 28 3a 61 6e 6e 6f 74 61 74 69 6f 6e 2d 66    75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20  | .`(:annotation-function......... | 
| 7a860 |  20 20 20 20 20 20 20 2c 28 6c 61 6d 62 64 61 20    28 63 6f 6d 70 29 0a 09 09 20 20 28 6c 65 74 2a  | .......,(lambda.(comp).....(let* | 
| 7a880 |  20 28 28 6d 6f 64 65 6c 20 28 6e 74 68 20 32 20    28 61 73 73 6f 63 20 63 6f 6d 70 20 6d 6f 64 65  | .((model.(nth.2.(assoc.comp.mode | 
| 7a8a0 |  6c 73 2d 61 6c 69 73 74 29 29 29 0a 09 09 09 20    28 64 65 73 63 20 28 67 65 74 20 6d 6f 64 65 6c  | ls-alist))).....(desc.(get.model | 
| 7a8c0 |  20 3a 64 65 73 63 72 69 70 74 69 6f 6e 29 29 0a    09 09 09 20 28 63 61 70 73 20 28 67 65 74 20 6d  | .:description)).....(caps.(get.m | 
| 7a8e0 |  6f 64 65 6c 20 3a 63 61 70 61 62 69 6c 69 74 69    65 73 29 29 0a 09 09 09 20 28 63 6f 6e 74 65 78  | odel.:capabilities)).....(contex | 
| 7a900 |  74 20 28 67 65 74 20 6d 6f 64 65 6c 20 3a 63 6f    6e 74 65 78 74 2d 77 69 6e 64 6f 77 29 29 0a 09  | t.(get.model.:context-window)).. | 
| 7a920 |  09 09 20 28 69 6e 70 75 74 2d 63 6f 73 74 20 28    67 65 74 20 6d 6f 64 65 6c 20 3a 69 6e 70 75 74  | ...(input-cost.(get.model.:input | 
| 7a940 |  2d 63 6f 73 74 29 29 0a 09 09 09 20 28 6f 75 74    70 75 74 2d 63 6f 73 74 20 28 67 65 74 20 6d 6f  | -cost)).....(output-cost.(get.mo | 
| 7a960 |  64 65 6c 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74    29 29 0a 09 09 09 20 28 63 75 74 6f 66 66 20 28  | del.:output-cost)).....(cutoff.( | 
| 7a980 |  67 65 74 20 6d 6f 64 65 6c 20 3a 63 75 74 6f 66    66 2d 64 61 74 65 29 29 29 0a 09 09 20 20 20 20  | get.model.:cutoff-date)))....... | 
| 7a9a0 |  28 77 68 65 6e 20 28 6f 72 20 64 65 73 63 20 63    61 70 73 20 63 6f 6e 74 65 78 74 20 69 6e 70 75  | (when.(or.desc.caps.context.inpu | 
| 7a9c0 |  74 2d 63 6f 73 74 20 6f 75 74 70 75 74 2d 63 6f    73 74 20 63 75 74 6f 66 66 29 0a 09 09 20 20 20  | t-cost.output-cost.cutoff)...... | 
| 7a9e0 |  20 20 20 28 63 6f 6e 63 61 74 0a 09 09 20 20 20    20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20  | ...(concat..........(propertize. | 
| 7aa00 |  22 20 22 20 27 64 69 73 70 6c 61 79 20 60 28 73    70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 34  | ".".'display.`(space.:align-to.4 | 
| 7aa20 |  30 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68    65 6e 20 64 65 73 63 20 28 74 72 75 6e 63 61 74  | 0))..........(when.desc.(truncat | 
| 7aa40 |  65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74    68 20 64 65 73 63 20 37 30 20 6e 69 6c 20 3f 20  | e-string-to-width.desc.70.nil.?. | 
| 7aa60 |  74 20 74 29 29 0a 09 09 20 20 20 20 20 20 20 22    20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22  | t.t))..........".".(propertize." | 
| 7aa80 |  20 22 20 27 64 69 73 70 6c 61 79 20 60 28 73 70    61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 31  | .".'display.`(space.:align-to.11 | 
| 7aaa0 |  32 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68    65 6e 20 63 61 70 73 20 28 74 72 75 6e 63 61 74  | 2))..........(when.caps.(truncat | 
| 7aac0 |  65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74    68 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69  | e-string-to-width.(prin1-to-stri | 
| 7aae0 |  6e 67 20 63 61 70 73 29 20 32 31 20 6e 69 6c 20    3f 20 74 20 74 29 29 0a 09 09 20 20 20 20 20 20  | ng.caps).21.nil.?.t.t))......... | 
| 7ab00 |  20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65    20 22 20 22 20 27 64 69 73 70 6c 61 79 20 60 28  | .".".(propertize.".".'display.`( | 
| 7ab20 |  73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20    31 33 34 29 29 0a 09 09 20 20 20 20 20 20 20 28  | space.:align-to.134))..........( | 
| 7ab40 |  77 68 65 6e 20 63 6f 6e 74 65 78 74 20 28 66 6f    72 6d 61 74 20 22 25 35 64 6b 22 20 63 6f 6e 74  | when.context.(format."%5dk".cont | 
| 7ab60 |  65 78 74 29 29 0a 09 09 20 20 20 20 20 20 20 22    20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22  | ext))..........".".(propertize." | 
| 7ab80 |  20 22 20 27 64 69 73 70 6c 61 79 20 60 28 73 70    61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 31 34  | .".'display.`(space.:align-to.14 | 
| 7aba0 |  32 29 29 0a 09 09 20 20 20 20 20 20 20 28 77 68    65 6e 20 69 6e 70 75 74 2d 63 6f 73 74 20 28 66  | 2))..........(when.input-cost.(f | 
| 7abc0 |  6f 72 6d 61 74 20 22 24 25 35 2e 32 66 20 69 6e    22 20 69 6e 70 75 74 2d 63 6f 73 74 29 29 0a 09  | ormat."$%5.2f.in".input-cost)).. | 
| 7abe0 |  09 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64    20 69 6e 70 75 74 2d 63 6f 73 74 20 6f 75 74 70  | ........(if.(and.input-cost.outp | 
| 7ac00 |  75 74 2d 63 6f 73 74 29 20 22 2c 22 20 22 20 22    29 0a 09 09 20 20 20 20 20 20 20 22 20 22 20 28  | ut-cost).",".".")..........".".( | 
| 7ac20 |  70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27    64 69 73 70 6c 61 79 20 60 28 73 70 61 63 65 20  | propertize.".".'display.`(space. | 
| 7ac40 |  3a 61 6c 69 67 6e 2d 74 6f 20 31 35 33 29 29 0a    09 09 20 20 20 20 20 20 20 28 77 68 65 6e 20 6f  | :align-to.153))..........(when.o | 
| 7ac60 |  75 74 70 75 74 2d 63 6f 73 74 20 28 66 6f 72 6d    61 74 20 22 24 25 36 2e 32 66 20 6f 75 74 22 20  | utput-cost.(format."$%6.2f.out". | 
| 7ac80 |  6f 75 74 70 75 74 2d 63 6f 73 74 29 29 0a 09 09    20 20 20 20 20 20 20 22 20 22 20 28 70 72 6f 70  | output-cost))..........".".(prop | 
| 7aca0 |  65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70    6c 61 79 20 60 28 73 70 61 63 65 20 3a 61 6c 69  | ertize.".".'display.`(space.:ali | 
| 7acc0 |  67 6e 2d 74 6f 20 31 36 36 29 29 0a 09 09 20 20    20 20 20 20 20 63 75 74 6f 66 66 29 29 29 29 29  | gn-to.166))..........cutoff))))) | 
| 7ace0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69    6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20  | ..............finally.return.... | 
| 7ad00 |  20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28    61 73 73 6f 63 20 28 63 6f 6d 70 6c 65 74 69 6e  | ..........(cdr.(assoc.(completin | 
| 7ad20 |  67 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 6d 6f    64 65 6c 73 2d 61 6c 69 73 74 20 6e 69 6c 20 74  | g-read.prompt.models-alist.nil.t | 
| 7ad40 |  20 6e 69 6c 20 6e 69 6c 0a 09 09 09 09 09 20 20    28 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 62  | .nil.nil........(concat.(gptel-b | 
| 7ad60 |  61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65    6c 2d 62 61 63 6b 65 6e 64 29 20 22 3a 22 0a 09  | ackend-name.gptel-backend).":".. | 
| 7ad80 |  09 09 09 09 09 20 20 28 67 70 74 65 6c 2d 2d 6d    6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d  | .......(gptel--model-name.gptel- | 
| 7ada0 |  6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | model)))........................ | 
| 7adc0 |  20 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 29 29    29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d  | ..models-alist)))))..(transient- | 
| 7ade0 |  64 65 66 69 6e 65 2d 69 6e 66 69 78 20 67 70 74    65 6c 2d 2d 69 6e 66 69 78 2d 74 65 6d 70 65 72  | define-infix.gptel--infix-temper | 
| 7ae00 |  61 74 75 72 65 20 28 29 0a 20 20 22 54 65 6d 70    65 72 61 74 75 72 65 20 6f 66 20 72 65 71 75 65  | ature.()..."Temperature.of.reque | 
| 7ae20 |  73 74 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74    69 6f 6e 20 22 54 65 6d 70 65 72 61 74 75 72 65  | st."...:description."Temperature | 
| 7ae40 |  20 28 30 20 2d 20 32 2e 30 29 22 0a 20 20 3a 64    69 73 70 6c 61 79 2d 6e 69 6c 20 22 64 65 66 61  | .(0.-.2.0)"...:display-nil."defa | 
| 7ae60 |  75 6c 74 22 0a 20 20 3a 63 6c 61 73 73 20 27 67    70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62  | ult"...:class.'gptel-lisp-variab | 
| 7ae80 |  6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27    67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72  | le...:variable.'gptel-temperatur | 
| 7aea0 |  65 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23    27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68  | e...:set-value.#'gptel--set-with | 
| 7aec0 |  2d 73 63 6f 70 65 0a 20 20 3a 6b 65 79 20 22 2d    54 22 0a 20 20 3a 70 72 6f 6d 70 74 20 22 54 65  | -scope...:key."-T"...:prompt."Te | 
| 7aee0 |  6d 70 65 72 61 74 75 72 65 20 63 6f 6e 74 72 6f    6c 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20  | mperature.controls.the.response. | 
| 7af00 |  72 61 6e 64 6f 6d 6e 65 73 73 20 28 30 2e 30 2d    32 2e 30 2c 20 6c 65 61 76 65 20 65 6d 70 74 79  | randomness.(0.0-2.0,.leave.empty | 
| 7af20 |  20 66 6f 72 20 41 50 49 20 64 65 66 61 75 6c 74    29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 27  | .for.API.default):."...:reader.' | 
| 7af40 |  67 70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74    2d 72 65 61 64 2d 6e 75 6d 62 65 72 29 0a 0a 28  | gptel--transient-read-number)..( | 
| 7af60 |  74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65    2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e  | transient-define-infix.gptel--in | 
| 7af80 |  66 69 78 2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e    73 65 20 28 29 0a 20 20 22 44 69 73 74 69 6e 67  | fix-track-response.()..."Disting | 
| 7afa0 |  75 69 73 68 20 62 65 74 77 65 65 6e 20 75 73 65    72 20 6d 65 73 73 61 67 65 73 20 61 6e 64 20 4c  | uish.between.user.messages.and.L | 
| 7afc0 |  4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 57    68 65 6e 20 63 72 65 61 74 69 6e 67 20 61 20 70  | LM.responses...When.creating.a.p | 
| 7afe0 |  72 6f 6d 70 74 20 74 6f 20 73 65 6e 64 20 74 6f    20 74 68 65 20 4c 4c 4d 2c 20 67 70 74 65 6c 20  | rompt.to.send.to.the.LLM,.gptel. | 
| 7b000 |  64 69 73 74 69 6e 67 75 69 73 68 65 73 0a 62 65    74 77 65 65 6e 20 74 65 78 74 20 65 6e 74 65 72  | distinguishes.between.text.enter | 
| 7b020 |  65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 61    6e 64 20 70 61 73 74 20 4c 4c 4d 20 72 65 73 70  | ed.by.the.user.and.past.LLM.resp | 
| 7b040 |  6f 6e 73 65 73 2e 20 20 54 68 69 73 20 69 73 0a    72 65 71 75 69 72 65 64 20 66 6f 72 20 6d 75 6c  | onses...This.is.required.for.mul | 
| 7b060 |  74 69 2d 74 75 72 6e 20 63 6f 6e 76 65 72 73 61    74 69 6f 6e 73 2c 20 61 6e 64 20 69 73 20 61 6c  | ti-turn.conversations,.and.is.al | 
| 7b080 |  77 61 79 73 20 74 68 65 20 63 61 73 65 20 69 6e    0a 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20  | ways.the.case.in.dedicated.chat. | 
| 7b0a0 |  62 75 66 66 65 72 73 20 28 69 6e 20 60 67 70 74    65 6c 2d 6d 6f 64 65 27 29 2e 0a 0a 49 6e 20 72  | buffers.(in.`gptel-mode')...In.r | 
| 7b0c0 |  65 67 75 6c 61 72 20 62 75 66 66 65 72 73 2c 20    79 6f 75 20 63 61 6e 20 74 6f 67 67 6c 65 20 74  | egular.buffers,.you.can.toggle.t | 
| 7b0e0 |  68 69 73 20 62 65 68 61 76 69 6f 72 20 68 65 72    65 20 6f 72 20 62 79 0a 63 75 73 74 6f 6d 69 7a  | his.behavior.here.or.by.customiz | 
| 7b100 |  69 6e 67 20 60 67 70 74 65 6c 2d 74 72 61 63 6b    2d 72 65 73 70 6f 6e 73 65 27 2e 20 20 57 68 65  | ing.`gptel-track-response'...Whe | 
| 7b120 |  6e 20 72 65 73 70 6f 6e 73 65 20 74 72 61 63 6b    69 6e 67 20 69 73 0a 74 75 72 6e 65 64 20 6f 66  | n.response.tracking.is.turned.of | 
| 7b140 |  66 2c 20 61 6c 6c 20 74 65 78 74 20 77 69 6c 6c    20 62 65 20 61 73 73 69 67 6e 65 64 20 74 68 65  | f,.all.text.will.be.assigned.the | 
| 7b160 |  20 5c 22 75 73 65 72 5c 22 20 72 6f 6c 65 20 77    68 65 6e 0a 71 75 65 72 79 69 6e 67 20 74 68 65  | .\"user\".role.when.querying.the | 
| 7b180 |  20 4c 4c 4d 2e 22 0a 20 20 3a 64 65 73 63 72 69    70 74 69 6f 6e 20 22 54 72 61 63 6b 20 4c 4c 4d  | .LLM."...:description."Track.LLM | 
| 7b1a0 |  20 72 65 73 70 6f 6e 73 65 73 22 0a 20 20 3a 63    6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 77 69  | .responses"...:class.'gptel--swi | 
| 7b1c0 |  74 63 68 65 73 0a 20 20 3a 76 61 72 69 61 62 6c    65 20 27 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72  | tches...:variable.'gptel-track-r | 
| 7b1e0 |  65 73 70 6f 6e 73 65 0a 20 20 3a 73 65 74 2d 76    61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65  | esponse...:set-value.#'gptel--se | 
| 7b200 |  74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a    64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 20  | t-with-scope...:display-if-true. | 
| 7b220 |  22 59 65 73 22 0a 20 20 3a 64 69 73 70 6c 61 79    2d 69 66 2d 66 61 6c 73 65 20 22 4e 6f 22 0a 20  | "Yes"...:display-if-false."No".. | 
| 7b240 |  20 3a 6b 65 79 20 22 2d 52 22 29 0a 0a 28 74 72    61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69  | .:key."-R")..(transient-define-i | 
| 7b260 |  6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69    78 2d 74 72 61 63 6b 2d 6d 65 64 69 61 20 28 29  | nfix.gptel--infix-track-media.() | 
| 7b280 |  0a 20 20 22 53 65 6e 64 20 6d 65 64 69 61 20 66    72 6f 6d 20 5c 22 73 74 61 6e 64 61 6c 6f 6e 65  | ..."Send.media.from.\"standalone | 
| 7b2a0 |  5c 22 20 6c 69 6e 6b 73 20 69 6e 20 74 68 65 20    70 72 6f 6d 70 74 2e 0a 0a 57 68 65 6e 20 74 68  | \".links.in.the.prompt...When.th | 
| 7b2c0 |  65 20 61 63 74 69 76 65 20 60 67 70 74 65 6c 2d    6d 6f 64 65 6c 27 20 73 75 70 70 6f 72 74 73 20  | e.active.`gptel-model'.supports. | 
| 7b2e0 |  69 74 2c 20 67 70 74 65 6c 20 63 61 6e 20 73 65    6e 64 20 69 6d 61 67 65 73 0a 6f 72 20 6f 74 68  | it,.gptel.can.send.images.or.oth | 
| 7b300 |  65 72 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c 69    6e 6b 73 20 69 6e 20 74 68 65 20 62 75 66 66 65  | er.media.from.links.in.the.buffe | 
| 7b320 |  72 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 20 4f    6e 6c 79 0a 5c 22 73 74 61 6e 64 61 6c 6f 6e 65  | r.to.the.LLM...Only.\"standalone | 
| 7b340 |  5c 22 20 6c 69 6e 6b 73 20 61 72 65 20 63 6f 6e    73 69 64 65 72 65 64 3a 20 74 68 65 73 65 20 61  | \".links.are.considered:.these.a | 
| 7b360 |  72 65 20 6c 69 6e 6b 73 20 6f 6e 20 74 68 65 69    72 20 6f 77 6e 0a 6c 69 6e 65 20 77 69 74 68 20  | re.links.on.their.own.line.with. | 
| 7b380 |  6e 6f 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 74    65 78 74 2e 0a 0a 57 68 61 74 20 6c 69 6e 6b 20  | no.surrounding.text...What.link. | 
| 7b3a0 |  74 79 70 65 73 20 61 72 65 20 73 65 6e 74 20 64    65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 6d 69  | types.are.sent.depends.on.the.mi | 
| 7b3c0 |  6d 65 2d 74 79 70 65 73 20 74 68 65 20 6d 6f 64    65 6c 0a 73 75 70 70 6f 72 74 73 2e 20 20 53 65  | me-types.the.model.supports...Se | 
| 7b3e0 |  65 20 60 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d    65 64 69 61 27 20 66 6f 72 20 6d 6f 72 65 20 69  | e.`gptel-track-media'.for.more.i | 
| 7b400 |  6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 3a    64 65 73 63 72 69 70 74 69 6f 6e 20 22 53 65 6e  | nformation."...:description."Sen | 
| 7b420 |  64 20 6d 65 64 69 61 20 66 72 6f 6d 20 6c 69 6e    6b 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70  | d.media.from.links"...:class.'gp | 
| 7b440 |  74 65 6c 2d 2d 73 77 69 74 63 68 65 73 0a 20 20    3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c  | tel--switches...:variable.'gptel | 
| 7b460 |  2d 74 72 61 63 6b 2d 6d 65 64 69 61 0a 20 20 3a    73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65  | -track-media...:set-value.#'gpte | 
| 7b480 |  6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70    65 0a 20 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d  | l--set-with-scope...:display-if- | 
| 7b4a0 |  74 72 75 65 20 22 59 65 73 22 0a 20 20 3a 64 69    73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 22  | true."Yes"...:display-if-false." | 
| 7b4c0 |  4e 6f 22 0a 20 20 3a 6b 65 79 20 22 2d 49 22 29    0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20  | No"...:key."-I")..;;.**.Infixes. | 
| 7b4e0 |  66 6f 72 20 61 64 64 69 6e 67 20 61 6e 64 20 72    65 6d 6f 76 69 6e 67 20 63 6f 6e 74 65 78 74 0a  | for.adding.and.removing.context. | 
| 7b500 |  0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69    6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74  | .(declare-function.gptel-context | 
| 7b520 |  2d 2d 61 74 2d 70 6f 69 6e 74 20 22 67 70 74 65    6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63  | --at-point."gptel-context").(dec | 
| 7b540 |  6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70    74 65 6c 2d 61 64 64 20 22 67 70 74 65 6c 2d 63  | lare-function.gptel-add."gptel-c | 
| 7b560 |  6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61 72    65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c  | ontext").(declare-function.gptel | 
| 7b580 |  2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 63 75 72    72 65 6e 74 2d 6b 69 6c 6c 20 22 67 70 74 65 6c  | -context-add-current-kill."gptel | 
| 7b5a0 |  2d 63 6f 6e 74 65 78 74 22 29 0a 0a 28 74 72 61    6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75  | -context")..(transient-define-su | 
| 7b5c0 |  66 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69    78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d 63 75  | ffix.gptel--infix-context-add-cu | 
| 7b5e0 |  72 72 65 6e 74 2d 6b 69 6c 6c 20 28 26 6f 70 74    69 6f 6e 61 6c 20 61 72 67 29 0a 20 20 22 41 64  | rrent-kill.(&optional.arg)..."Ad | 
| 7b600 |  64 20 63 75 72 72 65 6e 74 20 6b 69 6c 6c 20 74    6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65 78  | d.current.kill.to.gptel's.contex | 
| 7b620 |  74 2e 22 0a 20 20 3a 74 72 61 6e 73 69 65 6e 74    20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d  | t."...:transient.'transient--do- | 
| 7b640 |  73 74 61 79 0a 20 20 3a 6b 65 79 20 22 43 2d 79    22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20  | stay...:key."C-y"...:if.(lambda. | 
| 7b660 |  28 29 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d    63 6f 6d 6d 61 6e 64 73 29 0a 20 20 3a 64 65 73  | ().gptel-expert-commands)...:des | 
| 7b680 |  63 72 69 70 74 69 6f 6e 0a 20 20 22 59 61 6e 6b    20 74 6f 20 63 6f 6e 74 65 78 74 22 0a 20 20 28  | cription..."Yank.to.context"...( | 
| 7b6a0 |  69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29    0a 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | interactive."P")...(gptel-contex | 
| 7b6c0 |  74 2d 61 64 64 2d 63 75 72 72 65 6e 74 2d 6b 69    6c 6c 20 61 72 67 29 0a 20 20 28 74 72 61 6e 73  | t-add-current-kill.arg)...(trans | 
| 7b6e0 |  69 65 6e 74 2d 73 65 74 75 70 29 29 0a 0a 28 74    72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d  | ient-setup))..(transient-define- | 
| 7b700 |  73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e    66 69 78 2d 63 6f 6e 74 65 78 74 2d 61 64 64 2d  | suffix.gptel--infix-context-add- | 
| 7b720 |  72 65 67 69 6f 6e 20 28 29 0a 20 20 22 41 64 64    20 63 75 72 72 65 6e 74 20 72 65 67 69 6f 6e 20  | region.()..."Add.current.region. | 
| 7b740 |  74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74 65    78 74 2e 22 0a 20 20 3a 74 72 61 6e 73 69 65 6e  | to.gptel's.context."...:transien | 
| 7b760 |  74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f    2d 73 74 61 79 0a 20 20 3a 6b 65 79 20 22 2d 72  | t.'transient--do-stay...:key."-r | 
| 7b780 |  22 0a 20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20    28 29 20 28 6f 72 20 28 75 73 65 2d 72 65 67 69  | "...:if.(lambda.().(or.(use-regi | 
| 7b7a0 |  6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 61 6e 64 20 28 66 62 6f 75  | on-p).................(and.(fbou | 
| 7b7c0 |  6e 64 70 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 0a 20 20  | ndp.'gptel-context--at-point)... | 
| 7b7e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | ...................(gptel-contex | 
| 7b800 |  74 2d 2d 61 74 2d 70 6f 69 6e 74 29 29 29 29 0a    20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20  | t--at-point))))...:description.. | 
| 7b820 |  20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20    28 69 66 20 28 61 6e 64 20 28 66 62 6f 75 6e 64  | .(lambda.().....(if.(and.(fbound | 
| 7b840 |  70 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74    2d 2d 61 74 2d 70 6f 69 6e 74 29 0a 20 20 20 20  | p.'gptel-context--at-point)..... | 
| 7b860 |  20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e  | .........(gptel-context--at-poin | 
| 7b880 |  74 29 29 0a 20 20 20 20 20 20 20 20 22 52 65 6d    6f 76 65 20 63 6f 6e 74 65 78 74 20 61 74 20 70  | t))........."Remove.context.at.p | 
| 7b8a0 |  6f 69 6e 74 22 0a 20 20 20 20 20 20 22 41 64 64    20 72 65 67 69 6f 6e 20 74 6f 20 63 6f 6e 74 65  | oint"......."Add.region.to.conte | 
| 7b8c0 |  78 74 22 29 29 0a 20 20 28 69 6e 74 65 72 61 63    74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 61  | xt"))...(interactive)...(gptel-a | 
| 7b8e0 |  64 64 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74    2d 73 65 74 75 70 29 29 0a 0a 28 74 72 61 6e 73  | dd)...(transient-setup))..(trans | 
| 7b900 |  69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66    69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d  | ient-define-suffix.gptel--infix- | 
| 7b920 |  63 6f 6e 74 65 78 74 2d 61 64 64 2d 62 75 66 66    65 72 20 28 29 0a 20 20 22 41 64 64 20 61 20 62  | context-add-buffer.()..."Add.a.b | 
| 7b940 |  75 66 66 65 72 20 74 6f 20 67 70 74 65 6c 27 73    20 63 6f 6e 74 65 78 74 2e 22 0a 20 20 3a 74 72  | uffer.to.gptel's.context."...:tr | 
| 7b960 |  61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65    6e 74 2d 2d 64 6f 2d 73 74 61 79 0a 20 20 3a 6b  | ansient.'transient--do-stay...:k | 
| 7b980 |  65 79 20 22 2d 62 22 0a 20 20 3a 64 65 73 63 72    69 70 74 69 6f 6e 20 22 41 64 64 20 61 20 62 75  | ey."-b"...:description."Add.a.bu | 
| 7b9a0 |  66 66 65 72 20 74 6f 20 63 6f 6e 74 65 78 74 22    0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29  | ffer.to.context"...(interactive) | 
| 7b9c0 |  0a 20 20 28 67 70 74 65 6c 2d 61 64 64 20 27 28    34 29 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74  | ...(gptel-add.'(4))...(transient | 
| 7b9e0 |  2d 73 65 74 75 70 29 29 0a 0a 28 64 65 63 6c 61    72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65  | -setup))..(declare-function.gpte | 
| 7ba00 |  6c 2d 61 64 64 2d 66 69 6c 65 20 22 67 70 74 65    6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63  | l-add-file."gptel-context").(dec | 
| 7ba20 |  6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70    74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f  | lare-function.gptel-context-remo | 
| 7ba40 |  76 65 2d 61 6c 6c 20 22 67 70 74 65 6c 2d 63 6f    6e 74 65 78 74 22 29 0a 0a 28 74 72 61 6e 73 69  | ve-all."gptel-context")..(transi | 
| 7ba60 |  65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69    78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63  | ent-define-suffix.gptel--infix-c | 
| 7ba80 |  6f 6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 20    28 29 0a 20 20 22 41 64 64 20 61 20 66 69 6c 65  | ontext-add-file.()..."Add.a.file | 
| 7baa0 |  20 74 6f 20 67 70 74 65 6c 27 73 20 63 6f 6e 74    65 78 74 2e 22 0a 20 20 3a 74 72 61 6e 73 69 65  | .to.gptel's.context."...:transie | 
| 7bac0 |  6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64    6f 2d 73 74 61 79 0a 20 20 3a 6b 65 79 20 22 2d  | nt.'transient--do-stay...:key."- | 
| 7bae0 |  66 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f    6e 20 22 41 64 64 20 61 20 66 69 6c 65 20 74 6f  | f"...:description."Add.a.file.to | 
| 7bb00 |  20 63 6f 6e 74 65 78 74 22 0a 20 20 28 69 6e 74    65 72 61 63 74 69 76 65 29 0a 20 20 28 63 61 6c  | .context"...(interactive)...(cal | 
| 7bb20 |  6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20    23 27 67 70 74 65 6c 2d 61 64 64 2d 66 69 6c 65  | l-interactively.#'gptel-add-file | 
| 7bb40 |  29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73    65 74 75 70 29 29 0a 0a 28 74 72 61 6e 73 69 65  | )...(transient-setup))..(transie | 
| 7bb60 |  6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78    20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 63 6f  | nt-define-suffix.gptel--infix-co | 
| 7bb80 |  6e 74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c    20 28 29 0a 20 20 22 43 6c 65 61 72 20 67 70 74  | ntext-remove-all.()..."Clear.gpt | 
| 7bba0 |  65 6c 27 73 20 63 6f 6e 74 65 78 74 2e 22 0a 20    20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20  | el's.context."...:if.(lambda.(). | 
| 7bbc0 |  67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61    6c 69 73 74 29 0a 20 20 3a 74 72 61 6e 73 69 65  | gptel-context--alist)...:transie | 
| 7bbe0 |  6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64    6f 2d 73 74 61 79 0a 20 20 3a 6b 65 79 20 22 2d  | nt.'transient--do-stay...:key."- | 
| 7bc00 |  64 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f    6e 20 22 52 65 6d 6f 76 65 20 61 6c 6c 22 0a 20  | d"...:description."Remove.all".. | 
| 7bc20 |  20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20    20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d  | .(interactive)...(gptel-context- | 
| 7bc40 |  72 65 6d 6f 76 65 2d 61 6c 6c 20 74 29 0a 20 20    28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70  | remove-all.t)...(transient-setup | 
| 7bc60 |  29 29 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 20    66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 64  | ))..;;.**.Infix.for.additional.d | 
| 7bc80 |  69 72 65 63 74 69 76 65 0a 0a 28 74 72 61 6e 73    69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e 66 69  | irective..(transient-define-infi | 
| 7bca0 |  78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 61    64 64 2d 64 69 72 65 63 74 69 76 65 20 28 29 0a  | x.gptel--infix-add-directive.(). | 
| 7bcc0 |  20 20 22 41 64 64 69 74 69 6f 6e 61 6c 20 64 69    72 65 63 74 69 76 65 20 69 6e 74 65 6e 64 65 64  | .."Additional.directive.intended | 
| 7bce0 |  20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 71 75    65 72 79 20 6f 6e 6c 79 2e 0a 0a 54 68 69 73 20  | .for.the.next.query.only...This. | 
| 7bd00 |  69 73 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66    69 6e 65 20 61 20 71 75 69 63 6b 20 74 61 73 6b  | is.useful.to.define.a.quick.task | 
| 7bd20 |  20 6f 6e 20 74 6f 70 20 6f 66 20 61 20 6d 6f 72    65 20 65 78 74 65 6e 73 69 76 65 0a 6f 72 20 64  | .on.top.of.a.more.extensive.or.d | 
| 7bd40 |  65 74 61 69 6c 65 64 20 73 79 73 74 65 6d 20 6d    65 73 73 61 67 65 2e 0a 0a 46 6f 72 20 65 78 61  | etailed.system.message...For.exa | 
| 7bd60 |  6d 70 6c 65 2c 20 77 69 74 68 20 63 6f 64 65 2f    74 65 78 74 20 73 65 6c 65 63 74 65 64 3a 0a 0a  | mple,.with.code/text.selected:.. | 
| 7bd80 |  2d 20 52 65 77 72 69 74 65 20 74 68 69 73 20 66    75 6e 63 74 69 6f 6e 20 74 6f 20 64 6f 20 58 20  | -.Rewrite.this.function.to.do.X. | 
| 7bda0 |  77 68 69 6c 65 20 61 76 6f 69 64 69 6e 67 20 59    2e 0a 2d 20 43 68 61 6e 67 65 20 74 68 65 20 74  | while.avoiding.Y..-.Change.the.t | 
| 7bdc0 |  6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f    77 69 6e 67 20 70 61 72 61 67 72 61 70 68 20 74  | one.of.the.following.paragraph.t | 
| 7bde0 |  6f 20 62 65 20 6d 6f 72 65 20 64 69 72 65 63 74    2e 0a 0a 4f 72 20 69 6e 20 61 6e 20 65 78 74 65  | o.be.more.direct...Or.in.an.exte | 
| 7be00 |  6e 64 65 64 20 63 6f 6e 76 65 72 73 61 74 69 6f    6e 3a 0a 0a 2d 20 50 68 72 61 73 65 20 79 6f 75  | nded.conversation:..-.Phrase.you | 
| 7be20 |  20 6e 65 78 74 20 72 65 73 70 6f 6e 73 65 20 69    6e 20 74 65 6e 20 77 6f 72 64 73 20 6f 72 20 6c  | .next.response.in.ten.words.or.l | 
| 7be40 |  65 73 73 2e 0a 2d 20 50 72 65 74 65 6e 64 20 66    6f 72 20 6e 6f 77 20 74 68 61 74 20 79 6f 75 27  | ess..-.Pretend.for.now.that.you' | 
| 7be60 |  72 65 20 61 6e 20 61 6e 74 68 72 6f 70 6f 6c 6f    67 69 73 74 2e 22 0a 20 20 3a 63 6c 61 73 73 20  | re.an.anthropologist."...:class. | 
| 7be80 |  27 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d 6f 76    65 72 6c 61 69 64 0a 20 20 3b 3b 20 3a 76 61 72  | 'gptel-option-overlaid...;;.:var | 
| 7bea0 |  69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 69 6e    73 74 72 75 63 74 69 6f 6e 73 0a 20 20 3a 64 69  | iable.'gptel--instructions...:di | 
| 7bec0 |  73 70 6c 61 79 2d 6e 69 6c 20 27 6e 6f 6e 65 0a    20 20 3a 6f 76 65 72 6c 61 79 20 6e 69 6c 0a 20  | splay-nil.'none...:overlay.nil.. | 
| 7bee0 |  20 3a 61 72 67 75 6d 65 6e 74 20 22 3a 22 0a 20    20 3a 70 72 6f 6d 70 74 20 28 63 6f 6e 63 61 74  | .:argument.":"...:prompt.(concat | 
| 7bf00 |  20 22 41 64 64 20 69 6e 73 74 72 75 63 74 69 6f    6e 73 20 66 6f 72 20 6e 65 78 74 20 72 65 71 75  | ."Add.instructions.for.next.requ | 
| 7bf20 |  65 73 74 20 6f 6e 6c 79 20 22 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74  | est.only."...................gpt | 
| 7bf40 |  65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72    65 66 69 78 2d 68 65 6c 70 29 0a 20 20 3a 72 65  | el--read-with-prefix-help)...:re | 
| 7bf60 |  61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72    6f 6d 70 74 20 69 6e 69 74 69 61 6c 20 68 69 73  | ader.(lambda.(prompt.initial.his | 
| 7bf80 |  74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 6c 65 74 2a 20 28 28 64 69 72 65 63 74  | tory).............(let*.((direct | 
| 7bfa0 |  69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 63 61 72 2d 73 61 66  | ive.....................(car-saf | 
| 7bfc0 |  65 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d    64 69 72 65 63 74 69 76 65 20 67 70 74 65 6c 2d  | e.(gptel--parse-directive.gptel- | 
| 7bfe0 |  2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20    27 72 61 77 29 29 29 0a 20 20 20 20 20 20 20 20  | -system-message.'raw)))......... | 
| 7c000 |  20 20 20 20 20 20 20 20 20 20 20 28 63 79 63 6c    65 2d 70 72 65 66 69 78 20 28 6c 61 6d 62 64 61  | ...........(cycle-prefix.(lambda | 
| 7c020 |  20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .().(interactive)............... | 
| 7c040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 61  | .....................(gptel--rea | 
| 7c060 |  64 2d 77 69 74 68 2d 70 72 65 66 69 78 20 64 69    72 65 63 74 69 76 65 29 29 29 0a 20 20 20 20 20  | d-with-prefix.directive)))...... | 
| 7c080 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d    69 6e 69 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d  | ..............(minibuffer-local- | 
| 7c0a0 |  6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 63 6f  | map.....................(make-co | 
| 7c0c0 |  6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | mposed-keymap................... | 
| 7c0e0 |  20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 6d 61    70 20 22 54 41 42 22 20 63 79 63 6c 65 2d 70 72  | ...(define-keymap."TAB".cycle-pr | 
| 7c100 |  65 66 69 78 20 22 3c 74 61 62 3e 22 20 63 79 63    6c 65 2d 70 72 65 66 69 78 29 0a 20 20 20 20 20  | efix."<tab>".cycle-prefix)...... | 
| 7c120 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    6d 69 6e 69 62 75 66 66 65 72 2d 6c 6f 63 61 6c  | ................minibuffer-local | 
| 7c140 |  2d 6d 61 70 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 65 78 74 72 61  | -map))....................(extra | 
| 7c160 |  20 28 6d 69 6e 69 62 75 66 66 65 72 2d 77 69 74    68 2d 73 65 74 75 70 2d 68 6f 6f 6b 20 63 79 63  | .(minibuffer-with-setup-hook.cyc | 
| 7c180 |  6c 65 2d 70 72 65 66 69 78 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | le-prefix....................... | 
| 7c1a0 |  20 20 20 20 20 20 28 72 65 61 64 2d 73 74 72 69    6e 67 20 70 72 6f 6d 70 74 20 28 6f 72 20 69 6e  | ......(read-string.prompt.(or.in | 
| 7c1c0 |  69 74 69 61 6c 20 22 20 22 29 20 68 69 73 74 6f    72 79 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | itial.".").history)))).......... | 
| 7c1e0 |  20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74    72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 65 78 74  | .....(unless.(string-empty-p.ext | 
| 7c200 |  72 61 29 20 65 78 74 72 61 29 29 29 0a 20 20 3a    66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 25  | ra).extra)))...:format.".%k.%d.% | 
| 7c220 |  76 22 0a 20 20 3a 6b 65 79 20 22 64 22 0a 20 20    3a 61 72 67 75 6d 65 6e 74 20 22 3a 22 0a 20 20  | v"...:key."d"...:argument.":"... | 
| 7c240 |  3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 64    64 20 69 6e 73 74 72 75 63 74 69 6f 6e 22 0a 20  | :description."Add.instruction".. | 
| 7c260 |  20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 0a    3b 3b 20 2a 2a 20 49 6e 66 69 78 20 66 6f 72 20  | .:transient.t)..;;.**.Infix.for. | 
| 7c280 |  72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 20    63 6f 6e 74 72 6f 6c 0a 0a 28 74 72 61 6e 73 69  | reasoning.block.control..(transi | 
| 7c2a0 |  65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e 66 69 78    20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 69 6e  | ent-define-infix.gptel--infix-in | 
| 7c2c0 |  63 6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 20    28 29 0a 20 20 22 48 6f 77 20 74 6f 20 68 61 6e  | clude-reasoning.()..."How.to.han | 
| 7c2e0 |  64 6c 65 20 72 65 61 73 6f 6e 69 6e 67 2f 74 68    69 6e 6b 69 6e 67 20 72 65 73 70 6f 6e 73 65 20  | dle.reasoning/thinking.response. | 
| 7c300 |  62 6c 6f 63 6b 73 2e 0a 0a 53 6f 6d 65 20 4c 4c    4d 73 20 69 6e 63 6c 75 64 65 20 69 6e 20 74 68  | blocks...Some.LLMs.include.in.th | 
| 7c320 |  65 69 72 20 72 65 73 70 6f 6e 73 65 20 61 20 5c    22 74 68 69 6e 6b 69 6e 67 5c 22 20 73 65 63 74  | eir.response.a.\"thinking\".sect | 
| 7c340 |  69 6f 6e 2e 20 20 54 68 69 73 0a 74 65 78 74 20    69 6d 70 72 6f 76 65 73 20 74 68 65 20 71 75 61  | ion...This.text.improves.the.qua | 
| 7c360 |  6c 69 74 79 20 6f 66 20 74 68 65 20 4c 4c 4d 27    73 20 66 69 6e 61 6c 20 6f 75 74 70 75 74 2c 20  | lity.of.the.LLM's.final.output,. | 
| 7c380 |  62 75 74 20 6d 61 79 20 6e 6f 74 0a 62 65 20 69    6e 74 65 72 65 73 74 69 6e 67 20 74 6f 20 79 6f  | but.may.not.be.interesting.to.yo | 
| 7c3a0 |  75 20 62 79 20 69 74 73 65 6c 66 2e 0a 0a 59 6f    75 20 63 61 6e 20 63 6f 6e 74 72 6f 6c 20 68 6f  | u.by.itself...You.can.control.ho | 
| 7c3c0 |  77 20 67 70 74 65 6c 20 73 68 6f 75 6c 64 20 68    61 6e 64 6c 65 20 74 68 65 20 74 68 69 6e 6b 69  | w.gptel.should.handle.the.thinki | 
| 7c3e0 |  6e 67 20 62 6c 6f 63 6b 73 20 76 69 61 0a 74 68    69 73 20 6f 70 74 69 6f 6e 2c 20 6f 72 20 62 79  | ng.blocks.via.this.option,.or.by | 
| 7c400 |  20 73 65 74 74 69 6e 67 20 74 68 65 20 76 61 72    69 61 62 6c 65 20 60 67 70 74 65 6c 2d 69 6e 63  | .setting.the.variable.`gptel-inc | 
| 7c420 |  6c 75 64 65 2d 72 65 61 73 6f 6e 69 6e 67 27 0a    76 69 61 20 65 6c 69 73 70 2c 20 77 68 69 63 68  | lude-reasoning'.via.elisp,.which | 
| 7c440 |  20 73 65 65 2e 0a 0a 41 76 61 69 6c 61 62 6c 65    20 62 65 68 61 76 69 6f 72 73 20 61 72 65 0a 2d  | .see...Available.behaviors.are.- | 
| 7c460 |  20 74 6f 20 69 6e 63 6c 75 64 65 20 74 68 69 6e    6b 69 6e 67 20 62 6c 6f 63 6b 73 20 77 69 74 68  | .to.include.thinking.blocks.with | 
| 7c480 |  20 74 68 65 20 72 65 73 70 6f 6e 73 65 2c 0a 2d    20 74 6f 20 6f 6d 69 74 20 74 68 65 6d 20 65 6e  | .the.response,.-.to.omit.them.en | 
| 7c4a0 |  74 69 72 65 6c 79 2c 0a 2d 20 74 6f 20 69 6e 63    6c 75 64 65 20 74 68 65 6d 20 62 75 74 20 69 67  | tirely,.-.to.include.them.but.ig | 
| 7c4c0 |  6e 6f 72 65 20 74 68 65 6d 20 69 6e 20 63 6f 6e    73 65 71 75 65 6e 74 20 63 6f 6e 76 65 72 73 61  | nore.them.in.consequent.conversa | 
| 7c4e0 |  74 69 6f 6e 20 74 75 72 6e 73 2c 20 61 6e 64 0a    2d 20 74 6f 20 61 70 70 65 6e 64 20 74 68 65 6d  | tion.turns,.and.-.to.append.them | 
| 7c500 |  20 74 6f 20 61 20 62 75 66 66 65 72 20 6f 66 20    79 6f 75 72 20 63 68 6f 6f 73 69 6e 67 2e 22 0a  | .to.a.buffer.of.your.choosing.". | 
| 7c520 |  20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22    49 6e 63 6c 75 64 65 20 72 65 61 73 6f 6e 69 6e  | ..:description."Include.reasonin | 
| 7c540 |  67 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74    65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65  | g"...:class.'gptel-lisp-variable | 
| 7c560 |  0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70    74 65 6c 2d 69 6e 63 6c 75 64 65 2d 72 65 61 73  | ...:variable.'gptel-include-reas | 
| 7c580 |  6f 6e 69 6e 67 0a 20 20 3a 66 6f 72 6d 61 74 20    22 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a 73  | oning...:format.".%k.%d.%v"...:s | 
| 7c5a0 |  65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c    2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65  | et-value.#'gptel--set-with-scope | 
| 7c5c0 |  0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20    22 4e 6f 22 0a 20 20 3a 64 69 73 70 6c 61 79 2d  | ...:display-nil."No"...:display- | 
| 7c5e0 |  6d 61 70 20 27 28 28 6e 69 6c 20 20 20 20 2e 20    22 4e 6f 22 29 0a 20 20 20 20 20 20 20 20 20 20  | map.'((nil......"No")........... | 
| 7c600 |  20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 20 2e    20 22 61 6e 64 20 69 67 6e 6f 72 65 22 29 0a 20  | .......(ignore..."and.ignore").. | 
| 7c620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 74 20 20 20 20 20 20 2e 20 22 77 69 74 68 20  | ................(t........"with. | 
| 7c640 |  72 65 73 70 6f 6e 73 65 22 29 29 0a 20 20 3a 6b    65 79 20 22 2d 76 22 0a 20 20 3a 70 72 6f 6d 70  | response"))...:key."-v"...:promp | 
| 7c660 |  74 20 22 49 6e 63 6c 75 64 65 20 72 65 61 73 6f    6e 69 6e 67 3a 20 22 0a 20 20 3a 72 65 61 64 65  | t."Include.reasoning:."...:reade | 
| 7c680 |  72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70    74 20 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20  | r.(lambda.(prompt.&rest._)...... | 
| 7c6a0 |  20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63    68 6f 69 63 65 73 20 27 28 28 22 6e 6f 22 20 20  | .......(let*.((choices.'(("no".. | 
| 7c6c0 |  20 20 20 2e 20 6e 69 6c 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....nil)....................... | 
| 7c6e0 |  20 20 20 20 20 20 20 20 28 22 69 67 6e 6f 72 65    22 20 2e 20 69 67 6e 6f 72 65 29 0a 20 20 20 20  | ........("ignore"...ignore)..... | 
| 7c700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 22 79 65 73 22  | ..........................("yes" | 
| 7c720 |  20 20 20 20 2e 20 74 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......t)........................ | 
| 7c740 |  20 20 20 20 20 20 20 28 22 6f 74 68 65 72 20 62    75 66 66 65 72 22 20 2e 20 62 75 66 66 65 72 29  | .......("other.buffer"...buffer) | 
| 7c760 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 64 65 73 74 69 6e 61 74 69  | ))....................(destinati | 
| 7c780 |  6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69  | on.....................(completi | 
| 7c7a0 |  6e 67 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 63    68 6f 69 63 65 73 20 6e 69 6c 20 74 29 29 29 0a  | ng-read.prompt.choices.nil.t))). | 
| 7c7c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69    66 20 28 65 71 75 61 6c 20 64 65 73 74 69 6e 61  | ..............(if.(equal.destina | 
| 7c7e0 |  74 69 6f 6e 20 22 6f 74 68 65 72 20 62 75 66 66    65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20  | tion."other.buffer")............ | 
| 7c800 |  20 20 20 20 20 20 20 28 72 65 61 64 2d 62 75 66    66 65 72 20 22 41 70 70 65 6e 64 20 72 65 61 73  | .......(read-buffer."Append.reas | 
| 7c820 |  6f 6e 69 6e 67 20 74 6f 20 62 75 66 66 65 72 3a    20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | oning.to.buffer:.")............. | 
| 7c840 |  20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20    64 65 73 74 69 6e 61 74 69 6f 6e 20 63 68 6f 69  | ....(cdr.(assoc.destination.choi | 
| 7c860 |  63 65 73 29 29 29 29 29 29 0a 0a 3b 3b 20 2a 2a    20 49 6e 66 69 78 65 73 20 66 6f 72 20 74 6f 6f  | ces))))))..;;.**.Infixes.for.too | 
| 7c880 |  6c 20 75 73 65 0a 0a 28 74 72 61 6e 73 69 65 6e    74 2d 64 65 66 69 6e 65 2d 69 6e 66 69 78 20 67  | l.use..(transient-define-infix.g | 
| 7c8a0 |  70 74 65 6c 2d 2d 69 6e 66 69 78 2d 75 73 65 2d    74 6f 6f 6c 73 20 28 29 0a 20 20 22 57 68 65 74  | ptel--infix-use-tools.()..."Whet | 
| 7c8c0 |  68 65 72 20 4c 4c 4d 20 74 6f 6f 6c 20 75 73 65    20 77 69 74 68 20 67 70 74 65 6c 20 69 73 20 65  | her.LLM.tool.use.with.gptel.is.e | 
| 7c8e0 |  6e 61 62 6c 65 64 2e 0a 0a 54 68 69 73 20 69 73    20 61 20 74 68 72 65 65 2d 77 61 79 20 74 6f 67  | nabled...This.is.a.three-way.tog | 
| 7c900 |  67 6c 65 2e 20 20 41 73 73 75 6d 69 6e 67 20 6f    6e 65 20 6f 72 20 6d 6f 72 65 20 74 6f 6f 6c 73  | gle...Assuming.one.or.more.tools | 
| 7c920 |  20 74 6f 20 62 65 0a 73 65 6e 74 20 77 69 74 68    20 72 65 71 75 65 73 74 73 20 68 61 76 65 20 62  | .to.be.sent.with.requests.have.b | 
| 7c940 |  65 65 6e 20 73 65 6c 65 63 74 65 64 2c 20 74 6f    6f 6c 20 75 73 65 20 63 61 6e 20 62 65 0a 0a 2d  | een.selected,.tool.use.can.be..- | 
| 7c960 |  20 64 69 73 61 62 6c 65 64 2c 0a 2d 20 65 6e 61    62 6c 65 64 2c 20 77 68 65 72 65 20 74 68 65 20  | .disabled,.-.enabled,.where.the. | 
| 7c980 |  4c 4c 4d 20 6d 61 79 20 63 68 6f 6f 73 65 20 74    6f 20 72 65 73 70 6f 6e 64 20 77 69 74 68 20 74  | LLM.may.choose.to.respond.with.t | 
| 7c9a0 |  6f 6f 6c 20 63 61 6c 6c 73 0a 2d 20 66 6f 72 63    65 64 2c 20 77 68 65 72 65 20 74 68 65 20 4c 4c  | ool.calls.-.forced,.where.the.LL | 
| 7c9c0 |  4d 20 6d 75 73 74 20 72 65 73 70 6f 6e 64 20 77    69 74 68 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  | M.must.respond.with.one.or.more. | 
| 7c9e0 |  74 6f 6f 6c 20 63 61 6c 6c 73 2e 0a 0a 59 6f 75    20 63 61 6e 20 73 65 74 20 74 68 69 73 20 68 65  | tool.calls...You.can.set.this.he | 
| 7ca00 |  72 65 20 6f 72 20 62 79 20 63 75 73 74 6f 6d 69    7a 69 6e 67 20 60 67 70 74 65 6c 2d 75 73 65 2d  | re.or.by.customizing.`gptel-use- | 
| 7ca20 |  74 6f 6f 6c 73 27 2c 20 77 68 69 63 68 0a 73 65    65 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69  | tools',.which.see."...:descripti | 
| 7ca40 |  6f 6e 20 22 55 73 65 20 74 6f 6f 6c 73 22 0a 20    20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6c  | on."Use.tools"...:class.'gptel-l | 
| 7ca60 |  69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a    76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d  | isp-variable...:variable.'gptel- | 
| 7ca80 |  75 73 65 2d 74 6f 6f 6c 73 0a 20 20 3a 73 65 74    2d 76 61 6c 75 65 20 28 6c 61 6d 62 64 61 20 28  | use-tools...:set-value.(lambda.( | 
| 7caa0 |  73 79 6d 20 76 61 6c 75 65 20 73 63 6f 70 65 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | sym.value.scope)................ | 
| 7cac0 |  28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68    2d 73 63 6f 70 65 20 73 79 6d 20 76 61 6c 75 65  | (gptel--set-with-scope.sym.value | 
| 7cae0 |  20 73 63 6f 70 65 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 74 72 61 6e 73 69 65 6e  | .scope)................(transien | 
| 7cb00 |  74 2d 73 65 74 75 70 29 29 0a 20 20 3a 64 69 73    70 6c 61 79 2d 6e 69 6c 20 22 6f 66 66 22 0a 20  | t-setup))...:display-nil."off".. | 
| 7cb20 |  20 3a 64 69 73 70 6c 61 79 2d 6d 61 70 20 27 28    28 6e 69 6c 20 20 20 2e 20 22 6f 66 66 22 29 0a  | .:display-map.'((nil....."off"). | 
| 7cb40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 74 20 20 20 20 20 2e 20 22 6f 6e 22 29 0a  | .................(t......."on"). | 
| 7cb60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 66 6f 72 63 65 20 2e 20 22 66 6f 72 63 65  | .................(force..."force | 
| 7cb80 |  22 29 29 0a 20 20 3a 70 72 6f 6d 70 74 20 22 55    73 65 20 74 6f 6f 6c 73 3f 20 22 0a 20 20 3a 72  | "))...:prompt."Use.tools?."...:r | 
| 7cba0 |  65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70    72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29 0a 20  | eader.(lambda.(prompt.&rest._).. | 
| 7cbc0 |  20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a    20 28 28 63 68 6f 69 63 65 73 20 27 28 28 22 64  | ...........(let*.((choices.'(("d | 
| 7cbe0 |  69 73 61 62 6c 65 22 20 2e 20 6e 69 6c 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | isable"...nil).................. | 
| 7cc00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 65    6e 61 62 6c 65 22 20 20 2e 20 74 29 0a 20 20 20  | .............("enable"....t).... | 
| 7cc20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 22 66 6f 72  | ...........................("for | 
| 7cc40 |  63 65 22 20 20 20 2e 20 66 6f 72 63 65 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ce".....force)))................ | 
| 7cc60 |  20 20 20 20 28 70 72 65 66 20 28 63 6f 6d 70 6c    65 74 69 6e 67 2d 72 65 61 64 20 70 72 6f 6d 70  | ....(pref.(completing-read.promp | 
| 7cc80 |  74 20 63 68 6f 69 63 65 73 20 6e 69 6c 20 74 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.choices.nil.t))).............. | 
| 7cca0 |  20 28 63 64 72 20 28 61 73 73 6f 63 20 70 72 65    66 20 63 68 6f 69 63 65 73 29 29 29 29 0a 20 20  | .(cdr.(assoc.pref.choices))))... | 
| 7ccc0 |  3a 6b 65 79 20 22 2d 74 22 29 0a 0a 28 74 72 61    6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e  | :key."-t")..(transient-define-in | 
| 7cce0 |  66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78    2d 63 6f 6e 66 69 72 6d 2d 74 6f 6f 6c 2d 63 61  | fix.gptel--infix-confirm-tool-ca | 
| 7cd00 |  6c 6c 73 20 28 29 0a 20 20 22 57 68 65 74 68 65    72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 73 68 6f  | lls.()..."Whether.tool.calls.sho | 
| 7cd20 |  75 6c 64 20 77 61 69 74 20 66 6f 72 20 74 68 65    20 75 73 65 72 20 74 6f 20 72 75 6e 20 74 68 65  | uld.wait.for.the.user.to.run.the | 
| 7cd40 |  6d 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 74 68    72 65 65 2d 77 61 79 20 74 6f 67 67 6c 65 20 62  | m...This.is.a.three-way.toggle.b | 
| 7cd60 |  65 74 77 65 65 6e 20 74 68 65 73 65 20 62 65 68    61 76 69 6f 72 73 3a 0a 0a 2d 20 41 6c 6c 20 74  | etween.these.behaviors:..-.All.t | 
| 7cd80 |  6f 6f 6c 20 63 61 6c 6c 73 20 72 75 6e 20 77 69    74 68 6f 75 74 20 63 6f 6e 66 69 72 6d 61 74 69  | ool.calls.run.without.confirmati | 
| 7cda0 |  6f 6e 2e 0a 2d 20 41 6c 6c 20 74 6f 6f 6c 20 63    61 6c 6c 73 20 77 61 69 74 20 66 6f 72 20 63 6f  | on..-.All.tool.calls.wait.for.co | 
| 7cdc0 |  6e 66 69 72 6d 61 74 69 6f 6e 2e 0a 2d 20 44 65    63 69 64 65 64 20 70 65 72 2d 74 6f 6f 6c 2c 20  | nfirmation..-.Decided.per-tool,. | 
| 7cde0 |  61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65    20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 6f  | according.to.the.value.of.the.to | 
| 7ce00 |  6f 6c 20 73 70 65 63 27 73 0a 20 20 3a 63 6f 6e    66 69 72 6d 20 73 6c 6f 74 2e 0a 0a 54 68 69 73  | ol.spec's...:confirm.slot...This | 
| 7ce20 |  20 73 65 74 73 20 74 68 65 20 76 61 72 69 61 62    6c 65 20 60 67 70 74 65 6c 2d 63 6f 6e 66 69 72  | .sets.the.variable.`gptel-confir | 
| 7ce40 |  6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 27 2c 20 77    68 69 63 68 20 73 65 65 2e 22 0a 20 20 3a 6b 65  | m-tool-calls',.which.see."...:ke | 
| 7ce60 |  79 20 22 2d 63 22 0a 20 20 3a 64 65 73 63 72 69    70 74 69 6f 6e 20 22 43 6f 6e 66 69 72 6d 20 74  | y."-c"...:description."Confirm.t | 
| 7ce80 |  6f 6f 6c 20 63 61 6c 6c 73 22 0a 20 20 3a 63 6c    61 73 73 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d  | ool.calls"...:class.'gptel-lisp- | 
| 7cea0 |  76 61 72 69 61 62 6c 65 0a 20 20 3a 76 61 72 69    61 62 6c 65 20 27 67 70 74 65 6c 2d 63 6f 6e 66  | variable...:variable.'gptel-conf | 
| 7cec0 |  69 72 6d 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 0a 20    20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70  | irm-tool-calls...:set-value.#'gp | 
| 7cee0 |  74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63    6f 70 65 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e  | tel--set-with-scope...:display-n | 
| 7cf00 |  69 6c 20 22 6e 65 76 65 72 22 0a 20 20 3a 64 69    73 70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c  | il."never"...:display-map.'((nil | 
| 7cf20 |  20 2e 20 22 6e 65 76 65 72 22 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20  | ..."never")..................(t. | 
| 7cf40 |  20 20 2e 20 22 61 6c 77 61 79 73 22 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...."always")..................( | 
| 7cf60 |  61 75 74 6f 20 2e 20 22 61 75 74 6f 22 29 29 0a    20 20 3a 70 72 6f 6d 70 74 20 22 54 6f 6f 6c 20  | auto..."auto"))...:prompt."Tool. | 
| 7cf80 |  63 61 6c 6c 73 20 72 65 71 75 69 72 65 20 63 6f    6e 66 69 72 6d 61 74 69 6f 6e 3f 20 22 0a 20 20  | calls.require.confirmation?."... | 
| 7cfa0 |  3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20    28 70 72 6f 6d 70 74 20 26 72 65 73 74 20 5f 29  | :reader.(lambda.(prompt.&rest._) | 
| 7cfc0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65    74 2a 20 28 28 63 68 6f 69 63 65 73 20 27 28 28  | .............(let*.((choices.'(( | 
| 7cfe0 |  22 6e 6f 22 20 20 20 2e 20 6e 69 6c 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "no".....nil)................... | 
| 7d000 |  20 20 20 20 20 20 20 20 20 20 20 20 28 22 61 6c    77 61 79 73 22 20 2e 20 74 29 0a 20 20 20 20 20  | ............("always"...t)...... | 
| 7d020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 22 74 6f 6f 6c 20  | .........................("tool. | 
| 7d040 |  64 65 63 69 64 65 73 22 20 2e 20 61 75 74 6f 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | decides"...auto))).............. | 
| 7d060 |  20 20 20 20 20 20 28 70 72 65 66 20 28 63 6f 6d    70 6c 65 74 69 6e 67 2d 72 65 61 64 20 70 72 6f  | ......(pref.(completing-read.pro | 
| 7d080 |  6d 70 74 20 63 68 6f 69 63 65 73 20 6e 69 6c 20    74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | mpt.choices.nil.t)))............ | 
| 7d0a0 |  20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20 70    72 65 66 20 63 68 6f 69 63 65 73 29 29 29 29 29  | ...(cdr.(assoc.pref.choices))))) | 
| 7d0c0 |  0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66    69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d  | ..(transient-define-infix.gptel- | 
| 7d0e0 |  2d 69 6e 66 69 78 2d 69 6e 63 6c 75 64 65 2d 74    6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28 29 0a 20  | -infix-include-tool-results.().. | 
| 7d100 |  20 22 57 68 65 74 68 65 72 20 74 6f 6f 6c 20 63    61 6c 6c 20 72 65 73 75 6c 74 73 20 73 68 6f 75  | ."Whether.tool.call.results.shou | 
| 7d120 |  6c 64 20 62 65 20 69 6e 63 6c 75 64 65 64 20 69    6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a  | ld.be.included.in.the.response.. | 
| 7d140 |  0a 54 68 69 73 20 69 73 20 61 20 74 68 72 65 65    2d 77 61 79 20 74 6f 67 67 6c 65 20 62 65 74 77  | .This.is.a.three-way.toggle.betw | 
| 7d160 |  65 65 6e 20 74 68 65 73 65 20 62 65 68 61 76 69    6f 72 73 3a 0a 0a 2d 20 41 6c 6c 20 74 6f 6f 6c  | een.these.behaviors:..-.All.tool | 
| 7d180 |  20 72 65 73 75 6c 74 73 20 61 72 65 20 69 6e 63    6c 75 64 65 64 2e 0a 2d 20 4e 6f 20 74 6f 6f 6c  | .results.are.included..-.No.tool | 
| 7d1a0 |  20 72 65 73 75 6c 74 73 20 61 72 65 20 69 6e 63    6c 75 64 65 64 2e 0a 2d 20 44 65 63 69 64 65 64  | .results.are.included..-.Decided | 
| 7d1c0 |  20 70 65 72 2d 74 6f 6f 6c 2c 20 61 63 63 6f 72    64 69 6e 67 20 74 6f 20 74 68 65 20 76 61 6c 75  | .per-tool,.according.to.the.valu | 
| 7d1e0 |  65 20 6f 66 20 74 68 65 20 74 6f 6f 6c 20 73 70    65 63 27 73 0a 20 20 3a 69 6e 63 6c 75 64 65 20  | e.of.the.tool.spec's...:include. | 
| 7d200 |  73 6c 6f 74 2e 0a 0a 54 68 69 73 20 73 65 74 73    20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 67  | slot...This.sets.the.variable.`g | 
| 7d220 |  70 74 65 6c 2d 69 6e 63 6c 75 64 65 2d 74 6f 6f    6c 2d 72 65 73 75 6c 74 73 27 2c 20 77 68 69 63  | ptel-include-tool-results',.whic | 
| 7d240 |  68 20 73 65 65 2e 22 0a 20 20 3a 6b 65 79 20 22    2d 69 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69  | h.see."...:key."-i"...:descripti | 
| 7d260 |  6f 6e 20 22 49 6e 63 6c 75 64 65 20 72 65 73 75    6c 74 73 20 20 20 22 0a 20 20 3a 63 6c 61 73 73  | on."Include.results..."...:class | 
| 7d280 |  20 27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72    69 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c  | .'gptel-lisp-variable...:variabl | 
| 7d2a0 |  65 20 27 67 70 74 65 6c 2d 69 6e 63 6c 75 64 65    2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 0a 20 20  | e.'gptel-include-tool-results... | 
| 7d2c0 |  3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74    65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f  | :set-value.#'gptel--set-with-sco | 
| 7d2e0 |  70 65 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69    6c 20 22 6e 65 76 65 72 22 0a 20 20 3a 64 69 73  | pe...:display-nil."never"...:dis | 
| 7d300 |  70 6c 61 79 2d 6d 61 70 20 27 28 28 6e 69 6c 20    2e 20 22 6e 65 76 65 72 22 29 0a 20 20 20 20 20  | play-map.'((nil..."never")...... | 
| 7d320 |  20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 20    20 2e 20 22 61 6c 77 61 79 73 22 29 0a 20 20 20  | ............(t....."always").... | 
| 7d340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61    75 74 6f 20 2e 20 22 61 75 74 6f 22 29 29 0a 20  | ..............(auto..."auto")).. | 
| 7d360 |  20 3a 70 72 6f 6d 70 74 20 22 49 6e 63 6c 75 64    65 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 20 69  | .:prompt."Include.tool.results.i | 
| 7d380 |  6e 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 3f 20    22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d  | n.LLM.response?."...:reader.(lam | 
| 7d3a0 |  62 64 61 20 28 70 72 6f 6d 70 74 20 26 72 65 73    74 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20  | bda.(prompt.&rest._)............ | 
| 7d3c0 |  20 28 6c 65 74 2a 20 28 28 63 68 6f 69 63 65 73    20 27 28 28 22 6e 65 76 65 72 22 20 20 20 2e 20  | .(let*.((choices.'(("never"..... | 
| 7d3e0 |  6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nil)............................ | 
| 7d400 |  20 20 20 28 22 61 6c 77 61 79 73 22 20 2e 20 74    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...("always"...t)............... | 
| 7d420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 22 74 6f 6f 6c 20 64 65 63 69 64 65 73 22 20  | ................("tool.decides". | 
| 7d440 |  2e 20 61 75 74 6f 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72  | ..auto)))....................(pr | 
| 7d460 |  65 66 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72    65 61 64 20 70 72 6f 6d 70 74 20 63 68 6f 69 63  | ef.(completing-read.prompt.choic | 
| 7d480 |  65 73 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28  | es.nil.t)))...............(cdr.( | 
| 7d4a0 |  61 73 73 6f 63 20 70 72 65 66 20 63 68 6f 69 63    65 73 29 29 29 29 29 0a 0a 0c 0a 3b 3b 20 2a 20  | assoc.pref.choices)))))....;;.*. | 
| 7d4c0 |  54 72 61 6e 73 69 65 6e 74 20 53 75 66 66 69 78    65 73 0a 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 78  | Transient.Suffixes..;;.**.Suffix | 
| 7d4e0 |  20 74 6f 20 73 65 6e 64 20 70 72 6f 6d 70 74 0a    0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69  | .to.send.prompt..(transient-defi | 
| 7d500 |  6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d    2d 73 75 66 66 69 78 2d 73 65 6e 64 20 28 61 72  | ne-suffix.gptel--suffix-send.(ar | 
| 7d520 |  67 73 29 0a 20 20 22 53 65 6e 64 20 41 52 47 53    2e 22 0a 20 20 3a 6b 65 79 20 22 52 45 54 22 0a  | gs)..."Send.ARGS."...:key."RET". | 
| 7d540 |  20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 23    27 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65  | ..:description.#'gptel--describe | 
| 7d560 |  2d 73 75 66 66 69 78 2d 73 65 6e 64 0a 20 20 28    69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73  | -suffix-send...(interactive.(lis | 
| 7d580 |  74 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.(transient-args............... | 
| 7d5a0 |  20 20 20 20 20 20 20 20 28 6f 72 20 74 72 61 6e    73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f  | ........(or.transient-current-co | 
| 7d5c0 |  6d 6d 61 6e 64 20 27 67 70 74 65 6c 2d 6d 65 6e    75 29 29 29 29 0a 20 20 28 6c 65 74 20 28 28 73  | mmand.'gptel-menu))))...(let.((s | 
| 7d5e0 |  74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65    61 6d 29 0a 20 20 20 20 20 20 20 20 28 69 6e 2d  | tream.gptel-stream).........(in- | 
| 7d600 |  70 6c 61 63 65 20 28 61 6e 64 20 28 6d 65 6d 62    65 72 20 22 69 22 20 61 72 67 73 29 20 74 29 29  | place.(and.(member."i".args).t)) | 
| 7d620 |  0a 20 20 20 20 20 20 20 20 28 6f 75 74 70 75 74    2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72  | .........(output-to-other-buffer | 
| 7d640 |  2d 70 29 0a 20 20 20 20 20 20 20 20 28 62 61 63    6b 65 6e 64 20 67 70 74 65 6c 2d 62 61 63 6b 65  | -p).........(backend.gptel-backe | 
| 7d660 |  6e 64 29 0a 20 20 20 20 20 20 20 20 28 6d 6f 64    65 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a  | nd).........(model.gptel-model). | 
| 7d680 |  20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64    2d 6e 61 6d 65 20 28 67 70 74 65 6c 2d 62 61 63  | ........(backend-name.(gptel-bac | 
| 7d6a0 |  6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d    62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20  | kend-name.gptel-backend))....... | 
| 7d6c0 |  20 20 28 62 75 66 66 65 72 29 20 28 70 6f 73 69    74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 28 63  | ..(buffer).(position).........(c | 
| 7d6e0 |  61 6c 6c 62 61 63 6b 29 20 28 67 70 74 65 6c 2d    62 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20 20 20  | allback).(gptel-buffer-name).... | 
| 7d700 |  20 20 20 20 20 28 73 79 73 74 65 6d 2d 65 78 74    72 61 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 64  | .....(system-extra.(gptel--get-d | 
| 7d720 |  69 72 65 63 74 69 76 65 20 61 72 67 73 29 29 0a    20 20 20 20 20 20 20 20 28 64 72 79 2d 72 75 6e  | irective.args)).........(dry-run | 
| 7d740 |  20 28 61 6e 64 20 28 6d 65 6d 62 65 72 20 22 49    22 20 61 72 67 73 29 20 74 29 29 0a 20 20 20 20  | .(and.(member."I".args).t))..... | 
| 7d760 |  20 20 20 20 3b 3b 20 49 6e 70 75 74 20 72 65 64    69 72 65 63 74 69 6f 6e 3a 20 67 72 61 62 20 70  | ....;;.Input.redirection:.grab.p | 
| 7d780 |  72 6f 6d 70 74 20 66 72 6f 6d 20 65 6c 73 65 77    68 65 72 65 3f 0a 20 20 20 20 20 20 20 20 28 70  | rompt.from.elsewhere?.........(p | 
| 7d7a0 |  72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 28    63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28  | rompt..........(cond...........( | 
| 7d7c0 |  28 6d 65 6d 62 65 72 20 22 6d 22 20 61 72 67 73    29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 69  | (member."m".args)............(mi | 
| 7d7e0 |  6e 69 62 75 66 66 65 72 2d 77 69 74 68 2d 73 65    74 75 70 2d 68 6f 6f 6b 0a 20 20 20 20 20 20 20  | nibuffer-with-setup-hook........ | 
| 7d800 |  20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20    28 29 20 28 61 64 64 2d 68 6f 6f 6b 20 27 63 6f  | ........(lambda.().(add-hook.'co | 
| 7d820 |  6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70 6f 69 6e    74 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20  | mpletion-at-point-functions..... | 
| 7d840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74  | ...........................#'gpt | 
| 7d860 |  65 6c 2d 70 72 65 73 65 74 2d 63 61 70 66 20 6e    69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 20 20  | el-preset-capf.nil.t)).......... | 
| 7d880 |  20 20 20 20 28 72 65 61 64 2d 73 74 72 69 6e 67    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ....(read-string...............( | 
| 7d8a0 |  66 6f 72 6d 61 74 20 22 41 73 6b 20 25 73 3a 20    22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64  | format."Ask.%s:.".(gptel-backend | 
| 7d8c0 |  2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b    65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20  | -name.gptel-backend))........... | 
| 7d8e0 |  20 20 20 20 28 61 6e 64 20 28 75 73 65 2d 72 65    67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20  | ....(and.(use-region-p)......... | 
| 7d900 |  20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66    65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d  | ...........(buffer-substring-no- | 
| 7d920 |  70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | properties.....................( | 
| 7d940 |  72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67    29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29  | region-beginning).(region-end))) | 
| 7d960 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28    6d 65 6d 62 65 72 20 22 79 22 20 61 72 67 73 29  | )))...........((member."y".args) | 
| 7d980 |  0a 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c    65 73 73 20 28 63 61 72 2d 73 61 66 65 20 6b 69  | ............(unless.(car-safe.ki | 
| 7d9a0 |  6c 6c 2d 72 69 6e 67 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f  | ll-ring)..............(user-erro | 
| 7d9c0 |  72 20 22 60 6b 69 6c 6c 2d 72 69 6e 67 27 20 69    73 20 65 6d 70 74 79 21 20 20 4e 6f 74 68 69 6e  | r."`kill-ring'.is.empty!..Nothin | 
| 7d9e0 |  67 20 74 6f 20 73 65 6e 64 22 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 28 69 66 20 63 75 72 72  | g.to.send"))............(if.curr | 
| 7da00 |  65 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72  | ent-prefix-arg................(r | 
| 7da20 |  65 61 64 2d 66 72 6f 6d 2d 6b 69 6c 6c 2d 72 69    6e 67 20 22 50 72 6f 6d 70 74 20 66 72 6f 6d 20  | ead-from-kill-ring."Prompt.from. | 
| 7da40 |  6b 69 6c 6c 2d 72 69 6e 67 3a 20 22 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72  | kill-ring:.")..............(curr | 
| 7da60 |  65 6e 74 2d 6b 69 6c 6c 20 30 29 29 29 29 29 29    0a 0a 20 20 20 20 3b 3b 20 4f 75 74 70 75 74 20  | ent-kill.0))))))......;;.Output. | 
| 7da80 |  72 65 64 69 72 65 63 74 69 6f 6e 3a 20 53 65 6e    64 20 72 65 73 70 6f 6e 73 65 20 65 6c 73 65 77  | redirection:.Send.response.elsew | 
| 7daa0 |  68 65 72 65 3f 0a 20 20 20 20 28 63 6f 6e 64 0a    20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 65  | here?.....(cond......((member."e | 
| 7dac0 |  22 20 61 72 67 73 29 0a 20 20 20 20 20 20 28 73    65 74 71 20 73 74 72 65 61 6d 20 6e 69 6c 29 0a  | ".args).......(setq.stream.nil). | 
| 7dae0 |  20 20 20 20 20 20 28 73 65 74 71 20 63 61 6c 6c    62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20  | ......(setq.callback............ | 
| 7db00 |  20 28 6c 61 6d 62 64 61 20 28 72 65 73 70 20 69    6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 72  | .(lambda.(resp.info.&optional._r | 
| 7db20 |  61 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 63 61 73 65 20 72 65 73 70 0a 20 20  | aw)...............(pcase.resp... | 
| 7db40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28    70 72 65 64 20 73 74 72 69 6e 67 70 29 20 28 6d  | ..............((pred.stringp).(m | 
| 7db60 |  65 73 73 61 67 65 20 22 25 73 20 72 65 73 70 6f    6e 73 65 3a 20 25 73 22 20 62 61 63 6b 65 6e 64  | essage."%s.response:.%s".backend | 
| 7db80 |  2d 6e 61 6d 65 20 72 65 73 70 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28  | -name.resp)).................(`( | 
| 7dba0 |  74 6f 6f 6c 2d 63 61 6c 6c 20 2e 20 2c 74 6f 6f    6c 2d 63 61 6c 6c 73 29 20 28 67 70 74 65 6c 2d  | tool-call...,tool-calls).(gptel- | 
| 7dbc0 |  2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d 63 61    6c 6c 73 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 69  | -display-tool-calls.tool-calls.i | 
| 7dbe0 |  6e 66 6f 20 27 6d 69 6e 69 62 75 66 66 65 72 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nfo.'minibuffer))............... | 
| 7dc00 |  20 20 28 60 28 74 6f 6f 6c 2d 72 65 73 75 6c 74    20 2e 20 2c 74 6f 6f 6c 2d 72 65 73 75 6c 74 73  | ..(`(tool-result...,tool-results | 
| 7dc20 |  29 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61    79 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 74  | ).(gptel--display-tool-results.t | 
| 7dc40 |  6f 6f 6c 2d 72 65 73 75 6c 74 73 20 69 6e 66 6f    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ool-results.info)).............. | 
| 7dc60 |  20 20 20 28 5f 20 28 77 68 65 6e 20 28 61 6e 64    20 28 6e 75 6c 6c 20 72 65 73 70 29 20 28 70 6c  | ...(_.(when.(and.(null.resp).(pl | 
| 7dc80 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 65 72    72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20  | ist-get.info.:error))........... | 
| 7dca0 |  20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73    61 67 65 20 22 25 73 20 72 65 73 70 6f 6e 73 65  | ...........(message."%s.response | 
| 7dcc0 |  20 65 72 72 6f 72 3a 20 25 73 22 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .error:.%s"..................... | 
| 7dce0 |  20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e    64 2d 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65  | ..........backend-name.(plist-ge | 
| 7dd00 |  74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29    29 29 29 29 29 29 0a 20 20 20 20 20 28 28 6d 65  | t.info.:status))))))))......((me | 
| 7dd20 |  6d 62 65 72 20 22 6b 22 20 61 72 67 73 29 0a 20    20 20 20 20 20 28 73 65 74 71 20 73 74 72 65 61  | mber."k".args).......(setq.strea | 
| 7dd40 |  6d 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65    74 71 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20  | m.nil).......(setq.callback..... | 
| 7dd60 |  20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20    28 72 65 73 70 20 69 6e 66 6f 20 26 6f 70 74 69  | ........(lambda.(resp.info.&opti | 
| 7dd80 |  6f 6e 61 6c 20 5f 72 61 77 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20  | onal._raw)...............(pcase. | 
| 7dda0 |  72 65 73 70 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69  | resp.................((pred.stri | 
| 7ddc0 |  6e 67 70 29 20 28 6b 69 6c 6c 2d 6e 65 77 20 72    65 73 70 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ngp).(kill-new.resp)............ | 
| 7dde0 |  20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22    25 73 20 72 65 73 70 6f 6e 73 65 3a 20 5c 22 25  | ......(message."%s.response:.\"% | 
| 7de00 |  73 5c 22 20 63 6f 70 69 65 64 20 74 6f 20 6b 69    6c 6c 2d 72 69 6e 67 2e 22 20 62 61 63 6b 65 6e  | s\".copied.to.kill-ring.".backen | 
| 7de20 |  64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | d-name.......................... | 
| 7de40 |  20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e    67 2d 74 6f 2d 77 69 64 74 68 20 72 65 73 70 20  | .(truncate-string-to-width.resp. | 
| 7de60 |  33 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 60 28 74 6f 6f 6c 2d 63 61  | 30))).................(`(tool-ca | 
| 7de80 |  6c 6c 20 2e 20 2c 74 6f 6f 6c 2d 63 61 6c 6c 73    29 20 28 67 70 74 65 6c 2d 2d 64 69 73 70 6c 61  | ll...,tool-calls).(gptel--displa | 
| 7dea0 |  79 2d 74 6f 6f 6c 2d 63 61 6c 6c 73 20 74 6f 6f    6c 2d 63 61 6c 6c 73 20 69 6e 66 6f 20 27 6d 69  | y-tool-calls.tool-calls.info.'mi | 
| 7dec0 |  6e 69 62 75 66 66 65 72 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 60 28 74 6f  | nibuffer)).................(`(to | 
| 7dee0 |  6f 6c 2d 72 65 73 75 6c 74 20 2e 20 2c 74 6f 6f    6c 2d 72 65 73 75 6c 74 73 29 20 28 67 70 74 65  | ol-result...,tool-results).(gpte | 
| 7df00 |  6c 2d 2d 64 69 73 70 6c 61 79 2d 74 6f 6f 6c 2d    72 65 73 75 6c 74 73 20 74 6f 6f 6c 2d 72 65 73  | l--display-tool-results.tool-res | 
| 7df20 |  75 6c 74 73 20 69 6e 66 6f 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 5f 20 28  | ults.info)).................(_.( | 
| 7df40 |  77 68 65 6e 20 28 61 6e 64 20 28 6e 75 6c 6c 20    72 65 73 70 29 20 28 70 6c 69 73 74 2d 67 65 74  | when.(and.(null.resp).(plist-get | 
| 7df60 |  20 69 6e 66 6f 20 3a 65 72 72 6f 72 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .info.:error)).................. | 
| 7df80 |  20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73    20 72 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a  | ....(message."%s.response.error: | 
| 7dfa0 |  20 25 73 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .%s".backend-name............... | 
| 7dfc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20  | ................(plist-get.info. | 
| 7dfe0 |  3a 73 74 61 74 75 73 29 29 29 29 29 29 29 29 0a    20 20 20 20 20 28 28 73 65 74 71 20 67 70 74 65  | :status))))))))......((setq.gpte | 
| 7e000 |  6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 73 6f  | l-buffer-name.............(cl-so | 
| 7e020 |  6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28    61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29 20  | me.(lambda.(s).(and.(stringp.s). | 
| 7e040 |  28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70    20 22 67 22 20 73 29 0a 20 20 20 20 20 20 20 20  | (string-prefix-p."g".s)......... | 
| 7e060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72  | .........................(substr | 
| 7e080 |  69 6e 67 20 73 20 31 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ing.s.1)))...................... | 
| 7e0a0 |  61 72 67 73 29 29 0a 20 20 20 20 20 20 28 73 65    74 71 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68  | args)).......(setq.output-to-oth | 
| 7e0c0 |  65 72 2d 62 75 66 66 65 72 2d 70 20 74 29 0a 20    20 20 20 20 20 28 6c 65 74 20 28 28 72 65 64 75  | er-buffer-p.t).......(let.((redu | 
| 7e0e0 |  63 65 64 2d 70 72 6f 6d 70 74 20 20 20 20 20 20    20 20 20 20 20 20 20 3b 46 6f 72 20 69 6e 73 65  | ced-prompt.............;For.inse | 
| 7e100 |  72 74 69 6e 67 20 69 6e 74 6f 20 74 68 65 20 67    70 74 65 6c 20 62 75 66 66 65 72 20 61 73 0a 20  | rting.into.the.gptel.buffer.as.. | 
| 7e120 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 7e140 |  20 20 20 20 20 20 20 3b 63 6f 6e 74 65 78 74 2c    20 6e 6f 74 20 74 68 65 20 70 72 6f 6d 70 74 20  | .......;context,.not.the.prompt. | 
| 7e160 |  75 73 65 64 20 66 6f 72 20 74 68 65 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | used.for.the.................... | 
| 7e180 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 72 65 71 75 65 73 74 20 69 74  | .....................;request.it | 
| 7e1a0 |  73 65 6c 66 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6f 72 20 70 72 6f 6d 70 74 0a 20 20 20  | self..............(or.prompt.... | 
| 7e1c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69    66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29  | ..............(if.(use-region-p) | 
| 7e1e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75  | ......................(buffer-su | 
| 7e200 |  62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65    72 74 69 65 73 20 28 72 65 67 69 6f 6e 2d 62 65  | bstring-no-properties.(region-be | 
| 7e220 |  67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ginning)........................ | 
| 7e240 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72  | ..............................(r | 
| 7e260 |  65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | egion-end))....................( | 
| 7e280 |  62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67    2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20  | buffer-substring-no-properties.. | 
| 7e2a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69  | ...................(save-excursi | 
| 7e2c0 |  6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 74 65 78 74 2d 70  | on.......................(text-p | 
| 7e2e0 |  72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62    61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20  | roperty-search-backward......... | 
| 7e300 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27    67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a  | ...............'gptel.'response. | 
| 7e320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65  | .......................(when.(ge | 
| 7e340 |  74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20    28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29  | t-char-property.(max.(point-min) | 
| 7e360 |  20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(1-.(point))).................. | 
| 7e380 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27  | ...............................' | 
| 7e3a0 |  67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | gptel).......................... | 
| 7e3c0 |  74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74  | t)).......................(point | 
| 7e3e0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61  | )).....................(gptel--a | 
| 7e400 |  74 2d 77 6f 72 64 2d 65 6e 64 20 28 70 6f 69 6e    74 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20  | t-word-end.(point)))))))........ | 
| 7e420 |  20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20    28 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20  | .(cond..........((buffer-live-p. | 
| 7e440 |  28 67 65 74 2d 62 75 66 66 65 72 20 67 70 74 65    6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 0a  | (get-buffer.gptel-buffer-name)). | 
| 7e460 |  20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 73    65 72 74 20 69 6e 74 6f 20 65 78 69 73 74 69 6e  | ..........;;.Insert.into.existin | 
| 7e480 |  67 20 67 70 74 65 6c 20 73 65 73 73 69 6f 6e 0a    20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e  | g.gptel.session...........(progn | 
| 7e4a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65    74 71 20 62 75 66 66 65 72 20 28 67 65 74 2d 62  | .............(setq.buffer.(get-b | 
| 7e4c0 |  75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66    65 72 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20  | uffer.gptel-buffer-name))....... | 
| 7e4e0 |  20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72    65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65  | ......(with-current-buffer.buffe | 
| 7e500 |  72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e  | r...............(goto-char.(poin | 
| 7e520 |  74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f  | t-max))...............(unless.(o | 
| 7e540 |  72 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e    6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | r.buffer-read-only.............. | 
| 7e560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65    74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20  | .............(get-char-property. | 
| 7e580 |  28 70 6f 69 6e 74 29 20 27 72 65 61 64 2d 6f 6e    6c 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | (point).'read-only))............ | 
| 7e5a0 |  20 20 20 20 20 28 69 6e 73 65 72 74 20 72 65 64    75 63 65 64 2d 70 72 6f 6d 70 74 29 29 0a 20 20  | .....(insert.reduced-prompt))... | 
| 7e5c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74    71 20 70 6f 73 69 74 69 6f 6e 20 28 70 6f 69 6e  | ............(setq.position.(poin | 
| 7e5e0 |  74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 77 68 65 6e 20 28 61 6e 64 20 67 70 74  | t))...............(when.(and.gpt | 
| 7e600 |  65 6c 2d 6d 6f 64 65 20 28 6e 6f 74 20 64 72 79    2d 72 75 6e 29 29 0a 20 20 20 20 20 20 20 20 20  | el-mode.(not.dry-run)).......... | 
| 7e620 |  20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75    70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 57  | .......(gptel--update-status.".W | 
| 7e640 |  61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e    69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20  | aiting...".'warning)))))........ | 
| 7e660 |  20 20 3b 3b 20 49 6e 73 65 72 74 20 69 6e 74 6f    20 6e 65 77 20 67 70 74 65 6c 20 73 65 73 73 69  | ..;;.Insert.into.new.gptel.sessi | 
| 7e680 |  6f 6e 0a 20 20 20 20 20 20 20 20 20 28 74 20 28    73 65 74 71 20 62 75 66 66 65 72 0a 20 20 20 20  | on..........(t.(setq.buffer..... | 
| 7e6a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67    70 74 65 6c 20 67 70 74 65 6c 2d 62 75 66 66 65  | ..............(gptel.gptel-buffe | 
| 7e6c0 |  72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | r-name.......................... | 
| 7e6e0 |  28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20    6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20  | (condition-case.nil............. | 
| 7e700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69  | .................(gptel--get-api | 
| 7e720 |  2d 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -key)........................... | 
| 7e740 |  20 28 28 65 72 72 6f 72 20 75 73 65 72 2d 65 72    72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .((error.user-error)............ | 
| 7e760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 65 74 71 20 67 70 74 65 6c 2d 61 70 69  | .................(setq.gptel-api | 
| 7e780 |  2d 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -key............................ | 
| 7e7a0 |  20 20 20 20 20 20 20 28 72 65 61 64 2d 70 61 73    73 77 64 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .......(read-passwd............. | 
| 7e7c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22  | .......................(format." | 
| 7e7e0 |  25 73 20 41 50 49 20 6b 65 79 3a 20 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | %s.API.key:."................... | 
| 7e800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d  | .........................(gptel- | 
| 7e820 |  62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | backend-name.................... | 
| 7e840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 62  | .........................gptel-b | 
| 7e860 |  61 63 6b 65 6e 64 29 29 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ackend)))))).................... | 
| 7e880 |  20 20 20 20 20 20 72 65 64 75 63 65 64 2d 70 72    6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20  | ......reduced-prompt)).......... | 
| 7e8a0 |  20 20 20 3b 3b 20 53 65 74 20 62 61 63 6b 65 6e    64 20 61 6e 64 20 6d 6f 64 65 6c 20 69 6e 20 6e  | ...;;.Set.backend.and.model.in.n | 
| 7e8c0 |  65 77 20 73 65 73 73 69 6f 6e 20 66 72 6f 6d 20    63 75 72 72 65 6e 74 20 62 75 66 66 65 72 0a 20  | ew.session.from.current.buffer.. | 
| 7e8e0 |  20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68    2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20  | ...........(with-current-buffer. | 
| 7e900 |  62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c  | buffer...............(setq.gptel | 
| 7e920 |  2d 62 61 63 6b 65 6e 64 20 62 61 63 6b 65 6e 64    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -backend.backend)............... | 
| 7e940 |  28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65    6c 20 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20  | (setq.gptel-model.model)........ | 
| 7e960 |  20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 64    72 79 2d 72 75 6e 0a 20 20 20 20 20 20 20 20 20  | .......(unless.dry-run.......... | 
| 7e980 |  20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75    70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 57  | .......(gptel--update-status.".W | 
| 7e9a0 |  61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e    69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20  | aiting...".'warning))........... | 
| 7e9c0 |  20 20 20 20 28 73 65 74 71 20 70 6f 73 69 74 69    6f 6e 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29  | ....(setq.position.(point))))))) | 
| 7e9e0 |  0a 20 20 20 20 20 28 28 73 65 74 71 20 67 70 74    65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20  | ......((setq.gptel-buffer-name.. | 
| 7ea00 |  20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 73    6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 20  | ...........(cl-some.(lambda.(s). | 
| 7ea20 |  28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29    20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d  | (and.(stringp.s).(string-prefix- | 
| 7ea40 |  70 20 22 62 22 20 73 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | p."b".s)........................ | 
| 7ea60 |  20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74    72 69 6e 67 20 73 20 31 29 29 29 0a 20 20 20 20  | ..........(substring.s.1)))..... | 
| 7ea80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 61 72 67 73 29 29 0a 20 20 20 20 20 20 28 73  | .................args)).......(s | 
| 7eaa0 |  65 74 71 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74    68 65 72 2d 62 75 66 66 65 72 2d 70 20 74 29 0a  | etq.output-to-other-buffer-p.t). | 
| 7eac0 |  20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66    65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63  | ......(setq.buffer.(get-buffer-c | 
| 7eae0 |  72 65 61 74 65 20 67 70 74 65 6c 2d 62 75 66 66    65 72 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20  | reate.gptel-buffer-name))....... | 
| 7eb00 |  28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75    66 66 65 72 20 62 75 66 66 65 72 20 28 73 65 74  | (with-current-buffer.buffer.(set | 
| 7eb20 |  71 20 70 6f 73 69 74 69 6f 6e 20 28 70 6f 69 6e    74 29 29 29 29 29 0a 0a 20 20 20 20 28 70 72 6f  | q.position.(point)))))......(pro | 
| 7eb40 |  67 31 20 28 67 70 74 65 6c 2d 72 65 71 75 65 73    74 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20  | g1.(gptel-request.prompt........ | 
| 7eb60 |  20 20 20 20 20 20 3a 62 75 66 66 65 72 20 28 6f    72 20 62 75 66 66 65 72 20 28 63 75 72 72 65 6e  | ......:buffer.(or.buffer.(curren | 
| 7eb80 |  74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 3a 70 6f 73 69 74 69 6f  | t-buffer))..............:positio | 
| 7eba0 |  6e 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 3a 69 6e 2d 70 6c 61 63  | n.position..............:in-plac | 
| 7ebc0 |  65 20 28 61 6e 64 20 69 6e 2d 70 6c 61 63 65 20    28 6e 6f 74 20 6f 75 74 70 75 74 2d 74 6f 2d 6f  | e.(and.in-place.(not.output-to-o | 
| 7ebe0 |  74 68 65 72 2d 62 75 66 66 65 72 2d 70 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74  | ther-buffer-p))..............:st | 
| 7ec00 |  72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 73 79 73 74 65 6d  | ream.stream..............:system | 
| 7ec20 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69    66 20 73 79 73 74 65 6d 2d 65 78 74 72 61 0a 20  | ..............(if.system-extra.. | 
| 7ec40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 61 64  | ................(gptel--merge-ad | 
| 7ec60 |  64 69 74 69 6f 6e 61 6c 2d 64 69 72 65 63 74 69    76 65 20 73 79 73 74 65 6d 2d 65 78 74 72 61 29  | ditional-directive.system-extra) | 
| 7ec80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65  | ................gptel--system-me | 
| 7eca0 |  73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 63 61  | ssage)..............:callback.ca | 
| 7ecc0 |  6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 74 72 61 6e 73 66 6f 72 6d 73 20  | llback..............:transforms. | 
| 7ece0 |  67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61    6e 73 66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73  | gptel-prompt-transform-functions | 
| 7ed00 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66    73 6d 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 66  | ..............:fsm.(gptel-make-f | 
| 7ed20 |  73 6d 20 3a 68 61 6e 64 6c 65 72 73 20 67 70 74    65 6c 2d 73 65 6e 64 2d 2d 68 61 6e 64 6c 65 72  | sm.:handlers.gptel-send--handler | 
| 7ed40 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 64 72 79 2d 72 75 6e 20 64 72 79 2d 72 75 6e  | s)..............:dry-run.dry-run | 
| 7ed60 |  29 0a 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73    20 64 72 79 2d 72 75 6e 0a 20 20 20 20 20 20 20  | )........(unless.dry-run........ | 
| 7ed80 |  20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d    73 74 61 74 75 73 20 22 20 57 61 69 74 69 6e 67  | .(gptel--update-status.".Waiting | 
| 7eda0 |  2e 2e 2e 22 20 27 77 61 72 6e 69 6e 67 29 29 0a    0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20  | ...".'warning))........;;.NOTE:. | 
| 7edc0 |  50 6f 73 73 69 62 6c 65 20 66 75 74 75 72 65 20    72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 68  | Possible.future.race.condition.h | 
| 7ede0 |  65 72 65 20 69 66 20 45 6d 61 63 73 20 65 76 65    72 20 64 72 6f 70 73 20 74 68 65 20 47 49 4c 2e  | ere.if.Emacs.ever.drops.the.GIL. | 
| 7ee00 |  0a 20 20 20 20 20 20 3b 3b 20 54 68 65 20 48 54    54 50 20 72 65 71 75 65 73 74 20 63 61 6c 6c 62  | .......;;.The.HTTP.request.callb | 
| 7ee20 |  61 63 6b 20 6d 69 67 68 74 20 6d 6f 64 69 66 79    20 74 68 65 20 62 75 66 66 65 72 20 62 65 66 6f  | ack.might.modify.the.buffer.befo | 
| 7ee40 |  72 65 20 74 68 65 20 69 6e 2d 70 6c 61 63 65 0a    20 20 20 20 20 20 3b 3b 20 74 65 78 74 20 69 73  | re.the.in-place.......;;.text.is | 
| 7ee60 |  20 6b 69 6c 6c 65 64 20 62 65 6c 6f 77 2e 0a 20    20 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c  | .killed.below........(when.in-pl | 
| 7ee80 |  61 63 65 0a 20 20 20 20 20 20 20 20 28 69 66 20    28 6f 72 20 62 75 66 66 65 72 2d 72 65 61 64 2d  | ace.........(if.(or.buffer-read- | 
| 7eea0 |  6f 6e 6c 79 20 28 67 65 74 2d 63 68 61 72 2d 70    72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20  | only.(get-char-property.(point). | 
| 7eec0 |  27 72 65 61 64 2d 6f 6e 6c 79 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67  | 'read-only)).............(messag | 
| 7eee0 |  65 20 22 4e 6f 74 20 72 65 70 6c 61 63 69 6e 67    20 70 72 6f 6d 70 74 3a 20 72 65 67 69 6f 6e 20  | e."Not.replacing.prompt:.region. | 
| 7ef00 |  69 73 20 72 65 61 64 2d 6f 6e 6c 79 22 29 0a 20    20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28  | is.read-only")...........(let.(( | 
| 7ef20 |  62 65 67 20 28 69 66 20 28 75 73 65 2d 72 65 67    69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20  | beg.(if.(use-region-p).......... | 
| 7ef40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e  | ................(region-beginnin | 
| 7ef60 |  67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28  | g)........................(max.( | 
| 7ef80 |  70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c 65 2d    70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 0a  | previous-single-property-change. | 
| 7efa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f  | .............................(po | 
| 7efc0 |  69 6e 74 29 20 27 67 70 74 65 6c 20 6e 69 6c 20    28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20  | int).'gptel.nil.(point-min)).... | 
| 7efe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 72 65 76 69 6f  | .........................(previo | 
| 7f000 |  75 73 2d 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72    74 79 2d 63 68 61 6e 67 65 0a 20 20 20 20 20 20  | us-single-property-change....... | 
| 7f020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 27  | .......................(point).' | 
| 7f040 |  72 65 61 64 2d 6f 6e 6c 79 20 6e 69 6c 20 28 70    6f 69 6e 74 2d 6d 69 6e 29 29 29 29 29 0a 20 20  | read-only.nil.(point-min)))))... | 
| 7f060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65    6e 64 20 28 69 66 20 28 75 73 65 2d 72 65 67 69  | ..............(end.(if.(use-regi | 
| 7f080 |  6f 6e 2d 70 29 20 28 72 65 67 69 6f 6e 2d 65 6e    64 29 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20  | on-p).(region-end).(point))))... | 
| 7f0a0 |  20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73    73 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65  | ..........(unless.output-to-othe | 
| 7f0c0 |  72 2d 62 75 66 66 65 72 2d 70 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3b 3b 20 73 74 6f 72  | r-buffer-p...............;;.stor | 
| 7f0e0 |  65 20 74 68 65 20 6b 69 6c 6c 65 64 20 74 65 78    74 20 69 6e 20 67 70 74 65 6c 2d 68 69 73 74 6f  | e.the.killed.text.in.gptel-histo | 
| 7f100 |  72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d  | ry...............(gptel--attach- | 
| 7f120 |  72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | response-history................ | 
| 7f140 |  28 6c 69 73 74 20 28 62 75 66 66 65 72 2d 73 75    62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65  | (list.(buffer-substring-no-prope | 
| 7f160 |  72 74 69 65 73 20 62 65 67 20 65 6e 64 29 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6b  | rties.beg.end)))).............(k | 
| 7f180 |  69 6c 6c 2d 72 65 67 69 6f 6e 20 62 65 67 20 65    6e 64 29 29 29 29 0a 0a 20 20 20 20 20 20 28 77  | ill-region.beg.end))))........(w | 
| 7f1a0 |  68 65 6e 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74    68 65 72 2d 62 75 66 66 65 72 2d 70 0a 20 20 20  | hen.output-to-other-buffer-p.... | 
| 7f1c0 |  20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 63    6f 6e 63 61 74 20 22 50 72 6f 6d 70 74 20 73 65  | .....(message.(concat."Prompt.se | 
| 7f1e0 |  6e 74 20 74 6f 20 62 75 66 66 65 72 3a 20 22 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nt.to.buffer:."................. | 
| 7f200 |  20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72    74 69 7a 65 20 67 70 74 65 6c 2d 62 75 66 66 65  | .........(propertize.gptel-buffe | 
| 7f220 |  72 2d 6e 61 6d 65 20 27 66 61 63 65 20 27 68 65    6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 29  | r-name.'face.'help-key-binding)) | 
| 7f240 |  29 0a 20 20 20 20 20 20 20 20 28 64 69 73 70 6c    61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20  | ).........(display-buffer....... | 
| 7f260 |  20 20 20 62 75 66 66 65 72 20 27 28 28 64 69 73    70 6c 61 79 2d 62 75 66 66 65 72 2d 72 65 75 73  | ...buffer.'((display-buffer-reus | 
| 7f280 |  65 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70  | e-window....................disp | 
| 7f2a0 |  6c 61 79 2d 62 75 66 66 65 72 2d 70 6f 70 2d 75    70 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20  | lay-buffer-pop-up-window)....... | 
| 7f2c0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 75    73 61 62 6c 65 2d 66 72 61 6d 65 73 20 2e 20 76  | ............(reusable-frames...v | 
| 7f2e0 |  69 73 69 62 6c 65 29 29 29 29 29 29 29 0a 0a 28    64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6d 65 72  | isible)))))))..(defun.gptel--mer | 
| 7f300 |  67 65 2d 61 64 64 69 74 69 6f 6e 61 6c 2d 64 69    72 65 63 74 69 76 65 20 28 61 64 64 69 74 69 6f  | ge-additional-directive.(additio | 
| 7f320 |  6e 61 6c 20 26 6f 70 74 69 6f 6e 61 6c 20 66 75    6c 6c 29 0a 20 20 22 4d 65 72 67 65 20 41 44 44  | nal.&optional.full)..."Merge.ADD | 
| 7f340 |  49 54 49 4f 4e 41 4c 20 67 70 74 65 6c 20 64 69    72 65 63 74 69 76 65 20 77 69 74 68 20 74 68 65  | ITIONAL.gptel.directive.with.the | 
| 7f360 |  20 66 75 6c 6c 20 73 79 73 74 65 6d 20 6d 65 73    73 61 67 65 2e 0a 0a 54 68 65 20 41 44 44 49 54  | .full.system.message...The.ADDIT | 
| 7f380 |  49 4f 4e 41 4c 20 64 69 72 65 63 74 69 76 65 20    69 73 20 74 79 70 69 63 61 6c 6c 79 20 73 70 65  | IONAL.directive.is.typically.spe | 
| 7f3a0 |  63 69 66 69 65 64 20 66 72 6f 6d 20 60 67 70 74    65 6c 2d 6d 65 6e 75 27 0a 61 6e 64 20 61 70 70  | cified.from.`gptel-menu'.and.app | 
| 7f3c0 |  6c 69 65 73 20 6f 6e 6c 79 20 74 6f 20 74 68 65    20 6e 65 78 74 20 67 70 74 65 6c 20 72 65 71 75  | lies.only.to.the.next.gptel.requ | 
| 7f3e0 |  65 73 74 2c 20 73 65 65 0a 60 67 70 74 65 6c 2d    2d 69 6e 66 69 78 2d 61 64 64 2d 64 69 72 65 63  | est,.see.`gptel--infix-add-direc | 
| 7f400 |  74 69 76 65 27 2e 0a 0a 46 55 4c 4c 20 64 65 66    61 75 6c 74 73 20 74 6f 20 74 68 65 20 61 63 74  | tive'...FULL.defaults.to.the.act | 
| 7f420 |  69 76 65 2c 20 66 75 6c 6c 20 73 79 73 74 65 6d    20 6d 65 73 73 61 67 65 2e 20 20 49 74 20 6d 61  | ive,.full.system.message...It.ma | 
| 7f440 |  79 20 62 65 20 61 0a 73 74 72 69 6e 67 2c 20 61    20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73  | y.be.a.string,.a.list.of.prompts | 
| 7f460 |  20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 2c 20    73 65 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63  | .or.a.function,.see.`gptel-direc | 
| 7f480 |  74 69 76 65 73 27 0a 66 6f 72 20 64 65 74 61 69    6c 73 2e 22 0a 20 20 28 73 65 74 71 20 66 75 6c  | tives'.for.details."...(setq.ful | 
| 7f4a0 |  6c 20 28 6f 72 20 66 75 6c 6c 20 67 70 74 65 6c    2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65  | l.(or.full.gptel--system-message | 
| 7f4c0 |  29 29 0a 20 20 28 63 6c 2d 74 79 70 65 63 61 73    65 20 66 75 6c 6c 0a 20 20 20 20 28 73 74 72 69  | ))...(cl-typecase.full.....(stri | 
| 7f4e0 |  6e 67 20 28 63 6f 6e 63 61 74 20 66 75 6c 6c 20    22 5c 6e 5c 6e 22 20 61 64 64 69 74 69 6f 6e 61  | ng.(concat.full."\n\n".additiona | 
| 7f500 |  6c 29 29 0a 20 20 20 20 28 6c 69 73 74 20 28 6c    65 74 20 28 28 63 6f 70 79 20 28 63 6f 70 79 2d  | l)).....(list.(let.((copy.(copy- | 
| 7f520 |  73 65 71 75 65 6e 63 65 20 66 75 6c 6c 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65  | sequence.full))).............(se | 
| 7f540 |  74 63 61 72 20 63 6f 70 79 20 28 63 6f 6e 63 61    74 20 28 63 61 72 20 63 6f 70 79 29 20 22 5c 6e  | tcar.copy.(concat.(car.copy)."\n | 
| 7f560 |  5c 6e 22 20 61 64 64 69 74 69 6f 6e 61 6c 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 70  | \n".additional)).............cop | 
| 7f580 |  79 29 29 0a 20 20 20 20 28 66 75 6e 63 74 69 6f    6e 20 28 6c 61 6d 62 64 61 20 28 29 20 28 67 70  | y)).....(function.(lambda.().(gp | 
| 7f5a0 |  74 65 6c 2d 2d 6d 65 72 67 65 2d 61 64 64 69 74    69 6f 6e 61 6c 2d 64 69 72 65 63 74 69 76 65 0a  | tel--merge-additional-directive. | 
| 7f5c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 61 64 64 69 74 69 6f 6e 61 6c 20  | .....................additional. | 
| 7f5e0 |  28 66 75 6e 63 61 6c 6c 20 66 75 6c 6c 29 29 29    29 0a 20 20 20 20 28 6f 74 68 65 72 77 69 73 65  | (funcall.full)))).....(otherwise | 
| 7f600 |  20 61 64 64 69 74 69 6f 6e 61 6c 29 29 29 0a 0a    3b 3b 20 41 6c 6c 6f 77 20 63 61 6c 6c 69 6e 67  | .additional)))..;;.Allow.calling | 
| 7f620 |  20 66 72 6f 6d 20 65 6c 69 73 70 0a 28 70 75 74    20 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d  | .from.elisp.(put.'gptel--suffix- | 
| 7f640 |  73 65 6e 64 20 27 69 6e 74 65 72 61 63 74 69 76    65 2d 6f 6e 6c 79 20 6e 69 6c 29 0a 0a 3b 3b 20  | send.'interactive-only.nil)..;;. | 
| 7f660 |  2a 2a 20 53 75 66 66 69 78 20 74 6f 20 72 65 67    65 6e 65 72 61 74 65 20 72 65 73 70 6f 6e 73 65  | **.Suffix.to.regenerate.response | 
| 7f680 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d    72 65 67 65 6e 65 72 61 74 65 20 28 29 0a 20 20  | ..(defun.gptel--regenerate.()... | 
| 7f6a0 |  22 52 65 67 65 6e 65 72 61 74 65 20 67 70 74 65    6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f  | "Regenerate.gptel.response.at.po | 
| 7f6c0 |  69 6e 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63    74 69 76 65 29 0a 20 20 28 77 68 65 6e 20 28 67  | int."...(interactive)...(when.(g | 
| 7f6e0 |  70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73    65 2d 70 29 0a 20 20 20 20 28 70 63 61 73 65 2d  | ptel--in-response-p).....(pcase- | 
| 7f700 |  6c 65 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20    2c 65 6e 64 29 20 28 67 70 74 65 6c 2d 2d 67 65  | let*.((`(,beg...,end).(gptel--ge | 
| 7f720 |  74 2d 72 65 73 70 6f 6e 73 65 2d 62 6f 75 6e 64    73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | t-response-bounds))............. | 
| 7f740 |  20 20 20 20 20 28 68 69 73 74 6f 72 79 20 28 67    65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79  | .....(history.(get-char-property | 
| 7f760 |  20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d    68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20  | .(point).'gptel-history))....... | 
| 7f780 |  20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 76    2d 72 65 73 70 6f 6e 73 65 73 20 28 63 6f 6e 73  | ...........(prev-responses.(cons | 
| 7f7a0 |  20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69    6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73  | .(buffer-substring-no-properties | 
| 7f7c0 |  20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .beg.end)....................... | 
| 7f7e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20  | .................history)))..... | 
| 7f800 |  20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f    64 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(when.gptel-mode.............. | 
| 7f820 |  20 20 20 20 3b 52 65 6d 6f 76 65 20 70 72 65 66    69 78 2f 73 75 66 66 69 78 0a 20 20 20 20 20 20  | ....;Remove.prefix/suffix....... | 
| 7f840 |  20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f    6e 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74  | ..(save-excursion...........(got | 
| 7f860 |  6f 2d 63 68 61 72 20 62 65 67 29 0a 20 20 20 20    20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f  | o-char.beg)...........(when.(loo | 
| 7f880 |  6b 69 6e 67 2d 62 61 63 6b 20 28 63 6f 6e 63 61    74 20 22 5c 6e 2b 22 20 28 72 65 67 65 78 70 2d  | king-back.(concat."\n+".(regexp- | 
| 7f8a0 |  71 75 6f 74 65 20 28 67 70 74 65 6c 2d 72 65 73    70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72  | quote.(gptel-response-prefix-str | 
| 7f8c0 |  69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ing))).......................... | 
| 7f8e0 |  20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29    20 27 67 72 65 65 64 79 29 0a 20 20 20 20 20 20  | .....(point-min).'greedy)....... | 
| 7f900 |  20 20 20 20 20 20 28 73 65 74 71 20 62 65 67 20    28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67  | ......(setq.beg.(match-beginning | 
| 7f920 |  20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    28 67 6f 74 6f 2d 63 68 61 72 20 65 6e 64 29 0a  | .0)))...........(goto-char.end). | 
| 7f940 |  20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20    28 6c 6f 6f 6b 69 6e 67 2d 61 74 0a 20 20 20 20  | ..........(when.(looking-at..... | 
| 7f960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 63 61 74 20 22 5c 6e 2b 22 20 28 72 65 67 65  | .............(concat."\n+".(rege | 
| 7f980 |  78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 6c 2d    70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74  | xp-quote.(gptel-prompt-prefix-st | 
| 7f9a0 |  72 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 28 73 65 74 71 20 65 6e 64 20 28  | ring)))).............(setq.end.( | 
| 7f9c0 |  6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 29 29    0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72  | match-end.0))))).......(delete-r | 
| 7f9e0 |  65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 0a 20    20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 74 74  | egion.beg.end).......(gptel--att | 
| 7fa00 |  61 63 68 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73    74 6f 72 79 20 70 72 65 76 2d 72 65 73 70 6f 6e  | ach-response-history.prev-respon | 
| 7fa20 |  73 65 73 29 0a 20 20 20 20 20 20 28 63 61 6c 6c    2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23  | ses).......(call-interactively.# | 
| 7fa40 |  27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73    65 6e 64 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 53  | 'gptel--suffix-send))))..;;.**.S | 
| 7fa60 |  65 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67    65 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d  | et.system.message.(defun.gptel-- | 
| 7fa80 |  72 65 61 64 2d 63 72 6f 77 64 73 6f 75 72 63 65    64 2d 70 72 6f 6d 70 74 20 28 29 0a 20 20 22 50  | read-crowdsourced-prompt.()..."P | 
| 7faa0 |  69 63 6b 20 61 20 63 72 6f 77 64 73 6f 75 72 63    65 64 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74  | ick.a.crowdsourced.system.prompt | 
| 7fac0 |  20 66 6f 72 20 67 70 74 65 6c 2e 0a 0a 54 68 69    73 20 75 73 65 73 20 74 68 65 20 70 72 6f 6d 70  | .for.gptel...This.uses.the.promp | 
| 7fae0 |  74 73 20 69 6e 20 74 68 65 20 76 61 72 69 61 62    6c 65 0a 60 67 70 74 65 6c 2d 2d 63 72 6f 77 64  | ts.in.the.variable.`gptel--crowd | 
| 7fb00 |  73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 27    2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20  | sourced-prompts',.which.see."... | 
| 7fb20 |  28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20    28 69 66 20 28 6e 6f 74 20 28 68 61 73 68 2d 74  | (interactive)...(if.(not.(hash-t | 
| 7fb40 |  61 62 6c 65 2d 65 6d 70 74 79 2d 70 20 28 67 70    74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65  | able-empty-p.(gptel--crowdsource | 
| 7fb60 |  64 2d 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20    20 20 20 28 6c 65 74 20 28 28 63 68 6f 69 63 65  | d-prompts))).......(let.((choice | 
| 7fb80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63    6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 0a 20  | ..............(completing-read.. | 
| 7fba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 69    63 6b 20 61 6e 64 20 65 64 69 74 20 70 72 6f 6d  | ............."Pick.and.edit.prom | 
| 7fbc0 |  70 74 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 74 72  | pt:."...............(lambda.(str | 
| 7fbe0 |  20 70 72 65 64 20 61 63 74 69 6f 6e 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69  | .pred.action).................(i | 
| 7fc00 |  66 20 28 65 71 20 61 63 74 69 6f 6e 20 27 6d 65    74 61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20  | f.(eq.action.'metadata)......... | 
| 7fc20 |  20 20 20 20 20 20 20 20 20 20 20 20 60 28 6d 65    74 61 64 61 74 61 0a 20 20 20 20 20 20 20 20 20  | ............`(metadata.......... | 
| 7fc40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 66    66 69 78 61 74 69 6f 6e 2d 66 75 6e 63 74 69 6f  | .............(affixation-functio | 
| 7fc60 |  6e 20 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62  | n..........................(lamb | 
| 7fc80 |  64 61 20 28 63 61 6e 64 73 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | da.(cands)...................... | 
| 7fca0 |  20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....(mapcar..................... | 
| 7fcc0 |  20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......(lambda.(c)............... | 
| 7fce0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c    69 73 74 20 63 20 22 22 0a 20 20 20 20 20 20 20  | ..............(list.c.""........ | 
| 7fd00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70  | ......................(concat.(p | 
| 7fd20 |  72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64    69 73 70 6c 61 79 20 27 28 73 70 61 63 65 20 3a  | ropertize.".".'display.'(space.: | 
| 7fd40 |  61 6c 69 67 6e 2d 74 6f 20 32 32 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | align-to.22))................... | 
| 7fd60 |  20 20 20 20 20 20 20 20 20 20 20 20 22 20 22 20    28 70 72 6f 70 65 72 74 69 7a 65 20 28 67 65 74  | ............".".(propertize.(get | 
| 7fd80 |  68 61 73 68 20 63 20 67 70 74 65 6c 2d 2d 63 72    6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70  | hash.c.gptel--crowdsourced-promp | 
| 7fda0 |  74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ts)............................. | 
| 7fdc0 |  20 20 20 27 66 61 63 65 20 27 63 6f 6d 70 6c 65    74 69 6f 6e 73 2d 61 6e 6e 6f 74 61 74 69 6f 6e  | ...'face.'completions-annotation | 
| 7fde0 |  73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s))))........................... | 
| 7fe00 |  63 61 6e 64 73 29 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d  | cands))))...................(com | 
| 7fe20 |  70 6c 65 74 65 2d 77 69 74 68 2d 61 63 74 69 6f    6e 20 61 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d  | plete-with-action.action.gptel-- | 
| 7fe40 |  63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f    6d 70 74 73 20 73 74 72 20 70 72 65 64 29 29 29  | crowdsourced-prompts.str.pred))) | 
| 7fe60 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e    69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20  | ...............nil.t)))......... | 
| 7fe80 |  28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 72 6f    6d 70 74 20 28 67 65 74 68 61 73 68 20 63 68 6f  | (when-let*.((prompt.(gethash.cho | 
| 7fea0 |  69 63 65 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64    73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29  | ice.gptel--crowdsourced-prompts) | 
| 7fec0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63  | ))...........(gptel--set-with-sc | 
| 7fee0 |  6f 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 27    67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65  | ope............'gptel--system-me | 
| 7ff00 |  73 73 61 67 65 20 70 72 6f 6d 70 74 20 67 70 74    65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c  | ssage.prompt.gptel--set-buffer-l | 
| 7ff20 |  6f 63 61 6c 6c 79 29 0a 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 2d 65 64 69 74 2d 64  | ocally)...........(gptel--edit-d | 
| 7ff40 |  69 72 65 63 74 69 76 65 20 27 67 70 74 65 6c 2d    2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29  | irective.'gptel--system-message) | 
| 7ff60 |  29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20    22 4e 6f 20 70 72 6f 6d 70 74 73 20 61 76 61 69  | )).....(message."No.prompts.avai | 
| 7ff80 |  6c 61 62 6c 65 2e 22 29 29 29 0a 0a 28 74 72 61    6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75  | lable.")))..(transient-define-su | 
| 7ffa0 |  66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66    69 78 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67  | ffix.gptel--suffix-system-messag | 
| 7ffc0 |  65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 61 6e    63 65 6c 29 0a 20 20 22 45 64 69 74 20 4c 4c 4d  | e.(&optional.cancel)..."Edit.LLM | 
| 7ffe0 |  20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e    0a 0a 43 41 4e 43 45 4c 20 69 73 20 75 73 65 64  | .system.message...CANCEL.is.used | 
| 80000 |  20 74 6f 20 61 76 6f 69 64 20 74 6f 75 63 68 69    6e 67 20 64 79 6e 61 6d 69 63 20 73 79 73 74 65  | .to.avoid.touching.dynamic.syste | 
| 80020 |  6d 20 6d 65 73 73 61 67 65 73 2c 0a 67 65 6e 65    72 61 74 65 64 20 66 72 6f 6d 20 66 75 6e 63 74  | m.messages,.generated.from.funct | 
| 80040 |  69 6f 6e 73 2e 22 0a 20 20 3a 74 72 61 6e 73 69    65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d  | ions."...:transient.'transient-- | 
| 80060 |  64 6f 2d 65 78 69 74 0a 20 20 3a 64 65 73 63 72    69 70 74 69 6f 6e 20 22 53 65 74 20 6f 72 20 65  | do-exit...:description."Set.or.e | 
| 80080 |  64 69 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61    67 65 22 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20  | dit.system.message"...:format.". | 
| 800a0 |  25 6b 20 20 20 25 64 22 0a 20 20 3a 6b 65 79 20    22 73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69  | %k...%d"...:key."s"...(interacti | 
| 800c0 |  76 65 0a 20 20 20 28 6c 69 73 74 20 28 61 6e 64    20 28 66 75 6e 63 74 69 6f 6e 70 20 67 70 74 65  | ve....(list.(and.(functionp.gpte | 
| 800e0 |  6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67    65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | l--system-message).............. | 
| 80100 |  20 28 6e 6f 74 20 28 79 2d 6f 72 2d 6e 2d 70 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(not.(y-or-n-p................. | 
| 80120 |  20 20 20 20 22 41 63 74 69 76 65 20 64 69 72 65    63 74 69 76 65 20 69 73 20 64 79 6e 61 6d 69 63  | ...."Active.directive.is.dynamic | 
| 80140 |  61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 3a 20    45 64 69 74 20 69 74 73 20 63 75 72 72 65 6e 74  | ally.generated:.Edit.its.current | 
| 80160 |  20 76 61 6c 75 65 20 69 6e 73 74 65 61 64 3f 22    29 29 29 29 29 0a 20 20 28 69 66 20 63 61 6e 63  | .value.instead?")))))...(if.canc | 
| 80180 |  65 6c 20 28 70 72 6f 67 6e 20 28 6d 65 73 73 61    67 65 20 22 45 64 69 74 20 63 61 6e 63 65 6c 65  | el.(progn.(message."Edit.cancele | 
| 801a0 |  64 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d 69 6e  | d").....................(call-in | 
| 801c0 |  74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70    74 65 6c 2d 6d 65 6e 75 29 29 0a 20 20 20 20 28  | teractively.#'gptel-menu)).....( | 
| 801e0 |  67 70 74 65 6c 2d 2d 65 64 69 74 2d 64 69 72 65    63 74 69 76 65 20 27 67 70 74 65 6c 2d 2d 73 79  | gptel--edit-directive.'gptel--sy | 
| 80200 |  73 74 65 6d 2d 6d 65 73 73 61 67 65 20 3a 73 65    74 75 70 20 23 27 61 63 74 69 76 61 74 65 2d 6d  | stem-message.:setup.#'activate-m | 
| 80220 |  61 72 6b 29 29 29 0a 0a 3b 3b 20 4d 41 59 42 45    3a 20 45 76 65 6e 74 75 61 6c 6c 79 20 63 61 6e  | ark)))..;;.MAYBE:.Eventually.can | 
| 80240 |  20 62 65 20 73 69 6d 70 6c 69 66 69 65 64 20 77    69 74 68 20 73 74 72 69 6e 67 2d 65 64 69 74 2c  | .be.simplified.with.string-edit, | 
| 80260 |  20 61 66 74 65 72 20 77 65 20 64 72 6f 70 20 73    75 70 70 6f 72 74 0a 3b 3b 20 66 6f 72 20 45 6d  | .after.we.drop.support.;;.for.Em | 
| 80280 |  61 63 73 20 32 38 2e 32 2e 0a 28 63 6c 2d 64 65    66 75 6e 20 67 70 74 65 6c 2d 2d 65 64 69 74 2d  | acs.28.2..(cl-defun.gptel--edit- | 
| 802a0 |  64 69 72 65 63 74 69 76 65 20 28 73 79 6d 20 26    6b 65 79 20 70 72 6f 6d 70 74 20 69 6e 69 74 69  | directive.(sym.&key.prompt.initi | 
| 802c0 |  61 6c 20 63 61 6c 6c 62 61 63 6b 20 73 65 74 75    70 20 62 75 66 66 65 72 29 0a 20 20 22 45 64 69  | al.callback.setup.buffer)..."Edi | 
| 802e0 |  74 20 61 20 67 70 74 65 6c 20 64 69 72 65 63 74    69 76 65 20 69 6e 20 61 20 64 65 64 69 63 61 74  | t.a.gptel.directive.in.a.dedicat | 
| 80300 |  65 64 20 62 75 66 66 65 72 2e 0a 0a 53 74 6f 72    65 20 74 68 65 20 72 65 73 75 6c 74 20 69 6e 20  | ed.buffer...Store.the.result.in. | 
| 80320 |  53 59 4d 2c 20 61 20 73 79 6d 62 6f 6c 2e 20 20    50 52 4f 4d 50 54 20 61 6e 64 20 49 4e 49 54 49  | SYM,.a.symbol...PROMPT.and.INITI | 
| 80340 |  41 4c 20 61 72 65 20 74 68 65 0a 68 65 61 64 69    6e 67 20 61 6e 64 20 69 6e 69 74 69 61 6c 20 74  | AL.are.the.heading.and.initial.t | 
| 80360 |  65 78 74 2e 20 20 49 66 20 43 41 4c 4c 42 41 43    4b 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  | ext...If.CALLBACK.is.specified,. | 
| 80380 |  69 74 20 69 73 20 72 75 6e 0a 61 66 74 65 72 20    65 78 69 74 69 6e 67 20 74 68 65 20 65 64 69 74  | it.is.run.after.exiting.the.edit | 
| 803a0 |  2e 20 20 49 66 20 53 45 54 55 50 20 69 73 20 61    20 66 75 6e 63 74 69 6f 6e 2c 20 72 75 6e 20 69  | ...If.SETUP.is.a.function,.run.i | 
| 803c0 |  74 20 61 66 74 65 72 0a 73 65 74 74 69 6e 67 20    75 70 20 74 68 65 20 62 75 66 66 65 72 2e 22 0a  | t.after.setting.up.the.buffer.". | 
| 803e0 |  20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65    6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28  | ..(declare.(indent.1))...(let.(( | 
| 80400 |  6f 72 69 67 2d 62 75 66 20 28 6f 72 20 62 75 66    66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66  | orig-buf.(or.buffer.(current-buf | 
| 80420 |  66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 28    6d 73 67 2d 73 74 61 72 74 20 28 6d 61 6b 65 2d  | fer))).........(msg-start.(make- | 
| 80440 |  6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20    20 28 64 69 72 65 63 74 69 76 65 20 28 73 79 6d  | marker)).........(directive.(sym | 
| 80460 |  62 6f 6c 2d 76 61 6c 75 65 20 73 79 6d 29 29 29    0a 20 20 20 20 28 77 68 65 6e 20 28 66 75 6e 63  | bol-value.sym))).....(when.(func | 
| 80480 |  74 69 6f 6e 70 20 64 69 72 65 63 74 69 76 65 29    0a 20 20 20 20 20 20 28 73 65 74 71 20 64 69 72  | tionp.directive).......(setq.dir | 
| 804a0 |  65 63 74 69 76 65 20 28 66 75 6e 63 61 6c 6c 20    64 69 72 65 63 74 69 76 65 29 29 29 0a 20 20 20  | ective.(funcall.directive))).... | 
| 804c0 |  20 3b 3b 20 54 4f 44 4f 3a 20 48 61 6e 64 6c 65    20 65 64 69 74 69 6e 67 20 6c 69 73 74 2d 6f 66  | .;;.TODO:.Handle.editing.list-of | 
| 804e0 |  2d 73 74 72 69 6e 67 73 20 64 69 72 65 63 74 69    76 65 73 0a 20 20 20 20 28 77 69 74 68 2d 63 75  | -strings.directives.....(with-cu | 
| 80500 |  72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65    74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20  | rrent-buffer.(get-buffer-create. | 
| 80520 |  22 2a 67 70 74 65 6c 2d 73 79 73 74 65 6d 2a 22    29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 69  | "*gptel-system*").......(let.((i | 
| 80540 |  6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79    20 74 29 20 28 69 6e 68 69 62 69 74 2d 6d 65 73  | nhibit-read-only.t).(inhibit-mes | 
| 80560 |  73 61 67 65 20 74 29 29 0a 20 20 20 20 20 20 20    20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a  | sage.t)).........(erase-buffer). | 
| 80580 |  20 20 20 20 20 20 20 20 28 74 65 78 74 2d 6d 6f    64 65 29 0a 20 20 20 20 20 20 20 20 28 76 69 73  | ........(text-mode).........(vis | 
| 805a0 |  75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29    0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68  | ual-line-mode.1).........(setq.h | 
| 805c0 |  65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | eader-line-format............... | 
| 805e0 |  28 63 6f 6e 63 61 74 20 22 45 64 69 74 20 79 6f    75 72 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20  | (concat."Edit.your.instructions. | 
| 80600 |  62 65 6c 6f 77 20 61 6e 64 20 70 72 65 73 73 20    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | below.and.press."............... | 
| 80620 |  20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74    69 7a 65 20 22 43 2d 63 20 43 2d 63 22 20 27 66  | ........(propertize."C-c.C-c".'f | 
| 80640 |  61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69    6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20  | ace.'help-key-binding).......... | 
| 80660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 77    68 65 6e 20 72 65 61 64 79 2c 20 6f 72 20 22 0a  | .............".when.ready,.or.". | 
| 80680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a  | ......................(propertiz | 
| 806a0 |  65 20 22 43 2d 63 20 43 2d 6b 22 20 27 66 61 63    65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64  | e."C-c.C-k".'face.'help-key-bind | 
| 806c0 |  69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 22 20 74 6f 20  | ing).......................".to. | 
| 806e0 |  61 62 6f 72 74 2e 22 29 29 0a 20 20 20 20 20 20    20 20 28 69 6e 73 65 72 74 0a 20 20 20 20 20 20  | abort.")).........(insert....... | 
| 80700 |  20 20 20 28 6f 72 20 70 72 6f 6d 70 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63  | ...(or.prompt..............(conc | 
| 80720 |  61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 23 20 45 78 61 6d 70 6c 65 3a 20 59 6f 75  | at..............."#.Example:.You | 
| 80740 |  20 61 72 65 20 61 20 68 65 6c 70 66 75 6c 20 61    73 73 69 73 74 61 6e 74 2e 20 41 6e 73 77 65 72  | .are.a.helpful.assistant..Answer | 
| 80760 |  20 61 73 20 63 6f 6e 63 69 73 65 6c 79 20 61 73    20 70 6f 73 73 69 62 6c 65 2e 5c 6e 22 0a 20 20  | .as.concisely.as.possible.\n"... | 
| 80780 |  20 20 20 20 20 20 20 20 20 20 20 20 22 23 20 45    78 61 6d 70 6c 65 3a 20 52 65 70 6c 79 20 6f 6e  | ............"#.Example:.Reply.on | 
| 807a0 |  6c 79 20 77 69 74 68 20 73 68 65 6c 6c 20 63 6f    6d 6d 61 6e 64 73 20 61 6e 64 20 6e 6f 20 70 72  | ly.with.shell.commands.and.no.pr | 
| 807c0 |  6f 73 65 2e 5c 6e 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c 65  | ose.\n"..............."#.Example | 
| 807e0 |  3a 20 59 6f 75 20 61 72 65 20 61 20 70 6f 65 74    2e 20 52 65 70 6c 79 20 6f 6e 6c 79 20 69 6e 20  | :.You.are.a.poet..Reply.only.in. | 
| 80800 |  76 65 72 73 65 2e 22 29 29 0a 20 20 20 20 20 20    20 20 20 22 5c 6e 5c 6e 22 29 0a 20 20 20 20 20  | verse.")).........."\n\n")...... | 
| 80820 |  20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f    70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20  | ...(add-text-properties......... | 
| 80840 |  20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f    69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 28 6c  | .(point-min).(point)..........(l | 
| 80860 |  69 73 74 20 27 72 65 61 64 2d 6f 6e 6c 79 20 74    20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63  | ist.'read-only.t.'face.'font-loc | 
| 80880 |  6b 2d 63 6f 6d 6d 65 6e 74 2d 66 61 63 65 20 27    66 72 6f 6e 74 2d 73 74 69 63 6b 79 20 74 20 27  | k-comment-face.'front-sticky.t.' | 
| 808a0 |  72 65 61 72 2d 6e 6f 6e 73 74 69 63 6b 79 20 74    29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d  | rear-nonsticky.t)).........(set- | 
| 808c0 |  6d 61 72 6b 65 72 20 6d 73 67 2d 73 74 61 72 74    20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20  | marker.msg-start.(point))....... | 
| 808e0 |  20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f    6e 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49  | ..(save-excursion...........;;.I | 
| 80900 |  66 20 69 74 27 73 20 61 20 6c 69 73 74 2c 20 69    6e 73 65 72 74 20 6f 6e 6c 79 20 74 68 65 20 73  | f.it's.a.list,.insert.only.the.s | 
| 80920 |  79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 70 61    72 74 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e  | ystem.message.part...........(in | 
| 80940 |  73 65 72 74 20 28 6f 72 20 69 6e 69 74 69 61 6c    20 28 63 61 72 2d 73 61 66 65 20 28 67 70 74 65  | sert.(or.initial.(car-safe.(gpte | 
| 80960 |  6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63 74 69    76 65 20 64 69 72 65 63 74 69 76 65 20 27 72 61  | l--parse-directive.directive.'ra | 
| 80980 |  77 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    28 70 75 73 68 2d 6d 61 72 6b 20 6e 69 6c 20 27  | w))))...........(push-mark.nil.' | 
| 809a0 |  6e 6f 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20    28 61 6e 64 20 28 66 75 6e 63 74 69 6f 6e 70 20  | nomsg)).........(and.(functionp. | 
| 809c0 |  73 65 74 75 70 29 20 28 66 75 6e 63 61 6c 6c 20    73 65 74 75 70 29 29 29 0a 20 20 20 20 20 20 28  | setup).(funcall.setup))).......( | 
| 809e0 |  64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 28    63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a  | display-buffer.(current-buffer). | 
| 80a00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 60 28 28 64 69 73 70 6c 61 79  | ......................`((display | 
| 80a20 |  2d 62 75 66 66 65 72 2d 62 65 6c 6f 77 2d 73 65    6c 65 63 74 65 64 29 0a 20 20 20 20 20 20 20 20  | -buffer-below-selected)......... | 
| 80a40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e  | ................(body-function.. | 
| 80a60 |  20 2c 23 27 73 65 6c 65 63 74 2d 77 69 6e 64 6f    77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .,#'select-window).............. | 
| 80a80 |  20 20 20 20 20 20 20 20 20 20 20 28 77 69 6e 64    6f 77 2d 68 65 69 67 68 74 20 2e 20 2c 23 27 66  | ...........(window-height...,#'f | 
| 80aa0 |  69 74 2d 77 69 6e 64 6f 77 2d 74 6f 2d 62 75 66    66 65 72 29 29 29 0a 20 20 20 20 20 20 28 6c 65  | it-window-to-buffer))).......(le | 
| 80ac0 |  74 20 28 28 71 75 69 74 2d 74 6f 2d 6d 65 6e 75    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c  | t.((quit-to-menu..............(l | 
| 80ae0 |  61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 22 43 61 6e 63 65 6c 20  | ambda.()................"Cancel. | 
| 80b00 |  73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 75    70 64 61 74 65 20 61 6e 64 20 72 65 74 75 72 6e  | system.message.update.and.return | 
| 80b20 |  2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a  | ."................(interactive). | 
| 80b40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    71 75 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20  | ...............(quit-window).... | 
| 80b60 |  20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c    65 73 73 20 28 6d 69 6e 69 62 75 66 66 65 72 70  | ............(unless.(minibufferp | 
| 80b80 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66  | )..................(display-buff | 
| 80ba0 |  65 72 20 6f 72 69 67 2d 62 75 66 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | er.orig-buf..................... | 
| 80bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28    64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 72  | .............`((display-buffer-r | 
| 80be0 |  65 75 73 65 2d 77 69 6e 64 6f 77 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | euse-window..................... | 
| 80c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 75  | ................display-buffer-u | 
| 80c20 |  73 65 2d 73 6f 6d 65 2d 77 69 6e 64 6f 77 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | se-some-window)................. | 
| 80c40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f  | ...................(body-functio | 
| 80c60 |  6e 20 2e 20 2c 23 27 73 65 6c 65 63 74 2d 77 69    6e 64 6f 77 29 29 29 29 0a 20 20 20 20 20 20 20  | n...,#'select-window))))........ | 
| 80c80 |  20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28    63 6f 6d 6d 61 6e 64 70 20 63 61 6c 6c 62 61 63  | ........(cond.((commandp.callbac | 
| 80ca0 |  6b 29 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63    74 69 76 65 6c 79 20 63 61 6c 6c 62 61 63 6b 29  | k).(call-interactively.callback) | 
| 80cc0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 28 66 75 6e 63 74 69 6f  | )......................((functio | 
| 80ce0 |  6e 70 20 63 61 6c 6c 62 61 63 6b 29 20 28 66 75    6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 29 29  | np.callback).(funcall.callback)) | 
| 80d00 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 28 75 73    65 2d 6c 6f 63 61 6c 2d 6d 61 70 0a 20 20 20 20  | )))).........(use-local-map..... | 
| 80d20 |  20 20 20 20 20 28 6d 61 6b 65 2d 63 6f 6d 70 6f    73 65 64 2d 6b 65 79 6d 61 70 0a 20 20 20 20 20  | .....(make-composed-keymap...... | 
| 80d40 |  20 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79    6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .....(define-keymap............. | 
| 80d60 |  22 43 2d 63 20 43 2d 63 22 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29  | "C-c.C-c".............(lambda.() | 
| 80d80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22    43 6f 6e 66 69 72 6d 20 73 79 73 74 65 6d 20 6d  | ..............."Confirm.system.m | 
| 80da0 |  65 73 73 61 67 65 20 61 6e 64 20 72 65 74 75 72    6e 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  | essage.and.return."............. | 
| 80dc0 |  20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c  | ..(interactive)...............(l | 
| 80de0 |  65 74 20 28 28 73 79 73 74 65 6d 2d 6d 65 73 73    61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  | et.((system-message............. | 
| 80e00 |  20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72    2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72  | .........(buffer-substring-no-pr | 
| 80e20 |  6f 70 65 72 74 69 65 73 20 6d 73 67 2d 73 74 61    72 74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29  | operties.msg-start.(point-max))) | 
| 80e40 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d  | ).................(with-current- | 
| 80e60 |  62 75 66 66 65 72 20 6f 72 69 67 2d 62 75 66 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | buffer.orig-buf................. | 
| 80e80 |  20 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69    74 68 2d 73 63 6f 70 65 20 73 79 6d 0a 20 20 20  | ..(gptel--set-with-scope.sym.... | 
| 80ea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 80ec0 |  20 20 20 20 20 20 28 69 66 20 28 63 64 72 2d 73    61 66 65 20 64 69 72 65 63 74 69 76 65 29 20 3b  | ......(if.(cdr-safe.directive).; | 
| 80ee0 |  48 61 6e 64 6c 65 20 6c 69 73 74 20 6f 66 20 73    74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20  | Handle.list.of.strings.......... | 
| 80f00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 80f20 |  20 20 20 20 28 70 72 6f 67 31 20 64 69 72 65 63    74 69 76 65 20 28 73 65 74 63 61 72 20 64 69 72  | ....(prog1.directive.(setcar.dir | 
| 80f40 |  65 63 74 69 76 65 20 73 79 73 74 65 6d 2d 6d 65    73 73 61 67 65 29 29 0a 20 20 20 20 20 20 20 20  | ective.system-message))......... | 
| 80f60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 80f80 |  20 20 20 73 79 73 74 65 6d 2d 6d 65 73 73 61 67    65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...system-message).............. | 
| 80fa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65  | ............................gpte | 
| 80fc0 |  6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f    63 61 6c 6c 79 29 29 29 0a 20 20 20 20 20 20 20  | l--set-buffer-locally)))........ | 
| 80fe0 |  20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20    71 75 69 74 2d 74 6f 2d 6d 65 6e 75 29 29 0a 20  | .......(funcall.quit-to-menu)).. | 
| 81000 |  20 20 20 20 20 20 20 20 20 20 20 22 43 2d 63 20    43 2d 6b 22 20 71 75 69 74 2d 74 6f 2d 6d 65 6e  | ..........."C-c.C-k".quit-to-men | 
| 81020 |  75 29 0a 20 20 20 20 20 20 20 20 20 20 74 65 78    74 2d 6d 6f 64 65 2d 6d 61 70 29 29 29 29 29 29  | u)...........text-mode-map)))))) | 
| 81040 |  0a 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 78 20 66    6f 72 20 64 69 73 70 6c 61 79 69 6e 67 20 61 6e  | ..;;.**.Suffix.for.displaying.an | 
| 81060 |  64 20 72 65 6d 6f 76 69 6e 67 20 63 6f 6e 74 65    78 74 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63  | d.removing.context.(declare-func | 
| 81080 |  74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 2d 62 75 66 66 65 72 2d 73 65 74 75 70  | tion.gptel-context--buffer-setup | 
| 810a0 |  20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22    29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74  | ."gptel-context").(declare-funct | 
| 810c0 |  69 6f 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78    74 2d 2d 63 6f 6c 6c 65 63 74 20 22 67 70 74 65  | ion.gptel-context--collect."gpte | 
| 810e0 |  6c 2d 63 6f 6e 74 65 78 74 22 29 0a 0a 28 74 72    61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73  | l-context")..(transient-define-s | 
| 81100 |  75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66    66 69 78 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66  | uffix.gptel--suffix-context-buff | 
| 81120 |  65 72 20 28 29 0a 20 20 22 44 69 73 70 6c 61 79    20 61 6c 6c 20 63 6f 6e 74 65 78 74 73 20 66 72  | er.()..."Display.all.contexts.fr | 
| 81140 |  6f 6d 20 61 6c 6c 20 62 75 66 66 65 72 73 20 26    20 66 69 6c 65 73 2e 22 0a 20 20 3a 74 72 61 6e  | om.all.buffers.&.files."...:tran | 
| 81160 |  73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74    2d 2d 64 6f 2d 65 78 69 74 0a 20 20 3a 6b 65 79  | sient.'transient--do-exit...:key | 
| 81180 |  20 22 20 43 22 0a 20 20 3a 69 66 20 28 6c 61 6d    62 64 61 20 28 29 20 67 70 74 65 6c 2d 63 6f 6e  | .".C"...:if.(lambda.().gptel-con | 
| 811a0 |  74 65 78 74 2d 2d 61 6c 69 73 74 29 0a 20 20 3a    64 65 73 63 72 69 70 74 69 6f 6e 20 22 49 6e 73  | text--alist)...:description."Ins | 
| 811c0 |  70 65 63 74 20 63 6f 6e 74 65 78 74 22 0a 20 20    28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20  | pect.context"...(interactive)... | 
| 811e0 |  28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d    62 75 66 66 65 72 2d 73 65 74 75 70 29 29 0a 0a  | (gptel-context--buffer-setup)).. | 
| 81200 |  28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d    74 72 61 6e 73 69 65 6e 74 29 0a 3b 3b 3b 20 67  | (provide.'gptel-transient).;;;.g | 
| 81220 |  70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 65    6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b 20  | ptel-transient.el.ends.here..;;. | 
| 81240 |  4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a    0a 3b 3b 20 6f 75 74 6c 69 6e 65 2d 72 65 67 65  | Local.Variables:.;;.outline-rege | 
| 81260 |  78 70 3a 20 22 5e 3b 3b 20 5c 5c 2a 2b 22 0a 3b    3b 20 65 76 61 6c 3a 20 28 6f 75 74 6c 69 6e 65  | xp:."^;;.\\*+".;;.eval:.(outline | 
| 81280 |  2d 6d 69 6e 6f 72 2d 6d 6f 64 65 20 31 29 0a 3b    3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00  | -minor-mode.1).;;.End:.......... | 
| 812a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 812c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 812e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81300 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81320 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 813a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 813c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 813e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81400 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 6f 70 65 6e 61 69 2d 65 78 74 72 61  | gptel-0.9.8.5/gptel-openai-extra | 
| 81420 |  73 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | s.el............................ | 
| 81440 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81460 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 81480 |  30 30 34 32 32 31 34 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 35 36 36 32 00 20 30 00 00 00  | 0042214.00000000000.015662..0... | 
| 814a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 814c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 814e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81500 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 81520 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 81540 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81560 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81580 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 815a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 815c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 815e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 81600 |  3b 3b 3b 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69    2d 65 78 74 72 61 73 2e 65 6c 20 2d 2d 2d 20 45  | ;;;.gptel-openai-extras.el.---.E | 
| 81620 |  78 74 65 6e 73 69 6f 6e 73 20 74 6f 20 74 68 65    20 4f 70 65 6e 41 49 20 41 50 49 20 2d 2a 2d 20  | xtensions.to.the.OpenAI.API.-*-. | 
| 81640 |  6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a    20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79  | lexical-binding:.t;.-*-..;;.Copy | 
| 81660 |  72 69 67 68 74 20 28 43 29 20 32 30 32 33 2d 32    30 32 35 20 20 4b 61 72 74 68 69 6b 20 43 68 69  | right.(C).2023-2025..Karthik.Chi | 
| 81680 |  6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b 20 41 75 74    68 6f 72 73 3a 20 4b 61 72 74 68 69 6b 20 43 68  | kmagalur..;;.Authors:.Karthik.Ch | 
| 816a0 |  69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 72 74 68    69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d  | ikmagalur.<karthikchikmagalur@gm | 
| 816c0 |  61 69 6c 2e 63 6f 6d 3e 20 61 6e 64 20 70 69 72    6d 69 6e 6a 0a 0a 3b 3b 20 54 68 69 73 20 70 72  | ail.com>.and.pirminj..;;.This.pr | 
| 816e0 |  6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f    66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20  | ogram.is.free.software;.you.can. | 
| 81700 |  72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20    61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b  | redistribute.it.and/or.modify.;; | 
| 81720 |  20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65    72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47  | .it.under.the.terms.of.the.GNU.G | 
| 81740 |  65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69    63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68  | eneral.Public.License.as.publish | 
| 81760 |  65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65    65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64  | ed.by.;;.the.Free.Software.Found | 
| 81780 |  61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65    72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c  | ation,.either.version.3.of.the.L | 
| 817a0 |  69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61    74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61  | icense,.or.;;.(at.your.option).a | 
| 817c0 |  6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e    2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72  | ny.later.version...;;.This.progr | 
| 817e0 |  61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65    64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68  | am.is.distributed.in.the.hope.th | 
| 81800 |  61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73    65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54  | at.it.will.be.useful,.;;.but.WIT | 
| 81820 |  48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54    59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20  | HOUT.ANY.WARRANTY;.without.even. | 
| 81840 |  74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72    61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48  | the.implied.warranty.of.;;.MERCH | 
| 81860 |  41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49    54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54  | ANTABILITY.or.FITNESS.FOR.A.PART | 
| 81880 |  49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20    20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20  | ICULAR.PURPOSE...See.the.;;.GNU. | 
| 818a0 |  47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c    69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20  | General.Public.License.for.more. | 
| 818c0 |  64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75    20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63  | details...;;.You.should.have.rec | 
| 818e0 |  65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20    74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20  | eived.a.copy.of.the.GNU.General. | 
| 81900 |  50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b    3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69  | Public.License.;;.along.with.thi | 
| 81920 |  73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e    6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f  | s.program...If.not,.see.<https:/ | 
| 81940 |  2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63    65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f  | /www.gnu.org/licenses/>...;;;.Co | 
| 81960 |  6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68    69 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70  | mmentary:..;;.This.file.adds.sup | 
| 81980 |  70 6f 72 74 20 66 6f 72 20 50 72 69 76 61 74 65    67 70 74 27 73 20 4d 65 73 73 61 67 65 73 20 41  | port.for.Privategpt's.Messages.A | 
| 819a0 |  50 49 20 61 6e 64 0a 3b 3b 20 50 65 72 70 6c 65    78 69 74 79 27 73 20 43 69 74 61 74 69 6f 6e 73  | PI.and.;;.Perplexity's.Citations | 
| 819c0 |  20 66 65 61 74 75 72 65 20 74 6f 20 67 70 74 65    6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65  | .feature.to.gptel..;;;.Code:.(re | 
| 819e0 |  71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69    63 29 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f  | quire.'cl-generic).(eval-when-co | 
| 81a00 |  6d 70 69 6c 65 0a 20 20 28 72 65 71 75 69 72 65    20 27 63 6c 2d 6c 69 62 29 29 0a 28 72 65 71 75  | mpile...(require.'cl-lib)).(requ | 
| 81a20 |  69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75 69    72 65 20 27 67 70 74 65 6c 29 0a 0a 28 64 65 66  | ire.'map).(require.'gptel)..(def | 
| 81a40 |  76 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d    74 79 70 65 29 0a 0a 28 64 65 63 6c 61 72 65 2d  | var.json-object-type)..(declare- | 
| 81a60 |  66 75 6e 63 74 69 6f 6e 20 70 72 6f 70 2d 6d 61    74 63 68 2d 76 61 6c 75 65 20 22 74 65 78 74 2d  | function.prop-match-value."text- | 
| 81a80 |  70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22    29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74  | property-search").(declare-funct | 
| 81aa0 |  69 6f 6e 20 74 65 78 74 2d 70 72 6f 70 65 72 74    79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72  | ion.text-property-search-backwar | 
| 81ac0 |  64 20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79    2d 73 65 61 72 63 68 22 29 0a 28 64 65 63 6c 61  | d."text-property-search").(decla | 
| 81ae0 |  72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e    2d 72 65 61 64 20 22 6a 73 6f 6e 22 20 28 29 29  | re-function.json-read."json".()) | 
| 81b00 |  0a 0a 0a 0a 3b 3b 3b 20 50 72 69 76 61 74 65 67    70 74 20 28 4d 65 73 73 61 67 65 73 20 41 50 49  | ....;;;.Privategpt.(Messages.API | 
| 81b20 |  29 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20    28 67 70 74 65 6c 2d 70 72 69 76 61 74 65 67 70  | ).(cl-defstruct.(gptel-privategp | 
| 81b40 |  74 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20    67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 70 72 69 76  | t.(:constructor.gptel--make-priv | 
| 81b60 |  61 74 65 67 70 74 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ategpt)......................... | 
| 81b80 |  20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20    6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .......(:copier.nil)............ | 
| 81ba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70  | ....................(:include.gp | 
| 81bc0 |  74 65 6c 2d 6f 70 65 6e 61 69 29 29 0a 20 20 63    6f 6e 74 65 78 74 20 73 6f 75 72 63 65 73 29 0a  | tel-openai))...context.sources). | 
| 81be0 |  0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 70    72 69 76 61 74 65 67 70 74 2d 70 61 72 73 65 2d  | .(defun.gptel--privategpt-parse- | 
| 81c00 |  73 6f 75 72 63 65 73 20 28 72 65 73 70 6f 6e 73    65 29 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 77 69  | sources.(response)...(cl-loop.wi | 
| 81c20 |  74 68 20 73 6f 75 72 63 65 2d 61 6c 69 73 74 0a    20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73  | th.source-alist............for.s | 
| 81c40 |  6f 75 72 63 65 20 61 63 72 6f 73 73 20 28 6d 61    70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73  | ource.across.(map-nested-elt.res | 
| 81c60 |  70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63 65 73    20 30 20 3a 73 6f 75 72 63 65 73 29 29 0a 20 20  | ponse.'(:choices.0.:sources))... | 
| 81c80 |  20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 61 6d    65 20 3d 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d  | .........for.name.=.(map-nested- | 
| 81ca0 |  65 6c 74 20 73 6f 75 72 63 65 20 27 28 3a 64 6f    63 75 6d 65 6e 74 20 3a 64 6f 63 5f 6d 65 74 61  | elt.source.'(:document.:doc_meta | 
| 81cc0 |  64 61 74 61 20 3a 66 69 6c 65 5f 6e 61 6d 65 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  | data.:file_name))............for | 
| 81ce0 |  20 70 61 67 65 20 3d 20 28 6d 61 70 2d 6e 65 73    74 65 64 2d 65 6c 74 20 73 6f 75 72 63 65 20 27  | .page.=.(map-nested-elt.source.' | 
| 81d00 |  28 3a 64 6f 63 75 6d 65 6e 74 20 3a 64 6f 63 5f    6d 65 74 61 64 61 74 61 20 3a 70 61 67 65 5f 6c  | (:document.:doc_metadata.:page_l | 
| 81d20 |  61 62 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 64 6f 20 28 70 75 73 68 20 70 61 67 65 20  | abel))............do.(push.page. | 
| 81d40 |  28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20    73 6f 75 72 63 65 2d 61 6c 69 73 74 20 6e 69 6c  | (alist-get.name.source-alist.nil | 
| 81d60 |  20 6e 69 6c 20 23 27 65 71 75 61 6c 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c  | .nil.#'equal))............finall | 
| 81d80 |  79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20    20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72  | y.return............(cl-loop.for | 
| 81da0 |  20 28 66 69 6c 65 2d 6e 61 6d 65 20 2e 20 66 69    6c 65 2d 70 61 67 65 73 29 20 69 6e 20 73 6f 75  | .(file-name...file-pages).in.sou | 
| 81dc0 |  72 63 65 2d 61 6c 69 73 74 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  | rce-alist.....................fo | 
| 81de0 |  72 20 70 61 67 65 73 20 3d 20 28 64 65 6c 65 74    65 2d 64 75 70 73 20 28 64 65 6c 71 20 6e 69 6c  | r.pages.=.(delete-dups.(delq.nil | 
| 81e00 |  20 66 69 6c 65 2d 70 61 67 65 73 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .file-pages))................... | 
| 81e20 |  20 20 69 66 20 70 61 67 65 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  | ..if.pages.....................c | 
| 81e40 |  6f 6c 6c 65 63 74 20 28 66 6f 72 6d 61 74 20 22    2d 20 25 73 20 28 70 61 67 65 20 25 73 29 22 20  | ollect.(format."-.%s.(page.%s)". | 
| 81e60 |  66 69 6c 65 2d 6e 61 6d 65 20 28 6d 61 70 63 6f    6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20  | file-name.(mapconcat.#'identity. | 
| 81e80 |  70 61 67 65 73 20 22 2c 20 22 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | pages.",.")).................... | 
| 81ea0 |  20 69 6e 74 6f 20 73 6f 75 72 63 65 2d 69 74 65    6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .into.source-items.............. | 
| 81ec0 |  20 20 20 20 20 20 20 65 6c 73 65 20 63 6f 6c 6c    65 63 74 20 28 66 6f 72 6d 61 74 20 22 2d 20 25  | .......else.collect.(format."-.% | 
| 81ee0 |  73 22 20 66 69 6c 65 2d 6e 61 6d 65 29 20 69 6e    74 6f 20 73 6f 75 72 63 65 2d 69 74 65 6d 73 0a  | s".file-name).into.source-items. | 
| 81f00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75  | ....................finally.retu | 
| 81f20 |  72 6e 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27    69 64 65 6e 74 69 74 79 20 28 63 6f 6e 73 20 22  | rn.(mapconcat.#'identity.(cons." | 
| 81f40 |  5c 6e 5c 6e 53 6f 75 72 63 65 73 3a 22 20 73 6f    75 72 63 65 2d 69 74 65 6d 73 29 20 22 5c 6e 22  | \n\nSources:".source-items)."\n" | 
| 81f60 |  29 29 29 29 0a 0a 3b 3b 20 46 49 58 4d 45 28 74    6f 6f 6c 29 20 61 64 64 20 74 6f 6f 6c 20 75 73  | ))))..;;.FIXME(tool).add.tool.us | 
| 81f80 |  65 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20    67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73  | e.(cl-defmethod.gptel-curl--pars | 
| 81fa0 |  65 2d 73 74 72 65 61 6d 20 28 28 5f 62 61 63 6b    65 6e 64 20 67 70 74 65 6c 2d 70 72 69 76 61 74  | e-stream.((_backend.gptel-privat | 
| 81fc0 |  65 67 70 74 29 20 69 6e 66 6f 29 0a 20 20 28 6c    65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74  | egpt).info)...(let*.((content-st | 
| 81fe0 |  72 73 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74    69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20  | rs)).....(condition-case.nil.... | 
| 82000 |  20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d    73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22  | .....(while.(re-search-forward." | 
| 82020 |  5e 64 61 74 61 3a 22 20 6e 69 6c 20 74 29 0a 20    20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d  | ^data:".nil.t)...........(save-m | 
| 82040 |  61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 69 66 20 28 6c 6f 6f 6b 69  | atch-data.............(if.(looki | 
| 82060 |  6e 67 2d 61 74 20 22 20 2a 5c 5c 5b 44 4f 4e 45    5c 5c 5d 22 29 0a 20 20 20 20 20 20 20 20 20 20  | ng-at.".*\\[DONE\\]")........... | 
| 82080 |  20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a    20 28 28 73 6f 75 72 63 65 73 2d 73 74 72 69 6e  | ......(when-let*.((sources-strin | 
| 820a0 |  67 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66    6f 20 3a 73 6f 75 72 63 65 73 29 29 29 0a 20 20  | g.(plist-get.info.:sources)))... | 
| 820c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 75 73 68 20 73 6f 75 72 63 65 73 2d 73 74  | ................(push.sources-st | 
| 820e0 |  72 69 6e 67 20 63 6f 6e 74 65 6e 74 2d 73 74 72    73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ring.content-strs))............. | 
| 82100 |  20 20 28 6c 65 74 20 28 28 72 65 73 70 6f 6e 73    65 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72  | ..(let.((response.(gptel--json-r | 
| 82120 |  65 61 64 29 29 29 0a 09 09 28 75 6e 6c 65 73 73    20 28 6f 72 20 28 70 6c 69 73 74 2d 67 65 74 20  | ead)))...(unless.(or.(plist-get. | 
| 82140 |  69 6e 66 6f 20 3a 73 6f 75 72 63 65 73 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | info.:sources).................. | 
| 82160 |  20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20    28 67 70 74 65 6c 2d 70 72 69 76 61 74 65 67 70  | ...........(not.(gptel-privategp | 
| 82180 |  74 2d 73 6f 75 72 63 65 73 20 28 70 6c 69 73 74    2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63 6b 65  | t-sources.(plist-get.info.:backe | 
| 821a0 |  6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d  | nd))))...................(plist- | 
| 821c0 |  70 75 74 20 69 6e 66 6f 20 3a 73 6f 75 72 63 65    73 20 28 67 70 74 65 6c 2d 2d 70 72 69 76 61 74  | put.info.:sources.(gptel--privat | 
| 821e0 |  65 67 70 74 2d 70 61 72 73 65 2d 73 6f 75 72 63    65 73 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 09  | egpt-parse-sources.response))).. | 
| 82200 |  09 28 6c 65 74 2a 20 28 28 64 65 6c 74 61 20 28    6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72  | .(let*.((delta.(map-nested-elt.r | 
| 82220 |  65 73 70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63    65 73 20 30 20 3a 64 65 6c 74 61 29 29 29 0a 09  | esponse.'(:choices.0.:delta))).. | 
| 82240 |  09 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74    20 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74  | ........(content.(plist-get.delt | 
| 82260 |  61 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 09 09    20 20 28 70 75 73 68 20 63 6f 6e 74 65 6e 74 20  | a.:content))).....(push.content. | 
| 82280 |  63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29    29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a  | content-strs)))))).......(error. | 
| 822a0 |  20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61    72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69  | .......(goto-char.(match-beginni | 
| 822c0 |  6e 67 20 30 29 29 29 29 0a 20 20 20 20 28 61 70    70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72  | ng.0)))).....(apply.#'concat.(nr | 
| 822e0 |  65 76 65 72 73 65 20 63 6f 6e 74 65 6e 74 2d 73    74 72 73 29 29 29 29 0a 0a 3b 3b 20 46 49 58 4d  | everse.content-strs))))..;;.FIXM | 
| 82300 |  45 28 74 6f 6f 6c 29 20 61 64 64 20 74 6f 6f 6c    20 75 73 65 0a 28 63 6c 2d 64 65 66 6d 65 74 68  | E(tool).add.tool.use.(cl-defmeth | 
| 82320 |  6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d    72 65 73 70 6f 6e 73 65 20 28 28 5f 62 61 63 6b  | od.gptel--parse-response.((_back | 
| 82340 |  65 6e 64 20 67 70 74 65 6c 2d 70 72 69 76 61 74    65 67 70 74 29 20 72 65 73 70 6f 6e 73 65 20 69  | end.gptel-privategpt).response.i | 
| 82360 |  6e 66 6f 29 0a 20 20 28 6c 65 74 20 28 28 72 65    73 70 6f 6e 73 65 2d 73 74 72 69 6e 67 20 28 6d  | nfo)...(let.((response-string.(m | 
| 82380 |  61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65    73 70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63 65  | ap-nested-elt.response.'(:choice | 
| 823a0 |  73 20 30 20 3a 6d 65 73 73 61 67 65 20 3a 63 6f    6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20  | s.0.:message.:content)))........ | 
| 823c0 |  20 28 73 6f 75 72 63 65 73 2d 73 74 72 69 6e 67    20 28 61 6e 64 20 28 67 70 74 65 6c 2d 70 72 69  | .(sources-string.(and.(gptel-pri | 
| 823e0 |  76 61 74 65 67 70 74 2d 73 6f 75 72 63 65 73 20    28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20  | vategpt-sources.(plist-get.info. | 
| 82400 |  3a 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :backend))...................... | 
| 82420 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d    70 72 69 76 61 74 65 67 70 74 2d 70 61 72 73 65  | ........(gptel--privategpt-parse | 
| 82440 |  2d 73 6f 75 72 63 65 73 20 72 65 73 70 6f 6e 73    65 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61  | -sources.response)))).....(conca | 
| 82460 |  74 20 72 65 73 70 6f 6e 73 65 2d 73 74 72 69 6e    67 20 73 6f 75 72 63 65 73 2d 73 74 72 69 6e 67  | t.response-string.sources-string | 
| 82480 |  29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68    6f 64 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73  | )))..(cl-defmethod.gptel--reques | 
| 824a0 |  74 2d 64 61 74 61 20 28 28 5f 62 61 63 6b 65 6e    64 20 67 70 74 65 6c 2d 70 72 69 76 61 74 65 67  | t-data.((_backend.gptel-privateg | 
| 824c0 |  70 74 29 20 70 72 6f 6d 70 74 73 29 0a 20 20 22    4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d  | pt).prompts)..."JSON.encode.PROM | 
| 824e0 |  50 54 53 20 66 6f 72 20 73 65 6e 64 69 6e 67 20    74 6f 20 43 68 61 74 47 50 54 2e 22 0a 20 20 28  | PTS.for.sending.to.ChatGPT."...( | 
| 82500 |  6c 65 74 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c    69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a  | let.((prompts-plist..........`(: | 
| 82520 |  6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d    6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d  | model.,(gptel--model-name.gptel- | 
| 82540 |  6d 6f 64 65 6c 29 0a 09 20 20 20 3a 6d 65 73 73    61 67 65 73 20 5b 2c 40 70 72 6f 6d 70 74 73 5d  | model).....:messages.[,@prompts] | 
| 82560 |  0a 09 20 20 20 3a 75 73 65 5f 63 6f 6e 74 65 78    74 20 2c 28 6f 72 20 28 67 70 74 65 6c 2d 70 72  | .....:use_context.,(or.(gptel-pr | 
| 82580 |  69 76 61 74 65 67 70 74 2d 63 6f 6e 74 65 78 74    20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20  | ivategpt-context.gptel-backend). | 
| 825a0 |  3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 09 20 20    20 3a 69 6e 63 6c 75 64 65 5f 73 6f 75 72 63 65  | :json-false).....:include_source | 
| 825c0 |  73 20 2c 28 6f 72 20 28 67 70 74 65 6c 2d 70 72    69 76 61 74 65 67 70 74 2d 73 6f 75 72 63 65 73  | s.,(or.(gptel-privategpt-sources | 
| 825e0 |  20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20    3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20  | .gptel-backend).:json-false).... | 
| 82600 |  20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20    2c 28 6f 72 20 67 70 74 65 6c 2d 73 74 72 65 61  | ........:stream.,(or.gptel-strea | 
| 82620 |  6d 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 29    29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64  | m.:json-false)))).....(when.(and | 
| 82640 |  20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d    65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20  | .gptel--system-message.......... | 
| 82660 |  20 20 20 20 20 20 28 6e 6f 74 20 28 67 70 74 65    6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65  | ......(not.(gptel--model-capable | 
| 82680 |  2d 70 20 27 6e 6f 73 79 73 74 65 6d 29 29 29 0a    20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74  | -p.'nosystem))).......(plist-put | 
| 826a0 |  20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a    73 79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 73 79  | .prompts-plist.:system.gptel--sy | 
| 826c0 |  73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 0a 20    20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74  | stem-message)).....(when.gptel-t | 
| 826e0 |  65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20    20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d  | emperature.......(plist-put.prom | 
| 82700 |  70 74 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65    72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 65 6d  | pts-plist.:temperature.gptel-tem | 
| 82720 |  70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 28    77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74  | perature)).....(when.gptel-max-t | 
| 82740 |  6f 6b 65 6e 73 0a 20 20 20 20 20 20 28 70 6c 69    73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70  | okens.......(plist-put.prompts-p | 
| 82760 |  6c 69 73 74 20 3a 6d 61 78 5f 74 6f 6b 65 6e 73    20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e  | list.:max_tokens.gptel-max-token | 
| 82780 |  73 29 29 0a 20 20 20 20 3b 3b 20 4d 65 72 67 65    20 72 65 71 75 65 73 74 20 70 61 72 61 6d 73 20  | s)).....;;.Merge.request.params. | 
| 827a0 |  77 69 74 68 20 6d 6f 64 65 6c 20 61 6e 64 20 62    61 63 6b 65 6e 64 20 70 61 72 61 6d 73 2e 0a 20  | with.model.and.backend.params... | 
| 827c0 |  20 20 20 28 67 70 74 65 6c 2d 2d 6d 65 72 67 65    2d 70 6c 69 73 74 73 0a 20 20 20 20 20 70 72 6f  | ...(gptel--merge-plists......pro | 
| 827e0 |  6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20    28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 72  | mpts-plist......(gptel-backend-r | 
| 82800 |  65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 67 70    74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20  | equest-params.gptel-backend).... | 
| 82820 |  20 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d    72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20 20  | ..(gptel--model-request-params.. | 
| 82840 |  67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 29 29 0a    0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64  | gptel-model))))...;;;###autoload | 
| 82860 |  0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c    2d 6d 61 6b 65 2d 70 72 69 76 61 74 65 67 70 74  | .(cl-defun.gptel-make-privategpt | 
| 82880 |  0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20    63 75 72 6c 2d 61 72 67 73 20 73 74 72 65 61 6d  | .....(name.&key.curl-args.stream | 
| 828a0 |  20 6b 65 79 20 72 65 71 75 65 73 74 2d 70 61 72    61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 28 68  | .key.request-params...........(h | 
| 828c0 |  65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20    20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 65  | eader............(lambda.().(whe | 
| 828e0 |  6e 2d 6c 65 74 2a 20 28 28 6b 65 79 20 28 67 70    74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79  | n-let*.((key.(gptel--get-api-key | 
| 82900 |  29 29 29 0a 09 09 20 20 20 60 28 28 22 41 75 74    68 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28  | )))......`(("Authorization"...,( | 
| 82920 |  63 6f 6e 63 61 74 20 22 42 65 61 72 65 72 20 22    20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20  | concat."Bearer.".key))))))...... | 
| 82940 |  20 20 20 20 20 28 68 6f 73 74 20 22 6c 6f 63 61    6c 68 6f 73 74 3a 38 30 30 31 22 29 0a 20 20 20  | .....(host."localhost:8001").... | 
| 82960 |  20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c    20 22 68 74 74 70 22 29 0a 09 20 20 28 6d 6f 64  | .......(protocol."http")....(mod | 
| 82980 |  65 6c 73 20 27 28 70 72 69 76 61 74 65 2d 67 70    74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65  | els.'(private-gpt))...........(e | 
| 829a0 |  6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61    74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a  | ndpoint."/v1/chat/completions"). | 
| 829c0 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65    78 74 20 74 29 20 28 73 6f 75 72 63 65 73 20 74  | ..........(context.t).(sources.t | 
| 829e0 |  29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61    6e 20 50 72 69 76 61 74 65 67 70 74 20 41 50 49  | ))..."Register.an.Privategpt.API | 
| 82a00 |  2d 63 6f 6d 70 61 74 69 62 6c 65 20 62 61 63 6b    65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69  | -compatible.backend.for.gptel.wi | 
| 82a20 |  74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72    64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55  | th.NAME...Keyword.arguments:..CU | 
| 82a40 |  52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61    6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20  | RL-ARGS.(optional).is.a.list.of. | 
| 82a60 |  61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20    61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54  | additional.Curl.arguments...HOST | 
| 82a80 |  20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74    68 65 20 41 50 49 20 68 6f 73 74 2c 20 5c 22 61  | .(optional).is.the.API.host,.\"a | 
| 82aa0 |  70 69 2e 70 72 69 76 61 74 65 67 70 74 2e 63 6f    6d 5c 22 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  | pi.privategpt.com\".by.default.. | 
| 82ac0 |  0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73    74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d  | .MODELS.is.a.list.of.available.m | 
| 82ae0 |  6f 64 65 6c 20 6e 61 6d 65 73 2e 0a 0a 53 54 52    45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e  | odel.names...STREAM.is.a.boolean | 
| 82b00 |  20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61    6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20  | .to.toggle.streaming.responses,. | 
| 82b20 |  64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73    65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70  | defaults.to.false...PROTOCOL.(op | 
| 82b40 |  74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69 65    73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20  | tional).specifies.the.protocol,. | 
| 82b60 |  68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c 74    2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 74  | https.by.default...ENDPOINT.(opt | 
| 82b80 |  69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50    49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63  | ional).is.the.API.endpoint.for.c | 
| 82ba0 |  6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66 61    75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31 2f 6d 65  | ompletions,.defaults.to.\"/v1/me | 
| 82bc0 |  73 73 61 67 65 73 5c 22 2e 0a 0a 48 45 41 44 45    52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20  | ssages\"...HEADER.(optional).is. | 
| 82be0 |  66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68    65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77  | for.additional.headers.to.send.w | 
| 82c00 |  69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74    2e 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61  | ith.each.request..It.should.be.a | 
| 82c20 |  6e 20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e    63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e  | n.alist.or.a.function.that.retun | 
| 82c40 |  73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65    3a 0a 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79  | s.an.alist,.like:.((\"Content-Ty | 
| 82c60 |  70 65 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61    74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b  | pe\"...\"application/json\"))..K | 
| 82c80 |  45 59 20 69 73 20 61 20 76 61 72 69 61 62 6c 65    20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20  | EY.is.a.variable.whose.value.is. | 
| 82ca0 |  74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 20    66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a 72 65  | the.API.key,.or.function.that.re | 
| 82cc0 |  74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a    43 4f 4e 54 45 58 54 20 61 6e 64 20 53 4f 55 52  | turns.the.key...CONTEXT.and.SOUR | 
| 82ce0 |  43 45 53 3a 20 69 66 20 74 72 75 65 20 28 74 68    65 20 64 65 66 61 75 6c 74 29 2c 20 75 73 65 20  | CES:.if.true.(the.default),.use. | 
| 82d00 |  61 76 61 69 6c 61 62 6c 65 20 63 6f 6e 74 65 78    74 0a 61 6e 64 20 70 72 6f 76 69 64 65 20 73 6f  | available.context.and.provide.so | 
| 82d20 |  75 72 63 65 73 20 75 73 65 64 20 62 79 20 74 68    65 20 6d 6f 64 65 6c 20 74 6f 20 67 65 6e 65 72  | urces.used.by.the.model.to.gener | 
| 82d40 |  61 74 65 20 74 68 65 20 72 65 73 70 6f 6e 73 65    2e 0a 0a 52 45 51 55 45 53 54 2d 50 41 52 41 4d  | ate.the.response...REQUEST-PARAM | 
| 82d60 |  53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20    61 20 70 6c 69 73 74 20 6f 66 20 61 64 64 69 74  | S.(optional).is.a.plist.of.addit | 
| 82d80 |  69 6f 6e 61 6c 20 48 54 54 50 20 72 65 71 75 65    73 74 0a 70 61 72 61 6d 65 74 65 72 73 20 28 61  | ional.HTTP.request.parameters.(a | 
| 82da0 |  73 20 70 6c 69 73 74 20 6b 65 79 73 29 20 61 6e    64 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74  | s.plist.keys).and.values.support | 
| 82dc0 |  65 64 20 62 79 20 74 68 65 20 41 50 49 2e 20 20    55 73 65 0a 74 68 65 73 65 20 74 6f 20 73 65 74  | ed.by.the.API...Use.these.to.set | 
| 82de0 |  20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74    20 67 70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20  | .parameters.that.gptel.does.not. | 
| 82e00 |  70 72 6f 76 69 64 65 20 75 73 65 72 20 6f 70 74    69 6f 6e 73 0a 66 6f 72 2e 22 0a 20 20 28 64 65  | provide.user.options.for."...(de | 
| 82e20 |  63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29    29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65  | clare.(indent.1))...(let.((backe | 
| 82e40 |  6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d    70 72 69 76 61 74 65 67 70 74 0a 20 20 20 20 20  | nd.(gptel--make-privategpt...... | 
| 82e60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75    72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67  | .............:curl-args.curl-arg | 
| 82e80 |  73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20  | s...................:name.name.. | 
| 82ea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20  | .................:host.host..... | 
| 82ec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68    65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20  | ..............:header.header.... | 
| 82ee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20  | ...............:key.key......... | 
| 82f00 |  20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c    73 20 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20  | ..........:models.models........ | 
| 82f20 |  20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74    6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20  | ...........:protocol.protocol... | 
| 82f40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69  | ................:endpoint.endpoi | 
| 82f60 |  6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72  | nt...................:stream.str | 
| 82f80 |  65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70  | eam...................:request-p | 
| 82fa0 |  61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61    72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20  | arams.request-params............ | 
| 82fc0 |  20 20 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20    70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20  | .......:url.(if.protocol........ | 
| 82fe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74  | ....................(concat.prot | 
| 83000 |  6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20    65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20  | ocol."://".host.endpoint)....... | 
| 83020 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20  | ...................(concat.host. | 
| 83040 |  65 6e 64 70 6f 69 6e 74 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f  | endpoint))...................:co | 
| 83060 |  6e 74 65 78 74 20 63 6f 6e 74 65 78 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ntext.context................... | 
| 83080 |  3a 73 6f 75 72 63 65 73 20 73 6f 75 72 63 65 73    29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62  | :sources.sources))).....(prog1.b | 
| 830a0 |  61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65    74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61  | ackend.......(setf.(alist-get.na | 
| 830c0 |  6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d    62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20  | me.gptel--known-backends........ | 
| 830e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29  | ................nil.nil.#'equal) | 
| 83100 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63    6b 65 6e 64 29 29 29 29 0a 0a 0a 3b 3b 3b 20 50  | .............backend))))...;;;.P | 
| 83120 |  65 72 70 6c 65 78 69 74 79 0a 28 63 6c 2d 64 65    66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 70  | erplexity.(cl-defstruct.(gptel-p | 
| 83140 |  65 72 70 6c 65 78 69 74 79 20 28 3a 63 6f 6e 73    74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d  | erplexity.(:constructor.gptel--m | 
| 83160 |  61 6b 65 2d 70 65 72 70 6c 65 78 69 74 79 29 0a    09 09 09 09 28 3a 63 6f 70 69 65 72 20 6e 69 6c  | ake-perplexity).....(:copier.nil | 
| 83180 |  29 0a 09 09 09 09 28 3a 69 6e 63 6c 75 64 65 20    67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 29 29 0a  | ).....(:include.gptel-openai))). | 
| 831a0 |  0a 28 64 65 66 73 75 62 73 74 20 67 70 74 65 6c    2d 2d 70 65 72 70 6c 65 78 69 74 79 2d 70 61 72  | .(defsubst.gptel--perplexity-par | 
| 831c0 |  73 65 2d 63 69 74 61 74 69 6f 6e 73 20 28 63 69    74 61 74 69 6f 6e 73 29 0a 20 20 28 6c 65 74 20  | se-citations.(citations)...(let. | 
| 831e0 |  28 28 63 6f 75 6e 74 65 72 20 30 29 29 0a 20 20    20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 5c 6e 43  | ((counter.0)).....(concat."\n\nC | 
| 83200 |  69 74 61 74 69 6f 6e 73 3a 5c 6e 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e  | itations:\n".............(mapcon | 
| 83220 |  63 61 74 20 28 6c 61 6d 62 64 61 20 28 75 72 6c    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | cat.(lambda.(url)............... | 
| 83240 |  20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71    20 63 6f 75 6e 74 65 72 20 28 31 2b 20 63 6f 75  | ...........(setq.counter.(1+.cou | 
| 83260 |  6e 74 65 72 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nter)).......................... | 
| 83280 |  28 66 6f 72 6d 61 74 20 22 5b 25 64 5d 20 25 73    22 20 63 6f 75 6e 74 65 72 20 75 72 6c 29 29 0a  | (format."[%d].%s".counter.url)). | 
| 832a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 63 69 74 61 74 69 6f 6e 73  | .......................citations | 
| 832c0 |  20 22 5c 6e 22 29 29 29 29 0a 0a 28 63 6c 2d 64    65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d  | ."\n"))))..(cl-defmethod.gptel-- | 
| 832e0 |  70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28    28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d  | parse-response.((_backend.gptel- | 
| 83300 |  70 65 72 70 6c 65 78 69 74 79 29 20 72 65 73 70    6f 6e 73 65 20 5f 69 6e 66 6f 29 0a 20 20 22 50  | perplexity).response._info)..."P | 
| 83320 |  61 72 73 65 20 50 65 72 70 6c 65 78 69 74 79 20    72 65 73 70 6f 6e 73 65 20 52 45 53 50 4f 4e 53  | arse.Perplexity.response.RESPONS | 
| 83340 |  45 2e 22 0a 20 20 28 6c 65 74 20 28 28 72 65 73    70 6f 6e 73 65 2d 73 74 72 69 6e 67 20 28 6d 61  | E."...(let.((response-string.(ma | 
| 83360 |  70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73    70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63 65 73  | p-nested-elt.response.'(:choices | 
| 83380 |  20 30 20 3a 6d 65 73 73 61 67 65 20 3a 63 6f 6e    74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20  | .0.:message.:content)))......... | 
| 833a0 |  28 63 69 74 61 74 69 6f 6e 73 2d 73 74 72 69 6e    67 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 63  | (citations-string.(when-let*.((c | 
| 833c0 |  69 74 61 74 69 6f 6e 73 20 28 6d 61 70 2d 65 6c    74 20 72 65 73 70 6f 6e 73 65 20 3a 63 69 74 61  | itations.(map-elt.response.:cita | 
| 833e0 |  74 69 6f 6e 73 29 29 29 0a 09 09 09 20 20 20 20    28 67 70 74 65 6c 2d 2d 70 65 72 70 6c 65 78 69  | tions)))........(gptel--perplexi | 
| 83400 |  74 79 2d 70 61 72 73 65 2d 63 69 74 61 74 69 6f    6e 73 20 63 69 74 61 74 69 6f 6e 73 29 29 29 29  | ty-parse-citations.citations)))) | 
| 83420 |  0a 20 20 20 20 28 63 6f 6e 63 61 74 20 72 65 73    70 6f 6e 73 65 2d 73 74 72 69 6e 67 20 63 69 74  | .....(concat.response-string.cit | 
| 83440 |  61 74 69 6f 6e 73 2d 73 74 72 69 6e 67 29 29 29    0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20  | ations-string)))..(cl-defmethod. | 
| 83460 |  67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73    65 2d 73 74 72 65 61 6d 20 28 28 5f 62 61 63 6b  | gptel-curl--parse-stream.((_back | 
| 83480 |  65 6e 64 20 67 70 74 65 6c 2d 70 65 72 70 6c 65    78 69 74 79 29 20 69 6e 66 6f 29 0a 20 20 22 50  | end.gptel-perplexity).info)..."P | 
| 834a0 |  61 72 73 65 20 61 20 50 65 72 70 6c 65 78 69 74    79 20 41 50 49 20 64 61 74 61 20 73 74 72 65 61  | arse.a.Perplexity.API.data.strea | 
| 834c0 |  6d 20 77 69 74 68 20 49 4e 46 4f 2e 0a 0a 49 66    20 61 76 61 69 6c 61 62 6c 65 2c 20 63 6f 6c 6c  | m.with.INFO...If.available,.coll | 
| 834e0 |  65 63 74 20 63 69 74 61 74 69 6f 6e 73 20 61 74    20 74 68 65 20 65 6e 64 20 61 6e 64 20 69 6e 63  | ect.citations.at.the.end.and.inc | 
| 83500 |  6c 75 64 65 20 74 68 65 6d 20 77 69 74 68 0a 74    68 65 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 20  | lude.them.with.the.response."... | 
| 83520 |  28 6c 65 74 20 28 28 72 65 73 70 20 28 63 6c 2d    63 61 6c 6c 2d 6e 65 78 74 2d 6d 65 74 68 6f 64  | (let.((resp.(cl-call-next-method | 
| 83540 |  29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20    28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20  | ))).....(unless.(plist-get.info. | 
| 83560 |  3a 63 69 74 61 74 69 6f 6e 73 29 0a 20 20 20 20    20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f  | :citations).......(save-excursio | 
| 83580 |  6e 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d    63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29  | n.........(goto-char.(point-max) | 
| 835a0 |  29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20    28 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64  | ).........(when.(search-backward | 
| 835c0 |  20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f    20 3a 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20  | .(plist-get.info.:token)........ | 
| 835e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6c 69 6e 65 2d 62 65  | ........................(line-be | 
| 83600 |  67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e    29 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28  | ginning-position).t)...........( | 
| 83620 |  66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 30 29 0a    20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20  | forward-line.0)...........(when. | 
| 83640 |  28 72 65 2d 73 65 61 72 63 68 2d 62 61 63 6b 77    61 72 64 20 22 5e 64 61 74 61 3a 20 22 20 6e 69  | (re-search-backward."^data:.".ni | 
| 83660 |  6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74  | l.t).............(goto-char.(mat | 
| 83680 |  63 68 2d 65 6e 64 20 30 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65  | ch-end.0)).............(ignore-e | 
| 836a0 |  72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28  | rrors...............(when-let*.( | 
| 836c0 |  28 63 68 75 6e 6b 20 28 67 70 74 65 6c 2d 2d 6a    73 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20  | (chunk.(gptel--json-read))...... | 
| 836e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 69 74 61 74 69 6f 6e 73 20  | .....................(citations. | 
| 83700 |  28 6d 61 70 2d 65 6c 74 20 63 68 75 6e 6b 20 3a    63 69 74 61 74 69 6f 6e 73 29 29 29 0a 20 20 20  | (map-elt.chunk.:citations))).... | 
| 83720 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c    69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 69  | .............(plist-put.info.:ci | 
| 83740 |  74 61 74 69 6f 6e 73 20 74 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71  | tations.t).................(setq | 
| 83760 |  20 72 65 73 70 20 28 63 6f 6e 63 61 74 20 72 65    73 70 20 28 67 70 74 65 6c 2d 2d 70 65 72 70 6c  | .resp.(concat.resp.(gptel--perpl | 
| 83780 |  65 78 69 74 79 2d 70 61 72 73 65 2d 63 69 74 61    74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20  | exity-parse-citations........... | 
| 837a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  | ...............................c | 
| 837c0 |  69 74 61 74 69 6f 6e 73 29 29 29 29 29 29 29 29    29 0a 20 20 20 20 72 65 73 70 29 29 0a 0a 3b 3b  | itations))))))))).....resp))..;; | 
| 837e0 |  3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c    2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b  | ;###autoload.(cl-defun.gptel-mak | 
| 83800 |  65 2d 70 65 72 70 6c 65 78 69 74 79 0a 20 20 20    20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c  | e-perplexity.....(name.&key.curl | 
| 83820 |  2d 61 72 67 73 20 73 74 72 65 61 6d 20 6b 65 79    0a 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64  | -args.stream.key...........(head | 
| 83840 |  65 72 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c    61 6d 62 64 61 20 28 29 20 28 77 68 65 6e 2d 6c  | er............(lambda.().(when-l | 
| 83860 |  65 74 2a 20 28 28 6b 65 79 20 28 67 70 74 65 6c    2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29  | et*.((key.(gptel--get-api-key))) | 
| 83880 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 60 28 28 22 41 75 74 68 6f 72 69 7a  | ....................`(("Authoriz | 
| 838a0 |  61 74 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61    74 20 22 42 65 61 72 65 72 20 22 20 6b 65 79 29  | ation"...,(concat."Bearer.".key) | 
| 838c0 |  29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    28 68 6f 73 74 20 22 61 70 69 2e 70 65 72 70 6c  | )))))...........(host."api.perpl | 
| 838e0 |  65 78 69 74 79 2e 61 69 22 29 0a 20 20 20 20 20    20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22  | exity.ai")...........(protocol." | 
| 83900 |  68 74 74 70 73 22 29 0a 20 20 20 20 20 20 20 20    20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 64 6f 63  | https")...........;;.https://doc | 
| 83920 |  73 2e 70 65 72 70 6c 65 78 69 74 79 2e 61 69 2f    67 75 69 64 65 73 2f 6d 6f 64 65 6c 2d 63 61 72  | s.perplexity.ai/guides/model-car | 
| 83940 |  64 73 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f    64 65 6c 73 20 27 28 73 6f 6e 61 72 20 73 6f 6e  | ds...........(models.'(sonar.son | 
| 83960 |  61 72 2d 70 72 6f 20 73 6f 6e 61 72 2d 72 65 61    73 6f 6e 69 6e 67 20 73 6f 6e 61 72 2d 72 65 61  | ar-pro.sonar-reasoning.sonar-rea | 
| 83980 |  73 6f 6e 69 6e 67 2d 70 72 6f 20 73 6f 6e 61 72    2d 64 65 65 70 2d 72 65 73 65 61 72 63 68 29 29  | soning-pro.sonar-deep-research)) | 
| 839a0 |  0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70    6f 69 6e 74 20 22 2f 63 68 61 74 2f 63 6f 6d 70  | ...........(endpoint."/chat/comp | 
| 839c0 |  6c 65 74 69 6f 6e 73 22 29 0a 20 20 20 20 20 20    20 20 20 20 72 65 71 75 65 73 74 2d 70 61 72 61  | letions")...........request-para | 
| 839e0 |  6d 73 29 0a 20 20 22 52 65 67 69 73 74 65 72 20    61 20 50 65 72 70 6c 65 78 69 74 79 20 62 61 63  | ms)..."Register.a.Perplexity.bac | 
| 83a00 |  6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77    69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f  | kend.for.gptel.with.NAME...Keywo | 
| 83a20 |  72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43    55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e  | rd.arguments:..CURL-ARGS.(option | 
| 83a40 |  61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66    20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c  | al).is.a.list.of.additional.Curl | 
| 83a60 |  20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53    54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20  | .arguments...HOST.(optional).is. | 
| 83a80 |  74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 5c 22    61 70 69 2e 70 65 72 70 6c 65 78 69 74 79 2e 61  | the.API.host,.\"api.perplexity.a | 
| 83aa0 |  69 5c 22 20 62 79 20 64 65 66 61 75 6c 74 2e 0a    0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73  | i\".by.default...MODELS.is.a.lis | 
| 83ac0 |  74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d    6f 64 65 6c 20 6e 61 6d 65 73 2e 0a 0a 53 54 52  | t.of.available.model.names...STR | 
| 83ae0 |  45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e    20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61  | EAM.is.a.boolean.to.toggle.strea | 
| 83b00 |  6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2e 0a    0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f  | ming.responses...PROTOCOL.(optio | 
| 83b20 |  6e 61 6c 29 20 73 70 65 63 69 66 69 65 73 20 74    68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74  | nal).specifies.the.protocol,.htt | 
| 83b40 |  70 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a    45 4e 44 50 4f 49 4e 54 20 28 6f 70 74 69 6f 6e  | ps.by.default...ENDPOINT.(option | 
| 83b60 |  61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 65    6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70  | al).is.the.API.endpoint.for.comp | 
| 83b80 |  6c 65 74 69 6f 6e 73 2e 0a 0a 48 45 41 44 45 52    20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66  | letions...HEADER.(optional).is.f | 
| 83ba0 |  6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 65    61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69  | or.additional.headers.to.send.wi | 
| 83bc0 |  74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e    20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e  | th.each.request..It.should.be.an | 
| 83be0 |  20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e 63    74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e  | .alist.or.a.function.that.return | 
| 83c00 |  73 20 61 6e 0a 61 6c 69 73 74 2e 0a 0a 4b 45 59    20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77  | s.an.alist...KEY.is.a.variable.w | 
| 83c20 |  68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68    65 20 41 50 49 20 6b 65 79 2c 20 6f 72 20 66 75  | hose.value.is.the.API.key,.or.fu | 
| 83c40 |  6e 63 74 69 6f 6e 20 74 68 61 74 0a 72 65 74 75    72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52 45  | nction.that.returns.the.key...RE | 
| 83c60 |  51 55 45 53 54 2d 50 41 52 41 4d 53 20 28 6f 70    74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c 69  | QUEST-PARAMS.(optional).is.a.pli | 
| 83c80 |  73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c    20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70 61  | st.of.additional.HTTP.request.pa | 
| 83ca0 |  72 61 6d 65 74 65 72 73 2e 22 0a 20 20 28 64 65    63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29  | rameters."...(declare.(indent.1) | 
| 83cc0 |  29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65    6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d  | )...(let.((backend.(gptel--make- | 
| 83ce0 |  70 65 72 70 6c 65 78 69 74 79 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75  | perplexity...................:cu | 
| 83d00 |  72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rl-args.curl-args............... | 
| 83d20 |  20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....:name.name.................. | 
| 83d40 |  20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68  | .:host.host...................:h | 
| 83d60 |  65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | eader.header...................: | 
| 83d80 |  6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c  | key.key...................:model | 
| 83da0 |  73 20 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74  | s.models...................:prot | 
| 83dc0 |  6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ocol.protocol................... | 
| 83de0 |  3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69    6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | :endpoint.endpoint.............. | 
| 83e00 |  20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72    65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .....:stream.stream............. | 
| 83e20 |  20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70    61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61  | ......:request-params.request-pa | 
| 83e40 |  72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20  | rams...................:url.(if. | 
| 83e60 |  70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | protocol........................ | 
| 83e80 |  20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74    6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20  | ....(concat.protocol."://".host. | 
| 83ea0 |  65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | endpoint)....................... | 
| 83ec0 |  20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20    65 6e 64 70 6f 69 6e 74 29 29 29 29 29 0a 20 20  | ...(concat.host.endpoint)))))... | 
| 83ee0 |  20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64    0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c  | ..(prog1.backend.......(setf.(al | 
| 83f00 |  69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74    65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e  | ist-get.name.gptel--known-backen | 
| 83f20 |  64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69  | ds........................nil.ni | 
| 83f40 |  6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29  | l.#'equal).............backend)) | 
| 83f60 |  29 29 0a 0a 3b 3b 3b 20 44 65 65 70 73 65 65 6b    0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28  | ))..;;;.Deepseek.(cl-defstruct.( | 
| 83f80 |  67 70 74 65 6c 2d 64 65 65 70 73 65 65 6b 20 28    3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 6f  | gptel-deepseek.(:include.gptel-o | 
| 83fa0 |  70 65 6e 61 69 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | penai).......................... | 
| 83fc0 |  20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 6e 69    6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....(:copier.nil).............. | 
| 83fe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67  | .................(:constructor.g | 
| 84000 |  70 74 65 6c 2d 2d 6d 61 6b 65 2d 64 65 65 70 73    65 65 6b 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d  | ptel--make-deepseek)))..(cl-defm | 
| 84020 |  65 74 68 6f 64 20 67 70 74 65 6c 2d 63 75 72 6c    2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 20 3a  | ethod.gptel-curl--parse-stream.: | 
| 84040 |  62 65 66 6f 72 65 20 28 28 5f 62 61 63 6b 65 6e    64 20 67 70 74 65 6c 2d 64 65 65 70 73 65 65 6b  | before.((_backend.gptel-deepseek | 
| 84060 |  29 20 69 6e 66 6f 29 0a 20 20 22 43 61 70 74 75    72 65 20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f  | ).info)..."Capture.reasoning.blo | 
| 84080 |  63 6b 20 73 74 72 65 61 6d 20 69 6e 74 6f 20 49    4e 46 4f 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20  | ck.stream.into.INFO."...(unless. | 
| 840a0 |  28 65 71 20 28 70 6c 69 73 74 2d 67 65 74 20 69    6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d 62  | (eq.(plist-get.info.:reasoning-b | 
| 840c0 |  6c 6f 63 6b 29 20 27 64 6f 6e 65 29 0a 20 20 20    20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e  | lock).'done).....(save-excursion | 
| 840e0 |  0a 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65    72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 28 63  | .......(ignore-errors.........(c | 
| 84100 |  61 74 63 68 20 27 64 6f 6e 65 0a 20 20 20 20 20    20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d  | atch.'done...........(while.(re- | 
| 84120 |  73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22    5e 64 61 74 61 3a 22 20 6e 69 6c 20 74 29 0a 20  | search-forward."^data:".nil.t).. | 
| 84140 |  20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65    73 73 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 2d 70  | ...........(unless.(looking-at-p | 
| 84160 |  20 22 20 2a 5c 5c 5b 44 4f 4e 45 5c 5c 5d 22 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | .".*\\[DONE\\]")...............( | 
| 84180 |  77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 73 70    6f 6e 73 65 20 28 67 70 74 65 6c 2d 2d 6a 73 6f  | when-let*.((response.(gptel--jso | 
| 841a0 |  6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n-read))........................ | 
| 841c0 |  20 20 20 28 64 65 6c 74 61 20 28 6d 61 70 2d 6e    65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e  | ...(delta.(map-nested-elt.respon | 
| 841e0 |  73 65 20 27 28 3a 63 68 6f 69 63 65 73 20 30 20    3a 64 65 6c 74 61 29 29 29 29 0a 20 20 20 20 20  | se.'(:choices.0.:delta))))...... | 
| 84200 |  20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c    65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 20  | ...........(if-let*.((reasoning. | 
| 84220 |  28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61    20 3a 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74  | (plist-get.delta.:reasoning_cont | 
| 84240 |  65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ent))........................... | 
| 84260 |  28 28 6e 6f 74 20 28 65 71 20 72 65 61 73 6f 6e    69 6e 67 20 3a 6e 75 6c 6c 29 29 29 29 0a 20 20  | ((not.(eq.reasoning.:null))))... | 
| 84280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 3a 72 65 61 73 6f 6e 69 6e 67 20  | ..................;;.:reasoning. | 
| 842a0 |  77 69 6c 6c 20 62 65 20 63 6f 6e 73 75 6d 65 64    20 62 79 20 74 68 65 20 67 70 74 65 6c 2d 72 65  | will.be.consumed.by.the.gptel-re | 
| 842c0 |  71 75 65 73 74 20 63 61 6c 6c 62 61 63 6b 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | quest.callback.................. | 
| 842e0 |  20 20 20 3b 3b 20 61 6e 64 20 72 65 73 65 74 20    62 79 20 74 68 65 20 73 74 72 65 61 6d 20 66 69  | ...;;.and.reset.by.the.stream.fi | 
| 84300 |  6c 74 65 72 2e 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | lter......................(plist | 
| 84320 |  2d 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f    6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20  | -put.info.:reasoning............ | 
| 84340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 6c 69  | ....................(concat.(pli | 
| 84360 |  73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65 61    73 6f 6e 69 6e 67 29 20 72 65 61 73 6f 6e 69 6e  | st-get.info.:reasoning).reasonin | 
| 84380 |  67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a  | g))...................(when-let* | 
| 843a0 |  20 28 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73    74 2d 67 65 74 20 64 65 6c 74 61 20 3a 63 6f 6e  | .((content.(plist-get.delta.:con | 
| 843c0 |  74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tent)).......................... | 
| 843e0 |  20 20 20 20 20 28 28 6e 6f 74 20 28 65 71 20 63    6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c 29 29 29 29  | .....((not.(eq.content.:null)))) | 
| 84400 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 69 66 20 28 65 71 20 28 70 6c  | .....................(if.(eq.(pl | 
| 84420 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65    61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 20 27  | ist-get.info.:reasoning-block).' | 
| 84440 |  69 6e 29 20 3b 43 68 65 63 6b 20 69 66 20 69 6e    20 72 65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b  | in).;Check.if.in.reasoning.block | 
| 84460 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d  | .........................(plist- | 
| 84480 |  70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f 6e    69 6e 67 2d 62 6c 6f 63 6b 20 74 29 20 3b 45 6e  | put.info.:reasoning-block.t).;En | 
| 844a0 |  64 20 6f 66 20 73 74 72 65 61 6d 69 6e 67 20 72    65 61 73 6f 6e 69 6e 67 20 62 6c 6f 63 6b 0a 20  | d.of.streaming.reasoning.block.. | 
| 844c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20  | .....................(plist-put. | 
| 844e0 |  69 6e 66 6f 20 3a 72 65 61 73 6f 6e 69 6e 67 2d    62 6c 6f 63 6b 20 27 64 6f 6e 65 29 29 20 3b 4e  | info.:reasoning-block.'done)).;N | 
| 84500 |  6f 74 20 75 73 69 6e 67 20 61 20 72 65 61 73 6f    6e 69 6e 67 20 6d 6f 64 65 6c 0a 20 20 20 20 20  | ot.using.a.reasoning.model...... | 
| 84520 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    74 68 72 6f 77 20 27 64 6f 6e 65 20 74 29 29 29  | ...............(throw.'done.t))) | 
| 84540 |  29 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65    66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70  | ))))))))..(cl-defmethod.gptel--p | 
| 84560 |  61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 3a 62    65 66 6f 72 65 20 28 28 5f 62 61 63 6b 65 6e 64  | arse-response.:before.((_backend | 
| 84580 |  20 67 70 74 65 6c 2d 64 65 65 70 73 65 65 6b 29    20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a  | .gptel-deepseek).response.info). | 
| 845a0 |  20 20 22 43 61 70 74 75 72 65 20 72 65 61 73 6f    6e 69 6e 67 20 62 6c 6f 63 6b 20 69 6e 20 52 45  | .."Capture.reasoning.block.in.RE | 
| 845c0 |  53 50 4f 4e 53 45 20 69 6e 74 6f 20 49 4e 46 4f    2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 63 68 6f  | SPONSE.into.INFO."...(let*.((cho | 
| 845e0 |  69 63 65 30 20 28 6d 61 70 2d 6e 65 73 74 65 64    2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28  | ice0.(map-nested-elt.response.'( | 
| 84600 |  3a 63 68 6f 69 63 65 73 20 30 29 29 29 0a 20 20    20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20  | :choices.0)))..........(message. | 
| 84620 |  28 70 6c 69 73 74 2d 67 65 74 20 63 68 6f 69 63    65 30 20 3a 6d 65 73 73 61 67 65 29 29 0a 20 20  | (plist-get.choice0.:message))... | 
| 84640 |  20 20 20 20 20 20 20 28 72 65 61 73 6f 6e 69 6e    67 20 28 70 6c 69 73 74 2d 67 65 74 20 6d 65 73  | .......(reasoning.(plist-get.mes | 
| 84660 |  73 61 67 65 20 3a 72 65 61 73 6f 6e 69 6e 67 5f    63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 28  | sage.:reasoning_content))).....( | 
| 84680 |  77 68 65 6e 20 28 61 6e 64 20 28 73 74 72 69 6e    67 70 20 72 65 61 73 6f 6e 69 6e 67 29 20 28 6c  | when.(and.(stringp.reasoning).(l | 
| 846a0 |  65 6e 67 74 68 3e 20 72 65 61 73 6f 6e 69 6e 67    20 30 29 29 0a 20 20 20 20 20 20 28 70 6c 69 73  | ength>.reasoning.0)).......(plis | 
| 846c0 |  74 2d 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73    6f 6e 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 29  | t-put.info.:reasoning.reasoning) | 
| 846e0 |  29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68    6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d  | )))..(cl-defmethod.gptel--parse- | 
| 84700 |  62 75 66 66 65 72 20 3a 61 72 6f 75 6e 64 20 28    28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d  | buffer.:around.((_backend.gptel- | 
| 84720 |  64 65 65 70 73 65 65 6b 29 20 5f 6d 61 78 2d 65    6e 74 72 69 65 73 29 0a 20 20 22 4d 65 72 67 65  | deepseek)._max-entries)..."Merge | 
| 84740 |  20 73 75 63 63 65 73 73 69 76 65 20 70 72 6f 6d    70 74 73 20 69 6e 20 74 68 65 20 70 72 6f 6d 70  | .successive.prompts.in.the.promp | 
| 84760 |  74 73 20 6c 69 73 74 20 74 68 61 74 20 68 61 76    65 20 74 68 65 20 73 61 6d 65 20 72 6f 6c 65 2e  | ts.list.that.have.the.same.role. | 
| 84780 |  0a 0a 54 68 65 20 44 65 65 70 73 65 65 6b 20 41    50 49 20 72 65 71 75 69 72 65 73 20 73 74 72 69  | ..The.Deepseek.API.requires.stri | 
| 847a0 |  63 74 6c 79 20 61 6c 74 65 72 6e 61 74 69 6e 67    20 72 6f 6c 65 73 20 28 75 73 65 72 2f 61 73 73  | ctly.alternating.roles.(user/ass | 
| 847c0 |  69 73 74 61 6e 74 29 20 69 6e 20 6d 65 73 73 61    67 65 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28  | istant).in.messages."...(let*.(( | 
| 847e0 |  70 72 6f 6d 70 74 73 20 28 63 6c 2d 63 61 6c 6c    2d 6e 65 78 74 2d 6d 65 74 68 6f 64 29 29 0a 20  | prompts.(cl-call-next-method)).. | 
| 84800 |  20 20 20 20 20 20 20 20 28 69 6e 64 65 78 20 70    72 6f 6d 70 74 73 29 29 0a 20 20 20 20 28 70 72  | ........(index.prompts)).....(pr | 
| 84820 |  6f 67 31 20 70 72 6f 6d 70 74 73 0a 20 20 20 20    20 20 28 77 68 69 6c 65 20 69 6e 64 65 78 0a 20  | og1.prompts.......(while.index.. | 
| 84840 |  20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 31    20 28 63 61 72 20 69 6e 64 65 78 29 29 0a 20 20  | .......(let.((p1.(car.index))... | 
| 84860 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 32 20    28 63 61 64 72 20 69 6e 64 65 78 29 29 0a 20 20  | ............(p2.(cadr.index))... | 
| 84880 |  20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73    74 20 28 63 64 72 20 69 6e 64 65 78 29 29 29 0a  | ............(rest.(cdr.index))). | 
| 848a0 |  20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20    28 61 6e 64 20 70 32 20 28 65 71 75 61 6c 20 28  | ..........(when.(and.p2.(equal.( | 
| 848c0 |  70 6c 69 73 74 2d 67 65 74 20 70 31 20 3a 72 6f    6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | plist-get.p1.:role)............. | 
| 848e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 32  | ...................(plist-get.p2 | 
| 84900 |  20 3a 72 6f 6c 65 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 73 65 74 66 20 28 70 6c 69  | .:role))).............(setf.(pli | 
| 84920 |  73 74 2d 67 65 74 20 70 31 20 3a 63 6f 6e 74 65    6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | st-get.p1.:content)............. | 
| 84940 |  20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70    6c 69 73 74 2d 67 65 74 20 70 31 20 3a 63 6f 6e  | ......(concat.(plist-get.p1.:con | 
| 84960 |  74 65 6e 74 29 20 22 5c 6e 22 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tent)."\n"...................... | 
| 84980 |  20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20    70 32 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20  | .....(plist-get.p2.:content))).. | 
| 849a0 |  20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 63    64 72 20 69 6e 64 65 78 20 28 63 64 72 20 72 65  | ...........(setcdr.index.(cdr.re | 
| 849c0 |  73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    28 73 65 74 71 20 69 6e 64 65 78 20 28 63 64 72  | st)))...........(setq.index.(cdr | 
| 849e0 |  20 69 6e 64 65 78 29 29 29 29 29 29 29 0a 0a 3b    3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63  | .index)))))))..;;;###autoload.(c | 
| 84a00 |  6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61    6b 65 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20  | l-defun.gptel-make-deepseek..... | 
| 84a20 |  28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d    61 72 67 73 20 73 74 72 65 61 6d 20 6b 65 79 20  | (name.&key.curl-args.stream.key. | 
| 84a40 |  72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20    20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72  | request-params...........(header | 
| 84a60 |  20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 65    6e 2d 6c 65 74 2a 20 28 28 6b 65 79 20 28 67 70  | .(lambda.().(when-let*.((key.(gp | 
| 84a80 |  74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | tel--get-api-key)))............. | 
| 84aa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28    28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22  | ..............`(("Authorization" | 
| 84ac0 |  20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 65 61    72 65 72 20 22 20 6b 65 79 29 29 29 29 29 29 0a  | ...,(concat."Bearer.".key)))))). | 
| 84ae0 |  20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20    22 61 70 69 2e 64 65 65 70 73 65 65 6b 2e 63 6f  | ..........(host."api.deepseek.co | 
| 84b00 |  6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70    72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29  | m")...........(protocol."https") | 
| 84b20 |  0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70    6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63  | ...........(endpoint."/v1/chat/c | 
| 84b40 |  6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a 20 20 20    20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 27  | ompletions")...........(models.' | 
| 84b60 |  28 28 64 65 65 70 73 65 65 6b 2d 72 65 61 73 6f    6e 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ((deepseek-reasoner............. | 
| 84b80 |  20 20 20 20 20 20 20 20 20 3a 63 61 70 61 62 69    6c 69 74 69 65 73 20 28 74 6f 6f 6c 20 72 65 61  | .........:capabilities.(tool.rea | 
| 84ba0 |  73 6f 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f  | soning)......................:co | 
| 84bc0 |  6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 36 34 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ntext-window.64................. | 
| 84be0 |  20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74    20 30 2e 35 35 0a 20 20 20 20 20 20 20 20 20 20  | .....:input-cost.0.55........... | 
| 84c00 |  20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70    75 74 2d 63 6f 73 74 20 32 2e 31 39 29 0a 20 20  | ...........:output-cost.2.19)... | 
| 84c20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 64 65 65 70 73 65 65 6b 2d 63 68 61 74  | ..................(deepseek-chat | 
| 84c40 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69 74  | ......................:capabilit | 
| 84c60 |  69 65 73 20 28 74 6f 6f 6c 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ies.(tool)...................... | 
| 84c80 |  3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f 77 20    36 34 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | :context-window.64.............. | 
| 84ca0 |  20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63    6f 73 74 20 30 2e 32 37 0a 20 20 20 20 20 20 20  | ........:input-cost.0.27........ | 
| 84cc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6f    75 74 70 75 74 2d 63 6f 73 74 20 31 2e 31 30 29  | ..............:output-cost.1.10) | 
| 84ce0 |  29 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20    61 20 44 65 65 70 53 65 65 6b 20 62 61 63 6b 65  | )))..."Register.a.DeepSeek.backe | 
| 84d00 |  6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74    68 20 4e 41 4d 45 2e 0a 0a 46 6f 72 20 74 68 65  | nd.for.gptel.with.NAME...For.the | 
| 84d20 |  20 6d 65 61 6e 69 6e 67 73 20 6f 66 20 74 68 65    20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e  | .meanings.of.the.keyword.argumen | 
| 84d40 |  74 73 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 6d    61 6b 65 2d 6f 70 65 6e 61 69 27 2e 22 0a 20 20  | ts,.see.`gptel-make-openai'."... | 
| 84d60 |  28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74    20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 62 61  | (declare.(indent.1))...(let.((ba | 
| 84d80 |  63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61    6b 65 2d 64 65 65 70 73 65 65 6b 0a 20 20 20 20  | ckend.(gptel--make-deepseek..... | 
| 84da0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e    61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20  | ..............:name.name........ | 
| 84dc0 |  20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74    20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20  | ...........:host.host........... | 
| 84de0 |  20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20    68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20  | ........:header.header.......... | 
| 84e00 |  20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65    79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .........:key.key............... | 
| 84e20 |  20 20 20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74    65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65  | ....:models.(gptel--process-mode | 
| 84e40 |  6c 73 20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72  | ls.models)...................:pr | 
| 84e60 |  6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | otocol.protocol................. | 
| 84e80 |  20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70    6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20  | ..:endpoint.endpoint............ | 
| 84ea0 |  20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73    74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20  | .......:stream.stream........... | 
| 84ec0 |  20 20 20 20 20 20 20 20 3a 72 65 71 75 65 73 74    2d 70 61 72 61 6d 73 20 72 65 71 75 65 73 74 2d  | ........:request-params.request- | 
| 84ee0 |  70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61  | params...................:curl-a | 
| 84f00 |  72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rgs.curl-args................... | 
| 84f20 |  3a 75 72 6c 20 28 63 6f 6e 63 61 74 20 70 72 6f    74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74  | :url.(concat.protocol."://".host | 
| 84f40 |  20 65 6e 64 70 6f 69 6e 74 29 29 29 29 0a 20 20    20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67  | .endpoint)))).....(setf.(alist-g | 
| 84f60 |  65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b    6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 20 6e 69  | et.name.gptel--known-backends.ni | 
| 84f80 |  6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 20 62    61 63 6b 65 6e 64 29 0a 20 20 20 20 62 61 63 6b  | l.nil.#'equal).backend).....back | 
| 84fa0 |  65 6e 64 29 29 0a 0a 3b 3b 3b 20 78 41 49 0a 3b    3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63  | end))..;;;.xAI.;;;###autoload.(c | 
| 84fc0 |  6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61    6b 65 2d 78 61 69 0a 20 20 20 20 28 6e 61 6d 65  | l-defun.gptel-make-xai.....(name | 
| 84fe0 |  20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20    73 74 72 65 61 6d 20 6b 65 79 20 72 65 71 75 65  | .&key.curl-args.stream.key.reque | 
| 85000 |  73 74 2d 70 61 72 61 6d 73 0a 20 20 20 20 20 20    20 20 20 20 28 68 65 61 64 65 72 20 28 6c 61 6d  | st-params...........(header.(lam | 
| 85020 |  62 64 61 20 28 29 20 28 77 68 65 6e 2d 6c 65 74    2a 20 28 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d  | bda.().(when-let*.((key.(gptel-- | 
| 85040 |  67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | get-api-key))).................. | 
| 85060 |  20 20 20 20 20 20 20 20 20 60 28 28 22 41 75 74    68 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28  | .........`(("Authorization"...,( | 
| 85080 |  63 6f 6e 63 61 74 20 22 42 65 61 72 65 72 20 22    20 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20  | concat."Bearer.".key))))))...... | 
| 850a0 |  20 20 20 20 20 28 68 6f 73 74 20 22 61 70 69 2e    78 2e 61 69 22 29 0a 20 20 20 20 20 20 20 20 20  | .....(host."api.x.ai").......... | 
| 850c0 |  20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70    73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65  | .(protocol."https")...........(e | 
| 850e0 |  6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61    74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 0a  | ndpoint."/v1/chat/completions"). | 
| 85100 |  20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c    73 20 27 28 28 67 72 6f 6b 2d 33 2d 6c 61 74 65  | ..........(models.'((grok-3-late | 
| 85120 |  73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70  | st......................:descrip | 
| 85140 |  74 69 6f 6e 20 22 47 72 6f 6b 20 33 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tion."Grok.3"................... | 
| 85160 |  20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73    20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e  | ...:capabilities.'(tool-use.json | 
| 85180 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d  | )......................:context- | 
| 851a0 |  77 69 6e 64 6f 77 20 31 33 31 30 37 32 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | window.131072................... | 
| 851c0 |  20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 33    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...:input-cost.3................ | 
| 851e0 |  20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d 63 6f    73 74 20 31 35 29 0a 0a 20 20 20 20 20 20 20 20  | ......:output-cost.15).......... | 
| 85200 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 72 6f    6b 2d 33 2d 66 61 73 74 2d 6c 61 74 65 73 74 0a  | ............(grok-3-fast-latest. | 
| 85220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f  | .....................:descriptio | 
| 85240 |  6e 20 22 46 61 73 74 65 72 20 47 72 6f 6b 20 33    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n."Faster.Grok.3"............... | 
| 85260 |  20 20 20 20 20 20 20 3a 63 61 70 61 62 69 6c 69    74 69 65 73 20 27 28 74 6f 6f 6c 2d 75 73 65 20  | .......:capabilities.'(tool-use. | 
| 85280 |  6a 73 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74  | json)......................:cont | 
| 852a0 |  65 78 74 2d 77 69 6e 64 6f 77 20 31 33 31 30 37    32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ext-window.131072............... | 
| 852c0 |  20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63 6f    73 74 20 35 0a 20 20 20 20 20 20 20 20 20 20 20  | .......:input-cost.5............ | 
| 852e0 |  20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70 75    74 2d 63 6f 73 74 20 32 35 29 0a 0a 20 20 20 20  | ..........:output-cost.25)...... | 
| 85300 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 67 72 6f 6b 2d 33 2d 6d 69 6e 69 2d 6c 61 74  | ................(grok-3-mini-lat | 
| 85320 |  65 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69  | est......................:descri | 
| 85340 |  70 74 69 6f 6e 20 22 4d 69 6e 69 20 47 72 6f 6b    20 33 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ption."Mini.Grok.3"............. | 
| 85360 |  20 20 20 20 20 20 20 20 20 3a 63 61 70 61 62 69    6c 69 74 69 65 73 20 27 28 74 6f 6f 6c 2d 75 73  | .........:capabilities.'(tool-us | 
| 85380 |  65 20 6a 73 6f 6e 20 72 65 61 73 6f 6e 69 6e 67    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.json.reasoning)............... | 
| 853a0 |  20 20 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 2d    77 69 6e 64 6f 77 20 31 33 31 30 37 32 0a 20 20  | .......:context-window.131072... | 
| 853c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 69 6e 70 75 74 2d 63 6f 73 74 20 30  | ...................:input-cost.0 | 
| 853e0 |  2e 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3a 6f 75 74 70 75 74 2d  | .3......................:output- | 
| 85400 |  63 6f 73 74 20 30 2e 35 29 0a 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | cost.0.5)......................( | 
| 85420 |  67 72 6f 6b 2d 33 2d 6d 69 6e 69 2d 66 61 73 74    2d 6c 61 74 65 73 74 0a 20 20 20 20 20 20 20 20  | grok-3-mini-fast-latest......... | 
| 85440 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65    73 63 72 69 70 74 69 6f 6e 20 22 46 61 73 74 65  | .............:description."Faste | 
| 85460 |  72 20 6d 69 6e 69 20 47 72 6f 6b 20 33 22 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | r.mini.Grok.3".................. | 
| 85480 |  20 20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65    73 20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f  | ....:capabilities.'(tool-use.jso | 
| 854a0 |  6e 20 72 65 61 73 6f 6e 69 6e 67 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n.reasoning).................... | 
| 854c0 |  20 20 3a 63 6f 6e 74 65 78 74 2d 77 69 6e 64 6f    77 20 31 33 31 30 37 32 0a 20 20 20 20 20 20 20  | ..:context-window.131072........ | 
| 854e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69    6e 70 75 74 2d 63 6f 73 74 20 30 2e 36 0a 20 20  | ..............:input-cost.0.6... | 
| 85500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 6f 75 74 70 75 74 2d 63 6f 73 74 20  | ...................:output-cost. | 
| 85520 |  34 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 67 72 6f 6b 2d 32 2d  | 4)......................(grok-2- | 
| 85540 |  76 69 73 69 6f 6e 2d 31 32 31 32 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | vision-1212..................... | 
| 85560 |  20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 47    72 6f 6b 20 32 20 56 69 73 69 6f 6e 22 0a 20 20  | .:description."Grok.2.Vision"... | 
| 85580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 63 61 70 61 62 69 6c 69 74 69 65 73  | ...................:capabilities | 
| 855a0 |  20 27 28 74 6f 6f 6c 2d 75 73 65 20 6a 73 6f 6e    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .'(tool-use.json)............... | 
| 855c0 |  20 20 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70    65 73 20 27 28 22 69 6d 61 67 65 2f 6a 70 65 67  | .......:mime-types.'("image/jpeg | 
| 855e0 |  22 20 22 69 6d 61 67 65 2f 70 6e 67 22 20 22 69    6d 61 67 65 2f 67 69 66 22 20 22 69 6d 61 67 65  | "."image/png"."image/gif"."image | 
| 85600 |  2f 77 65 62 70 22 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f  | /webp")......................:co | 
| 85620 |  6e 74 65 78 74 2d 77 69 6e 64 6f 77 20 33 32 37    36 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ntext-window.32768.............. | 
| 85640 |  20 20 20 20 20 20 20 20 3a 69 6e 70 75 74 2d 63    6f 73 74 20 32 0a 20 20 20 20 20 20 20 20 20 20  | ........:input-cost.2........... | 
| 85660 |  20 20 20 20 20 20 20 20 20 20 20 3a 6f 75 74 70    75 74 2d 63 6f 73 74 20 31 30 29 29 29 29 0a 20  | ...........:output-cost.10)))).. | 
| 85680 |  20 22 52 65 67 69 73 74 65 72 20 61 6e 20 78 41    49 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70  | ."Register.an.xAI.backend.for.gp | 
| 856a0 |  74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a    4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74  | tel.with.NAME...Keyword.argument | 
| 856c0 |  73 3a 0a 0a 4b 45 59 20 69 73 20 61 20 76 61 72    69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75  | s:..KEY.is.a.variable.whose.valu | 
| 856e0 |  65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79    2c 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 74 68  | e.is.the.API.key,.or.function.th | 
| 85700 |  61 74 0a 72 65 74 75 72 6e 73 20 74 68 65 20 6b    65 79 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61  | at.returns.the.key...STREAM.is.a | 
| 85720 |  20 62 6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67 67    6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73  | .boolean.to.toggle.streaming.res | 
| 85740 |  70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73    20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 54 68 65 20  | ponses,.defaults.to.false...The. | 
| 85760 |  6f 74 68 65 72 20 6b 65 79 77 6f 72 64 20 61 72    67 75 6d 65 6e 74 73 20 61 72 65 20 61 6c 6c 20  | other.keyword.arguments.are.all. | 
| 85780 |  6f 70 74 69 6f 6e 61 6c 2e 20 20 46 6f 72 20 74    68 65 69 72 20 6d 65 61 6e 69 6e 67 73 0a 73 65  | optional...For.their.meanings.se | 
| 857a0 |  65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70    65 6e 61 69 27 2e 22 0a 20 20 28 64 65 63 6c 61  | e.`gptel-make-openai'."...(decla | 
| 857c0 |  72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20    20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20  | re.(indent.1))...(let.((backend. | 
| 857e0 |  28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65    6e 61 69 0a 20 20 20 20 20 20 20 20 20 20 20 20  | (gptel--make-openai............. | 
| 85800 |  20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......:name.name................ | 
| 85820 |  20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...:host.host................... | 
| 85840 |  3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :header.header.................. | 
| 85860 |  20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64  | .:key.key...................:mod | 
| 85880 |  65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63    65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c  | els.(gptel--process-models.model | 
| 858a0 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70  | s)...................:protocol.p | 
| 858c0 |  72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f  | rotocol...................:endpo | 
| 858e0 |  69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | int.endpoint...................: | 
| 85900 |  73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | stream.stream................... | 
| 85920 |  3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20    72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20  | :request-params.request-params.. | 
| 85940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c  | .................:curl-args.curl | 
| 85960 |  2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 63 6f  | -args...................:url.(co | 
| 85980 |  6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a    2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e  | ncat.protocol."://".host.endpoin | 
| 859a0 |  74 29 29 29 29 0a 20 20 20 20 28 73 65 74 66 20    28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20  | t)))).....(setf.(alist-get.name. | 
| 859c0 |  67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63    6b 65 6e 64 73 20 6e 69 6c 20 6e 69 6c 20 23 27  | gptel--known-backends.nil.nil.#' | 
| 859e0 |  65 71 75 61 6c 29 20 62 61 63 6b 65 6e 64 29 0a    20 20 20 20 62 61 63 6b 65 6e 64 29 29 0a 0a 0a  | equal).backend).....backend))... | 
| 85a00 |  28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d    6f 70 65 6e 61 69 2d 65 78 74 72 61 73 29 0a 3b  | (provide.'gptel-openai-extras).; | 
| 85a20 |  3b 3b 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2d    65 78 74 72 61 73 2e 65 6c 20 65 6e 64 73 20 68  | ;;.gptel-openai-extras.el.ends.h | 
| 85a40 |  65 72 65 0a 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61    72 69 61 62 6c 65 73 3a 0a 3b 3b 20 62 79 74 65  | ere..;;.Local.Variables:.;;.byte | 
| 85a60 |  2d 63 6f 6d 70 69 6c 65 2d 77 61 72 6e 69 6e 67    73 3a 20 28 6e 6f 74 20 64 6f 63 73 74 72 69 6e  | -compile-warnings:.(not.docstrin | 
| 85a80 |  67 73 29 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | gs).;;.End:..................... | 
| 85aa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85ac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85ae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85b00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85b20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85c00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 63 6f 6e 74 65 78 74 2e 65 6c 00 00  | gptel-0.9.8.5/gptel-context.el.. | 
| 85c20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85c40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85c60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 85c80 |  30 30 36 37 30 33 34 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 35 37 36 00 20 30 00 00 00  | 0067034.00000000000.014576..0... | 
| 85ca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85cc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85ce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85d00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 85d20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 85d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 85e00 |  3b 3b 3b 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78    74 2e 65 6c 20 2d 2d 2d 20 43 6f 6e 74 65 78 74  | ;;;.gptel-context.el.---.Context | 
| 85e20 |  20 61 67 67 72 65 67 61 74 6f 72 20 66 6f 72 20    67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63  | .aggregator.for.gptel..-*-.lexic | 
| 85e40 |  61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d    2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74  | al-binding:.t;.-*-..;;.Copyright | 
| 85e60 |  20 28 43 29 20 32 30 32 33 2d 32 30 32 35 20 20    4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61  | .(C).2023-2025..Karthik.Chikmaga | 
| 85e80 |  6c 75 72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20    64 61 65 64 73 69 64 6f 67 20 3c 63 6f 6e 74 61  | lur..;;.Author:.daedsidog.<conta | 
| 85ea0 |  63 74 40 64 61 65 64 73 69 64 6f 67 2e 63 6f 6d    3e 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 63  | ct@daedsidog.com>.;;.Keywords:.c | 
| 85ec0 |  6f 6e 76 65 6e 69 65 6e 63 65 2c 20 62 75 66 66    65 72 73 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63  | onvenience,.buffers..;;.SPDX-Lic | 
| 85ee0 |  65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a    20 47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c 61 74 65  | ense-Identifier:.GPL-3.0-or-late | 
| 85f00 |  72 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72    61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77  | r..;;.This.program.is.free.softw | 
| 85f20 |  61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64    69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64  | are;.you.can.redistribute.it.and | 
| 85f40 |  2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74    20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73  | /or.modify.;;.it.under.the.terms | 
| 85f60 |  20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65    72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e  | .of.the.GNU.General.Public.Licen | 
| 85f80 |  73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20    62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53  | se.as.published.by.;;.the.Free.S | 
| 85fa0 |  6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69    6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69  | oftware.Foundation,.either.versi | 
| 85fc0 |  6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65    6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79  | on.3.of.the.License,.or.;;.(at.y | 
| 85fe0 |  6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20    6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a  | our.option).any.later.version... | 
| 86000 |  3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20    69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69  | ;;.This.program.is.distributed.i | 
| 86020 |  6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20    69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75  | n.the.hope.that.it.will.be.usefu | 
| 86040 |  6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55    54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20  | l,.;;.but.WITHOUT.ANY.WARRANTY;. | 
| 86060 |  77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65    20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74  | without.even.the.implied.warrant | 
| 86080 |  79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54    41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45  | y.of.;;.MERCHANTABILITY.or.FITNE | 
| 860a0 |  53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55    4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65  | SS.FOR.A.PARTICULAR.PURPOSE...Se | 
| 860c0 |  65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e    65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65  | e.the.;;.GNU.General.Public.Lice | 
| 860e0 |  6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74    61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68  | nse.for.more.details...;;.You.sh | 
| 86100 |  6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76    65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  | ould.have.received.a.copy.of.the | 
| 86120 |  20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62    6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61  | .GNU.General.Public.License.;;.a | 
| 86140 |  6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70    72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c  | long.with.this.program...If.not, | 
| 86160 |  20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77    77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73  | .see.<https://www.gnu.org/licens | 
| 86180 |  65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65    6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 65 20 63  | es/>...;;;.Commentary:..;;.The.c | 
| 861a0 |  6f 6e 74 65 78 74 20 61 6c 6c 6f 77 73 20 79 6f    75 20 74 6f 20 63 6f 6e 76 65 6e 69 65 6e 74 6c  | ontext.allows.you.to.convenientl | 
| 861c0 |  79 20 63 72 65 61 74 65 20 63 6f 6e 74 65 78 74    73 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 66  | y.create.contexts.which.can.be.f | 
| 861e0 |  65 64 0a 3b 3b 20 74 6f 20 67 70 74 65 6c 2e 0a    0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 3b 3b 3b 20  | ed.;;.to.gptel...;;;.Code:..;;;. | 
| 86200 |  2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64    69 6e 67 3a 20 74 20 2d 2a 2d 0a 28 72 65 71 75  | -*-.lexical-binding:.t.-*-.(requ | 
| 86220 |  69 72 65 20 27 67 70 74 65 6c 29 0a 28 72 65 71    75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 0a 28  | ire.'gptel).(require.'cl-lib)..( | 
| 86240 |  64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e    20 67 70 74 65 6c 2d 6d 65 6e 75 20 22 67 70 74  | declare-function.gptel-menu."gpt | 
| 86260 |  65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 29 0a 28    64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e  | el-transient").(declare-function | 
| 86280 |  20 64 69 72 65 64 2d 67 65 74 2d 6d 61 72 6b 65    64 2d 66 69 6c 65 73 20 22 64 69 72 65 64 22 29  | .dired-get-marked-files."dired") | 
| 862a0 |  0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69    6f 6e 20 69 6d 61 67 65 2d 66 69 6c 65 2d 6e 61  | .(declare-function.image-file-na | 
| 862c0 |  6d 65 2d 72 65 67 65 78 70 20 22 69 6d 61 67 65    2d 66 69 6c 65 22 29 0a 28 64 65 63 6c 61 72 65  | me-regexp."image-file").(declare | 
| 862e0 |  2d 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65    2d 69 6d 61 67 65 20 22 69 6d 61 67 65 22 29 0a  | -function.create-image."image"). | 
| 86300 |  0a 28 64 65 66 66 61 63 65 20 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 2d 68 69 67 68 6c 69 67 68  | .(defface.gptel-context-highligh | 
| 86320 |  74 2d 66 61 63 65 0a 20 20 27 28 28 28 28 62 61    63 6b 67 72 6f 75 6e 64 20 64 61 72 6b 29 20 20  | t-face...'((((background.dark).. | 
| 86340 |  28 6d 69 6e 2d 63 6f 6c 6f 72 73 20 38 38 29 29    20 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 67 72  | (min-colors.88)).:background."gr | 
| 86360 |  61 79 34 22 20 3a 65 78 74 65 6e 64 20 74 29 0a    20 20 20 20 28 28 28 62 61 63 6b 67 72 6f 75 6e  | ay4".:extend.t).....(((backgroun | 
| 86380 |  64 20 6c 69 67 68 74 29 20 28 6d 69 6e 2d 63 6f    6c 6f 72 73 20 38 38 29 29 20 3a 62 61 63 6b 67  | d.light).(min-colors.88)).:backg | 
| 863a0 |  72 6f 75 6e 64 20 22 61 6c 69 63 65 20 62 6c 75    65 22 20 3a 65 78 74 65 6e 64 20 74 29 0a 20 20  | round."alice.blue".:extend.t)... | 
| 863c0 |  20 20 28 74 20 3a 69 6e 68 65 72 69 74 20 6d 6f    64 65 2d 6c 69 6e 65 29 29 0a 20 20 22 46 61 63  | ..(t.:inherit.mode-line))..."Fac | 
| 863e0 |  65 20 75 73 65 64 20 74 6f 20 68 69 67 68 6c 69    67 68 74 20 67 70 74 65 6c 20 63 6f 6e 74 65 78  | e.used.to.highlight.gptel.contex | 
| 86400 |  74 73 20 69 6e 20 62 75 66 66 65 72 73 2e 22 0a    20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29  | ts.in.buffers."...:group.'gptel) | 
| 86420 |  0a 0a 28 64 65 66 66 61 63 65 20 67 70 74 65 6c    2d 63 6f 6e 74 65 78 74 2d 64 65 6c 65 74 69 6f  | ..(defface.gptel-context-deletio | 
| 86440 |  6e 2d 66 61 63 65 0a 20 20 27 28 28 28 28 63 6c    61 73 73 20 63 6f 6c 6f 72 29 20 28 6d 69 6e 2d  | n-face...'((((class.color).(min- | 
| 86460 |  63 6f 6c 6f 72 73 20 32 35 37 29 20 28 62 61 63    6b 67 72 6f 75 6e 64 20 6c 69 67 68 74 29 29 0a  | colors.257).(background.light)). | 
| 86480 |  20 20 20 20 20 3a 62 61 63 6b 67 72 6f 75 6e 64    20 22 23 66 66 65 65 65 65 22 20 3a 65 78 74 65  | .....:background."#ffeeee".:exte | 
| 864a0 |  6e 64 20 74 29 0a 20 20 20 20 28 28 28 63 6c 61    73 73 20 63 6f 6c 6f 72 29 20 28 6d 69 6e 2d 63  | nd.t).....(((class.color).(min-c | 
| 864c0 |  6f 6c 6f 72 73 20 38 38 29 20 28 62 61 63 6b 67    72 6f 75 6e 64 20 6c 69 67 68 74 29 29 0a 20 20  | olors.88).(background.light))... | 
| 864e0 |  20 20 20 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22    23 66 66 64 64 64 64 22 20 3a 65 78 74 65 6e 64  | ...:background."#ffdddd".:extend | 
| 86500 |  20 74 29 0a 20 20 20 20 28 28 28 63 6c 61 73 73    20 63 6f 6c 6f 72 29 20 28 6d 69 6e 2d 63 6f 6c  | .t).....(((class.color).(min-col | 
| 86520 |  6f 72 73 20 38 38 29 20 28 62 61 63 6b 67 72 6f    75 6e 64 20 64 61 72 6b 29 29 0a 20 20 20 20 20  | ors.88).(background.dark))...... | 
| 86540 |  3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 23 35 35    33 33 33 33 22 20 3a 65 78 74 65 6e 64 20 74 29  | :background."#553333".:extend.t) | 
| 86560 |  0a 20 20 20 20 28 28 28 63 6c 61 73 73 20 63 6f    6c 6f 72 29 29 20 3a 66 6f 72 65 67 72 6f 75 6e  | .....(((class.color)).:foregroun | 
| 86580 |  64 20 22 72 65 64 22 20 3a 65 78 74 65 6e 64 20    74 29 29 0a 20 20 22 46 61 63 65 20 75 73 65 64  | d."red".:extend.t))..."Face.used | 
| 865a0 |  20 74 6f 20 68 69 67 68 6c 69 67 68 74 20 67 70    74 65 6c 20 63 6f 6e 74 65 78 74 73 20 74 6f 20  | .to.highlight.gptel.contexts.to. | 
| 865c0 |  62 65 20 64 65 6c 65 74 65 64 2e 0a 0a 54 68 69    73 20 69 73 20 75 73 65 64 20 69 6e 20 67 70 74  | be.deleted...This.is.used.in.gpt | 
| 865e0 |  65 6c 20 63 6f 6e 74 65 78 74 20 62 75 66 66 65    72 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67  | el.context.buffers."...:group.'g | 
| 86600 |  70 74 65 6c 29 0a 0a 28 64 65 66 76 61 72 20 67    70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 77 72 61  | ptel)..(defvar.gptel-context-wra | 
| 86620 |  70 2d 66 75 6e 63 74 69 6f 6e 20 6e 69 6c 0a 20    20 22 46 75 6e 63 74 69 6f 6e 20 74 6f 20 66 6f  | p-function.nil..."Function.to.fo | 
| 86640 |  72 6d 61 74 20 74 68 65 20 63 6f 6e 74 65 78 74    20 73 74 72 69 6e 67 20 73 65 6e 74 20 77 69 74  | rmat.the.context.string.sent.wit | 
| 86660 |  68 20 74 68 65 20 67 70 74 65 6c 20 72 65 71 75    65 73 74 2e 22 29 0a 28 6d 61 6b 65 2d 6f 62 73  | h.the.gptel.request.").(make-obs | 
| 86680 |  6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 0a 20    27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 77  | olete-variable..'gptel-context-w | 
| 866a0 |  72 61 70 2d 66 75 6e 63 74 69 6f 6e 0a 20 22 43    75 73 74 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 20  | rap-function.."Custom.functions. | 
| 866c0 |  66 6f 72 20 77 72 61 70 70 69 6e 67 20 63 6f 6e    74 65 78 74 20 61 72 65 20 6e 6f 20 6c 6f 6e 67  | for.wrapping.context.are.no.long | 
| 866e0 |  65 72 20 73 75 70 70 6f 72 74 65 64 20 62 79 20    67 70 74 65 6c 2e 5c 0a 20 20 53 65 65 20 60 67  | er.supported.by.gptel.\...See.`g | 
| 86700 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72    61 70 2d 69 6e 2d 62 75 66 66 65 72 27 20 66 6f  | ptel-context--wrap-in-buffer'.fo | 
| 86720 |  72 20 64 65 74 61 69 6c 73 2e 22 0a 20 22 30 2e    39 2e 39 22 29 0a 0a 28 64 65 66 63 75 73 74 6f  | r.details.".."0.9.9")..(defcusto | 
| 86740 |  6d 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    73 74 72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 20  | m.gptel-context-string-function. | 
| 86760 |  23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    2d 73 74 72 69 6e 67 0a 20 20 22 46 75 6e 63 74  | #'gptel-context--string..."Funct | 
| 86780 |  69 6f 6e 20 74 6f 20 70 72 65 70 61 72 65 20 74    68 65 20 63 6f 6e 74 65 78 74 20 73 74 72 69 6e  | ion.to.prepare.the.context.strin | 
| 867a0 |  67 20 73 65 6e 74 20 77 69 74 68 20 74 68 65 20    67 70 74 65 6c 20 72 65 71 75 65 73 74 2e 0a 0a  | g.sent.with.the.gptel.request... | 
| 867c0 |  54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61    6e 20 62 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73  | This.function.can.be.synchronous | 
| 867e0 |  20 6f 72 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73    2c 20 61 6e 64 20 72 65 63 65 69 76 65 73 20 6f  | .or.asynchronous,.and.receives.o | 
| 86800 |  6e 65 20 6f 72 0a 74 77 6f 20 61 72 67 75 6d 65    6e 74 73 20 72 65 73 70 65 63 74 69 76 65 6c 79  | ne.or.two.arguments.respectively | 
| 86820 |  2e 0a 0a 53 79 6e 63 68 72 6f 6e 6f 75 73 3a 20    41 6e 20 61 6c 69 73 74 20 6f 66 20 63 6f 6e 74  | ...Synchronous:.An.alist.of.cont | 
| 86840 |  65 78 74 73 20 77 69 74 68 20 62 75 66 66 65 72    73 20 6f 72 20 66 69 6c 65 73 20 28 74 68 65 20  | exts.with.buffers.or.files.(the. | 
| 86860 |  63 6f 6e 74 65 78 74 0a 61 6c 69 73 74 29 2e 0a    41 73 79 6e 63 68 72 6f 6e 6f 75 73 3a 20 41 20  | context.alist)..Asynchronous:.A. | 
| 86880 |  63 61 6c 6c 62 61 63 6b 20 74 6f 20 63 61 6c 6c    20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74  | callback.to.call.with.the.result | 
| 868a0 |  2c 20 61 6e 64 20 74 68 65 20 63 6f 6e 74 65 78    74 20 61 6c 69 73 74 2e 0a 0a 54 68 65 20 63 6f  | ,.and.the.context.alist...The.co | 
| 868c0 |  6e 74 65 78 74 20 61 6c 69 73 74 20 69 73 20 73    74 72 75 63 74 75 72 65 64 20 61 73 20 66 6f 6c  | ntext.alist.is.structured.as.fol | 
| 868e0 |  6c 6f 77 73 3a 0a 0a 20 28 28 62 75 66 66 65 72    31 20 2e 20 28 6f 76 65 72 6c 61 79 31 20 6f 76  | lows:...((buffer1...(overlay1.ov | 
| 86900 |  65 72 6c 61 79 32 29 0a 20 20 28 5c 22 70 61 74    68 2f 74 6f 2f 66 69 6c 65 5c 22 29 0a 20 20 28  | erlay2)...(\"path/to/file\")...( | 
| 86920 |  62 75 66 66 65 72 32 20 2e 20 28 6f 76 65 72 6c    61 79 33 20 6f 76 65 72 6c 61 79 34 20 6f 76 65  | buffer2...(overlay3.overlay4.ove | 
| 86940 |  72 6c 61 79 35 29 29 0a 20 20 28 5c 22 70 61 74    68 2f 74 6f 2f 69 6d 61 67 65 2f 66 69 6c 65 5c  | rlay5))...(\"path/to/image/file\ | 
| 86960 |  22 20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f    6a 70 65 67 5c 22 29 29 29 0a 0a 45 61 63 68 20  | ".:mime.\"image/jpeg\")))..Each. | 
| 86980 |  67 70 74 65 6c 20 5c 22 63 6f 6e 74 65 78 74 5c    22 20 69 73 20 65 69 74 68 65 72 20 61 20 66 69  | gptel.\"context\".is.either.a.fi | 
| 869a0 |  6c 65 20 70 61 74 68 20 6f 72 20 61 6e 20 6f 76    65 72 6c 61 79 20 69 6e 20 61 0a 62 75 66 66 65  | le.path.or.an.overlay.in.a.buffe | 
| 869c0 |  72 2e 20 20 45 61 63 68 20 6f 76 65 72 6c 61 79    20 63 6f 76 65 72 73 20 61 20 62 75 66 66 65 72  | r...Each.overlay.covers.a.buffer | 
| 869e0 |  20 72 65 67 69 6f 6e 20 63 6f 6e 74 61 69 6e 69    6e 67 20 74 68 65 0a 63 6f 6e 74 65 78 74 20 63  | .region.containing.the.context.c | 
| 86a00 |  68 75 6e 6b 2e 20 20 54 68 69 73 20 69 73 20 61    63 63 65 73 73 69 62 6c 65 20 61 73 2c 20 66 6f  | hunk...This.is.accessible.as,.fo | 
| 86a20 |  72 20 65 78 61 6d 70 6c 65 3a 0a 0a 20 28 77 69    74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65  | r.example:...(with-current-buffe | 
| 86a40 |  72 20 62 75 66 66 65 72 31 0a 20 20 20 28 62 75    66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28  | r.buffer1....(buffer-substring.( | 
| 86a60 |  6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76    65 72 6c 61 79 31 29 0a 20 20 20 20 20 20 20 20  | overlay-start.overlay1)......... | 
| 86a80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76    65 72 6c 61 79 2d 65 6e 64 20 20 20 6f 76 65 72  | .............(overlay-end...over | 
| 86aa0 |  6c 61 79 31 29 29 29 22 0a 20 20 3a 67 72 6f 75    70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65  | lay1)))"...:group.'gptel...:type | 
| 86ac0 |  20 27 66 75 6e 63 74 69 6f 6e 29 0a 0a 28 64 65    66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | .'function)..(defun.gptel-contex | 
| 86ae0 |  74 2d 61 64 64 2d 63 75 72 72 65 6e 74 2d 6b 69    6c 6c 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72  | t-add-current-kill.(&optional.ar | 
| 86b00 |  67 29 0a 20 20 22 41 64 64 20 63 75 72 72 65 6e    74 2d 6b 69 6c 6c 20 74 6f 20 67 70 74 65 6c 2c  | g)..."Add.current-kill.to.gptel, | 
| 86b20 |  20 61 63 63 75 6d 75 6c 61 74 69 6e 67 20 69 66    20 61 72 67 20 69 73 20 6e 6f 6e 2d 6e 69 6c 22  | .accumulating.if.arg.is.non-nil" | 
| 86b40 |  0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20    22 50 22 29 0a 20 20 28 6c 65 74 20 28 28 6b 69  | ...(interactive."P")...(let.((ki | 
| 86b60 |  6c 6c 20 28 63 75 72 72 65 6e 74 2d 6b 69 6c 6c    20 30 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d  | ll.(current-kill.0))).....(with- | 
| 86b80 |  63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28    67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74  | current-buffer.(get-buffer-creat | 
| 86ba0 |  65 20 22 20 2a 67 70 74 65 6c 2d 6b 69 6c 6c 2d    72 69 6e 67 2d 63 6f 6e 74 65 78 74 2a 22 29 0a  | e.".*gptel-kill-ring-context*"). | 
| 86bc0 |  20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 61    72 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 6b  | ......(if.(not.arg)...........(k | 
| 86be0 |  69 6c 6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e    74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61  | ill-region.(point-min).(point-ma | 
| 86c00 |  78 29 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74    6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61  | x)).........(goto-char.(point-ma | 
| 86c20 |  78 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c    65 73 73 20 28 62 6f 62 70 29 0a 20 20 20 20 20  | x)).........(unless.(bobp)...... | 
| 86c40 |  20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e    2d 2d 2d 2d 5c 6e 22 29 29 29 0a 20 20 20 20 20  | .....(insert."\n----\n")))...... | 
| 86c60 |  20 28 69 6e 73 65 72 74 20 6b 69 6c 6c 29 0a 20    20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74  | .(insert.kill).......(gptel-cont | 
| 86c80 |  65 78 74 2d 2d 61 64 64 2d 72 65 67 69 6f 6e 20    28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29  | ext--add-region.(current-buffer) | 
| 86ca0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 86cc0 |  20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70    6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20  | ..(point-min).(point-max))...... | 
| 86ce0 |  20 28 6d 65 73 73 61 67 65 20 22 2a 63 75 72 72    65 6e 74 2d 6b 69 6c 6c 2a 20 68 61 73 20 62 65  | .(message."*current-kill*.has.be | 
| 86d00 |  65 6e 20 61 64 64 65 64 20 61 73 20 63 6f 6e 74    65 78 74 2e 22 29 29 29 29 0a 0a 28 64 65 66 75  | en.added.as.context."))))..(defu | 
| 86d20 |  6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    61 64 64 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61  | n.gptel-context-add.(&optional.a | 
| 86d40 |  72 67 20 63 6f 6e 66 69 72 6d 29 0a 20 20 22 41    64 64 20 63 6f 6e 74 65 78 74 20 74 6f 20 67 70  | rg.confirm)..."Add.context.to.gp | 
| 86d60 |  74 65 6c 20 69 6e 20 61 20 44 57 49 4d 20 66 61    73 68 69 6f 6e 2e 0a 0a 2d 20 49 66 20 61 20 72  | tel.in.a.DWIM.fashion...-.If.a.r | 
| 86d80 |  65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65    64 2c 20 61 64 64 20 74 68 65 20 73 65 6c 65 63  | egion.is.selected,.add.the.selec | 
| 86da0 |  74 65 64 20 72 65 67 69 6f 6e 20 74 6f 20 74 68    65 0a 20 20 63 6f 6e 74 65 78 74 2e 20 20 49 66  | ted.region.to.the...context...If | 
| 86dc0 |  20 74 68 65 72 65 20 69 73 20 61 6c 72 65 61 64    79 20 61 20 67 70 74 65 6c 20 63 6f 6e 74 65 78  | .there.is.already.a.gptel.contex | 
| 86de0 |  74 20 61 74 20 70 6f 69 6e 74 2c 20 72 65 6d 6f    76 65 20 69 74 0a 20 20 69 6e 73 74 65 61 64 2e  | t.at.point,.remove.it...instead. | 
| 86e00 |  0a 0a 2d 20 49 66 20 69 6e 20 44 69 72 65 64 2c    20 61 64 64 20 6d 61 72 6b 65 64 20 66 69 6c 65  | ..-.If.in.Dired,.add.marked.file | 
| 86e20 |  73 20 6f 72 20 66 69 6c 65 20 61 74 20 70 6f 69    6e 74 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78  | s.or.file.at.point.to.the.contex | 
| 86e40 |  74 2e 20 49 66 0a 20 20 74 68 65 20 73 65 6c 65    63 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 64  | t..If...the.selection.includes.d | 
| 86e60 |  69 72 65 63 74 6f 72 69 65 73 2c 20 61 64 64 20    61 6c 6c 20 74 68 65 69 72 20 66 69 6c 65 73 20  | irectories,.add.all.their.files. | 
| 86e80 |  72 65 63 75 72 73 69 76 65 6c 79 2c 0a 20 20 70    72 6f 6d 70 74 69 6e 67 20 74 68 65 20 75 73 65  | recursively,...prompting.the.use | 
| 86ea0 |  72 20 66 6f 72 20 63 6f 6e 66 69 72 6d 61 74 69    6f 6e 20 69 66 20 63 61 6c 6c 65 64 20 69 6e 74  | r.for.confirmation.if.called.int | 
| 86ec0 |  65 72 61 63 74 69 76 65 6c 79 20 6f 72 0a 20 20    43 4f 4e 46 49 52 4d 20 69 73 20 6e 6f 6e 2d 6e  | eractively.or...CONFIRM.is.non-n | 
| 86ee0 |  69 6c 2e 20 57 69 74 68 20 6e 65 67 61 74 69 76    65 20 70 72 65 66 69 78 20 41 52 47 2c 20 72 65  | il..With.negative.prefix.ARG,.re | 
| 86f00 |  6d 6f 76 65 20 61 6c 6c 20 66 69 6c 65 73 20 66    72 6f 6d 0a 20 20 74 68 65 20 63 6f 6e 74 65 78  | move.all.files.from...the.contex | 
| 86f20 |  74 20 69 6e 73 74 65 61 64 2e 0a 0a 2d 20 4f 74    68 65 72 77 69 73 65 20 61 64 64 20 74 68 65 20  | t.instead...-.Otherwise.add.the. | 
| 86f40 |  63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 74    6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 20 20  | current.buffer.to.the.context... | 
| 86f60 |  57 69 74 68 20 70 6f 73 69 74 69 76 65 0a 20 20    70 72 65 66 69 78 20 41 52 47 2c 20 70 72 6f 6d  | With.positive...prefix.ARG,.prom | 
| 86f80 |  70 74 20 66 6f 72 20 61 20 62 75 66 66 65 72 20    6e 61 6d 65 20 61 6e 64 20 61 64 64 20 69 74 20  | pt.for.a.buffer.name.and.add.it. | 
| 86fa0 |  74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a    0a 2d 20 57 69 74 68 20 6e 65 67 61 74 69 76 65  | to.the.context...-.With.negative | 
| 86fc0 |  20 70 72 65 66 69 78 20 41 52 47 2c 20 72 65 6d    6f 76 65 20 61 6c 6c 20 67 70 74 65 6c 20 63 6f  | .prefix.ARG,.remove.all.gptel.co | 
| 86fe0 |  6e 74 65 78 74 73 20 66 72 6f 6d 20 74 68 65 20    63 75 72 72 65 6e 74 0a 20 20 62 75 66 66 65 72  | ntexts.from.the.current...buffer | 
| 87000 |  2c 20 70 72 6f 6d 70 74 69 6e 67 20 74 68 65 20    75 73 65 72 20 66 6f 72 20 63 6f 6e 66 69 72 6d  | ,.prompting.the.user.for.confirm | 
| 87020 |  61 74 69 6f 6e 20 69 66 20 63 61 6c 6c 65 64 20    69 6e 74 65 72 61 63 74 69 76 65 6c 79 0a 20 20  | ation.if.called.interactively... | 
| 87040 |  6f 72 20 43 4f 4e 46 49 52 4d 20 69 73 20 6e 6f    6e 2d 6e 69 6c 2e 22 0a 20 20 28 69 6e 74 65 72  | or.CONFIRM.is.non-nil."...(inter | 
| 87060 |  61 63 74 69 76 65 20 22 50 5c 6e 70 22 29 0a 20    20 28 63 6f 6e 64 0a 20 20 20 3b 3b 20 41 20 72  | active."P\np")...(cond....;;.A.r | 
| 87080 |  65 67 69 6f 6e 20 69 73 20 73 65 6c 65 63 74 65    64 2e 0a 20 20 20 28 28 75 73 65 2d 72 65 67 69  | egion.is.selected.....((use-regi | 
| 870a0 |  6f 6e 2d 70 29 0a 20 20 20 20 28 67 70 74 65 6c    2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 72 65  | on-p).....(gptel-context--add-re | 
| 870c0 |  67 69 6f 6e 20 28 63 75 72 72 65 6e 74 2d 62 75    66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20  | gion.(current-buffer)........... | 
| 870e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d  | ........................(region- | 
| 87100 |  62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | beginning)...................... | 
| 87120 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65    67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 28  | .............(region-end)).....( | 
| 87140 |  64 65 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29    0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43  | deactivate-mark).....(message."C | 
| 87160 |  75 72 72 65 6e 74 20 72 65 67 69 6f 6e 20 61 64    64 65 64 20 61 73 20 63 6f 6e 74 65 78 74 2e 22  | urrent.region.added.as.context." | 
| 87180 |  29 29 0a 20 20 20 3b 3b 20 49 66 20 69 6e 20 64    69 72 65 64 0a 20 20 20 28 28 64 65 72 69 76 65  | ))....;;.If.in.dired....((derive | 
| 871a0 |  64 2d 6d 6f 64 65 2d 70 20 27 64 69 72 65 64 2d    6d 6f 64 65 29 0a 20 20 20 20 28 6c 65 74 2a 20  | d-mode-p.'dired-mode).....(let*. | 
| 871c0 |  28 28 66 69 6c 65 73 20 28 64 69 72 65 64 2d 67    65 74 2d 6d 61 72 6b 65 64 2d 66 69 6c 65 73 29  | ((files.(dired-get-marked-files) | 
| 871e0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 69    72 73 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66  | )............(dirs.(cl-remove-if | 
| 87200 |  2d 6e 6f 74 20 23 27 66 69 6c 65 2d 64 69 72 65    63 74 6f 72 79 2d 70 20 66 69 6c 65 73 29 29 0a  | -not.#'file-directory-p.files)). | 
| 87220 |  20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f    76 65 2d 70 20 28 3c 20 28 70 72 65 66 69 78 2d  | ...........(remove-p.(<.(prefix- | 
| 87240 |  6e 75 6d 65 72 69 63 2d 76 61 6c 75 65 20 61 72    67 29 20 30 29 29 0a 09 20 20 20 28 61 63 74 69  | numeric-value.arg).0)).....(acti | 
| 87260 |  6f 6e 2d 66 6e 20 28 69 66 20 72 65 6d 6f 76 65    2d 70 0a 09 09 09 20 20 23 27 67 70 74 65 6c 2d  | on-fn.(if.remove-p......#'gptel- | 
| 87280 |  63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 0a 09    09 09 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | context-remove....#'gptel-contex | 
| 872a0 |  74 2d 61 64 64 2d 66 69 6c 65 29 29 29 0a 20 20    20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 72 65  | t-add-file))).......(when.(or.re | 
| 872c0 |  6d 6f 76 65 2d 70 20 28 6e 75 6c 6c 20 64 69 72    73 29 20 28 6e 75 6c 6c 20 63 6f 6e 66 69 72 6d  | move-p.(null.dirs).(null.confirm | 
| 872e0 |  29 0a 09 09 28 79 2d 6f 72 2d 6e 2d 70 20 28 66    6f 72 6d 61 74 20 22 52 65 63 75 72 73 69 76 65  | )...(y-or-n-p.(format."Recursive | 
| 87300 |  6c 79 20 61 64 64 20 66 69 6c 65 73 20 66 72 6f    6d 20 25 64 20 64 69 72 65 63 74 6f 72 25 73 3f  | ly.add.files.from.%d.director%s? | 
| 87320 |  20 22 0a 09 09 09 09 20 20 28 6c 65 6e 67 74 68    20 64 69 72 73 29 0a 09 09 09 09 20 20 28 69 66  | .".......(length.dirs).......(if | 
| 87340 |  20 28 3d 20 28 6c 65 6e 67 74 68 20 64 69 72 73    29 20 31 29 20 22 79 22 20 22 69 65 73 22 29 29  | .(=.(length.dirs).1)."y"."ies")) | 
| 87360 |  29 29 0a 09 28 6d 61 70 63 20 61 63 74 69 6f 6e    2d 66 6e 20 66 69 6c 65 73 29 29 29 29 0a 20 20  | ))..(mapc.action-fn.files))))... | 
| 87380 |  20 3b 3b 20 49 66 20 69 6e 20 61 6e 20 69 6d 61    67 65 20 62 75 66 66 65 72 0a 20 20 20 28 28 61  | .;;.If.in.an.image.buffer....((a | 
| 873a0 |  6e 64 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65    2d 70 20 27 69 6d 61 67 65 2d 6d 6f 64 65 29 0a  | nd.(derived-mode-p.'image-mode). | 
| 873c0 |  20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    2d 6d 6f 64 65 6c 2d 63 61 70 61 62 6c 65 2d 70  | .........(gptel--model-capable-p | 
| 873e0 |  20 27 6d 65 64 69 61 29 0a 20 20 20 20 20 20 20    20 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e  | .'media)..........(buffer-file-n | 
| 87400 |  61 6d 65 29 29 0a 20 20 20 20 28 66 75 6e 63 61    6c 6c 20 28 69 66 20 28 61 6e 64 20 61 72 67 20  | ame)).....(funcall.(if.(and.arg. | 
| 87420 |  28 3c 20 28 70 72 65 66 69 78 2d 6e 75 6d 65 72    69 63 2d 76 61 6c 75 65 20 61 72 67 29 20 30 29  | (<.(prefix-numeric-value.arg).0) | 
| 87440 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d  | )...............#'gptel-context- | 
| 87460 |  72 65 6d 6f 76 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 6f 6e  | remove...............#'gptel-con | 
| 87480 |  74 65 78 74 2d 61 64 64 2d 66 69 6c 65 29 0a 20    20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72  | text-add-file)...........(buffer | 
| 874a0 |  2d 66 69 6c 65 2d 6e 61 6d 65 29 29 29 0a 20 20    20 3b 3b 20 4e 6f 20 72 65 67 69 6f 6e 20 69 73  | -file-name)))....;;.No.region.is | 
| 874c0 |  20 73 65 6c 65 63 74 65 64 2c 20 61 6e 64 20 41    52 47 20 69 73 20 70 6f 73 69 74 69 76 65 2e 0a  | .selected,.and.ARG.is.positive.. | 
| 874e0 |  20 20 20 28 28 61 6e 64 20 61 72 67 20 28 3e 20    28 70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63 2d  | ...((and.arg.(>.(prefix-numeric- | 
| 87500 |  76 61 6c 75 65 20 61 72 67 29 20 30 29 29 0a 20    20 20 20 28 6c 65 74 2a 20 28 28 62 75 66 66 65  | value.arg).0)).....(let*.((buffe | 
| 87520 |  72 2d 6e 61 6d 65 20 28 72 65 61 64 2d 62 75 66    66 65 72 20 22 43 68 6f 6f 73 65 20 62 75 66 66  | r-name.(read-buffer."Choose.buff | 
| 87540 |  65 72 20 74 6f 20 61 64 64 20 61 73 20 63 6f 6e    74 65 78 74 3a 20 22 0a 20 20 20 20 20 20 20 20  | er.to.add.as.context:."......... | 
| 87560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75  | .............................(cu | 
| 87580 |  72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 74 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74  | rrent-buffer).t))............(st | 
| 875a0 |  61 72 74 20 28 77 69 74 68 2d 63 75 72 72 65 6e    74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 2d  | art.(with-current-buffer.buffer- | 
| 875c0 |  6e 61 6d 65 20 28 70 6f 69 6e 74 2d 6d 69 6e 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65  | name.(point-min)))............(e | 
| 875e0 |  6e 64 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74    2d 62 75 66 66 65 72 20 62 75 66 66 65 72 2d 6e  | nd.(with-current-buffer.buffer-n | 
| 87600 |  61 6d 65 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29    29 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d  | ame.(point-max)))).......(gptel- | 
| 87620 |  63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 72 65 67    69 6f 6e 0a 20 20 20 20 20 20 20 28 67 65 74 2d  | context--add-region........(get- | 
| 87640 |  62 75 66 66 65 72 20 62 75 66 66 65 72 2d 6e 61    6d 65 29 20 73 74 61 72 74 20 65 6e 64 20 74 29  | buffer.buffer-name).start.end.t) | 
| 87660 |  0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20    22 42 75 66 66 65 72 20 27 25 73 27 20 61 64 64  | .......(message."Buffer.'%s'.add | 
| 87680 |  65 64 20 61 73 20 63 6f 6e 74 65 78 74 2e 22 20    62 75 66 66 65 72 2d 6e 61 6d 65 29 29 29 0a 20  | ed.as.context.".buffer-name))).. | 
| 876a0 |  20 20 3b 3b 20 4e 6f 20 72 65 67 69 6f 6e 20 69    73 20 73 65 6c 65 63 74 65 64 2c 20 61 6e 64 20  | ..;;.No.region.is.selected,.and. | 
| 876c0 |  41 52 47 20 69 73 20 6e 65 67 61 74 69 76 65 2e    0a 20 20 20 28 28 61 6e 64 20 61 72 67 20 28 3c  | ARG.is.negative.....((and.arg.(< | 
| 876e0 |  20 28 70 72 65 66 69 78 2d 6e 75 6d 65 72 69 63    2d 76 61 6c 75 65 20 61 72 67 29 20 30 29 29 0a  | .(prefix-numeric-value.arg).0)). | 
| 87700 |  20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6e    75 6c 6c 20 63 6f 6e 66 69 72 6d 29 0a 09 20 20  | ....(when.(or.(null.confirm).... | 
| 87720 |  20 20 20 20 28 79 2d 6f 72 2d 6e 2d 70 20 22 52    65 6d 6f 76 65 20 61 6c 6c 20 63 6f 6e 74 65 78  | ....(y-or-n-p."Remove.all.contex | 
| 87740 |  74 73 20 66 72 6f 6d 20 74 68 69 73 20 62 75 66    66 65 72 3f 20 22 29 29 0a 20 20 20 20 20 20 28  | ts.from.this.buffer?.")).......( | 
| 87760 |  6c 65 74 20 28 28 72 65 6d 6f 76 65 64 2d 63 6f    6e 74 65 78 74 73 20 30 29 29 0a 20 20 20 20 20  | let.((removed-contexts.0))...... | 
| 87780 |  20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20    63 6f 76 20 69 6e 0a 20 20 20 20 20 20 20 20 20  | ...(cl-loop.for.cov.in.......... | 
| 877a0 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63    6f 6e 74 65 78 74 2d 2d 69 6e 2d 72 65 67 69 6f  | ........(gptel-context--in-regio | 
| 877c0 |  6e 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65    72 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28  | n.(current-buffer).(point-min).( | 
| 877e0 |  70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20  | point-max))..................do. | 
| 87800 |  28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c  | (progn.......................(cl | 
| 87820 |  2d 69 6e 63 66 20 72 65 6d 6f 76 65 64 2d 63 6f    6e 74 65 78 74 73 29 0a 20 20 20 20 20 20 20 20  | -incf.removed-contexts)......... | 
| 87840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67    70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d  | ..............(gptel-context-rem | 
| 87860 |  6f 76 65 20 63 6f 76 29 29 29 0a 20 20 20 20 20    20 20 20 28 6d 65 73 73 61 67 65 20 28 66 6f 72  | ove.cov))).........(message.(for | 
| 87880 |  6d 61 74 20 22 25 64 20 63 6f 6e 74 65 78 74 25    73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 63  | mat."%d.context%s.removed.from.c | 
| 878a0 |  75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 22 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | urrent.buffer."................. | 
| 878c0 |  20 20 20 20 20 20 20 20 20 72 65 6d 6f 76 65 64    2d 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 20 20  | .........removed-contexts....... | 
| 878e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 69 66 20 28 3d 20 72 65 6d 6f 76 65  | ...................(if.(=.remove | 
| 87900 |  64 2d 63 6f 6e 74 65 78 74 73 20 31 29 20 22 22    20 22 73 22 29 29 29 29 29 29 0a 20 20 20 28 74  | d-contexts.1).""."s"))))))....(t | 
| 87920 |  20 3b 20 44 65 66 61 75 6c 74 20 62 65 68 61 76    69 6f 72 0a 20 20 20 20 28 69 66 20 28 67 70 74  | .;.Default.behavior.....(if.(gpt | 
| 87940 |  65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70    6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 28 70  | el-context--at-point).........(p | 
| 87960 |  72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 28    67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65  | rogn...........(gptel-context-re | 
| 87980 |  6d 6f 76 65 20 28 63 61 72 20 28 67 70 74 65 6c    2d 63 6f 6e 74 65 78 74 2d 2d 69 6e 2d 72 65 67  | move.(car.(gptel-context--in-reg | 
| 879a0 |  69 6f 6e 20 28 63 75 72 72 65 6e 74 2d 62 75 66    66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ion.(current-buffer)............ | 
| 879c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 879e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d  | ....................(max.(point- | 
| 87a00 |  6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | min).(1-.(point))).............. | 
| 87a20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 87a40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20  | ..................(point)))).... | 
| 87a60 |  20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20    22 43 6f 6e 74 65 78 74 20 75 6e 64 65 72 20 70  | .......(message."Context.under.p | 
| 87a80 |  6f 69 6e 74 20 68 61 73 20 62 65 65 6e 20 72 65    6d 6f 76 65 64 2e 22 29 29 0a 20 20 20 20 20 20  | oint.has.been.removed."))....... | 
| 87aa0 |  28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d    61 64 64 2d 72 65 67 69 6f 6e 20 28 63 75 72 72  | (gptel-context--add-region.(curr | 
| 87ac0 |  65 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f 69    6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d  | ent-buffer).(point-min).(point-m | 
| 87ae0 |  61 78 29 20 74 29 0a 20 20 20 20 20 20 28 6d 65    73 73 61 67 65 20 22 43 75 72 72 65 6e 74 20 62  | ax).t).......(message."Current.b | 
| 87b00 |  75 66 66 65 72 20 61 64 64 65 64 20 61 73 20 63    6f 6e 74 65 78 74 2e 22 29 29 29 29 29 0a 0a 3b  | uffer.added.as.context.")))))..; | 
| 87b20 |  3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28 61    75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d 61  | ;;###autoload.(autoload.'gptel-a | 
| 87b40 |  64 64 20 22 67 70 74 65 6c 2d 63 6f 6e 74 65 78    74 22 20 22 41 64 64 2f 72 65 6d 6f 76 65 20 72  | dd."gptel-context"."Add/remove.r | 
| 87b60 |  65 67 69 6f 6e 73 20 6f 72 20 62 75 66 66 65 72    73 20 66 72 6f 6d 20 67 70 74 65 6c 27 73 20 63  | egions.or.buffers.from.gptel's.c | 
| 87b80 |  6f 6e 74 65 78 74 2e 22 20 74 29 0a 28 64 65 66    61 6c 69 61 73 20 27 67 70 74 65 6c 2d 61 64 64  | ontext.".t).(defalias.'gptel-add | 
| 87ba0 |  20 23 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74    2d 61 64 64 29 0a 0a 28 64 65 66 75 6e 20 67 70  | .#'gptel-context-add)..(defun.gp | 
| 87bc0 |  74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64    2d 74 65 78 74 2d 66 69 6c 65 20 28 70 61 74 68  | tel-context--add-text-file.(path | 
| 87be0 |  29 0a 20 20 22 41 64 64 20 74 65 78 74 20 66 69    6c 65 20 61 74 20 50 41 54 48 20 74 6f 20 63 6f  | )..."Add.text.file.at.PATH.to.co | 
| 87c00 |  6e 74 65 78 74 2e 22 0a 20 20 28 63 6c 2d 70 75    73 68 6e 65 77 20 28 6c 69 73 74 20 70 61 74 68  | ntext."...(cl-pushnew.(list.path | 
| 87c20 |  29 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    2d 61 6c 69 73 74 20 3a 74 65 73 74 20 23 27 65  | ).gptel-context--alist.:test.#'e | 
| 87c40 |  71 75 61 6c 29 0a 20 20 28 6d 65 73 73 61 67 65    20 22 46 69 6c 65 20 5c 22 25 73 5c 22 20 61 64  | qual)...(message."File.\"%s\".ad | 
| 87c60 |  64 65 64 20 74 6f 20 63 6f 6e 74 65 78 74 2e 22    20 70 61 74 68 29 0a 20 20 70 61 74 68 29 0a 0a  | ded.to.context.".path)...path).. | 
| 87c80 |  28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e    74 65 78 74 2d 2d 61 64 64 2d 62 69 6e 61 72 79  | (defun.gptel-context--add-binary | 
| 87ca0 |  2d 66 69 6c 65 20 28 70 61 74 68 29 0a 20 20 22    41 64 64 20 62 69 6e 61 72 79 20 66 69 6c 65 20  | -file.(path)..."Add.binary.file. | 
| 87cc0 |  61 74 20 50 41 54 48 20 74 6f 20 63 6f 6e 74 65    78 74 20 69 66 20 73 75 70 70 6f 72 74 65 64 2e  | at.PATH.to.context.if.supported. | 
| 87ce0 |  0a 52 65 74 75 72 6e 20 50 41 54 48 20 69 66 20    61 64 64 65 64 2c 20 6e 69 6c 20 69 66 20 69 67  | .Return.PATH.if.added,.nil.if.ig | 
| 87d00 |  6e 6f 72 65 64 2e 22 0a 20 20 28 69 66 2d 6c 65    74 2a 20 28 28 28 67 70 74 65 6c 2d 2d 6d 6f 64  | nored."...(if-let*.(((gptel--mod | 
| 87d20 |  65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6d 65    64 69 61 29 29 0a 20 20 20 20 20 20 20 20 20 20  | el-capable-p.'media))........... | 
| 87d40 |  20 20 28 6d 69 6d 65 20 28 6d 61 69 6c 63 61 70    2d 66 69 6c 65 2d 6e 61 6d 65 2d 74 6f 2d 6d 69  | ..(mime.(mailcap-file-name-to-mi | 
| 87d60 |  6d 65 2d 74 79 70 65 20 70 61 74 68 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 28 28 67 70 74  | me-type.path)).............((gpt | 
| 87d80 |  65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d 65 2d 63    61 70 61 62 6c 65 2d 70 20 6d 69 6d 65 29 29 29  | el--model-mime-capable-p.mime))) | 
| 87da0 |  0a 20 20 20 20 20 20 28 70 72 6f 67 31 20 70 61    74 68 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 70  | .......(prog1.path.........(cl-p | 
| 87dc0 |  75 73 68 6e 65 77 20 28 6c 69 73 74 20 70 61 74    68 20 3a 6d 69 6d 65 20 6d 69 6d 65 29 0a 20 20  | ushnew.(list.path.:mime.mime)... | 
| 87de0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d  | ..................gptel-context- | 
| 87e00 |  2d 61 6c 69 73 74 20 3a 74 65 73 74 20 23 27 65    71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 28 6d  | -alist.:test.#'equal).........(m | 
| 87e20 |  65 73 73 61 67 65 20 22 46 69 6c 65 20 5c 22 25    73 5c 22 20 61 64 64 65 64 20 74 6f 20 63 6f 6e  | essage."File.\"%s\".added.to.con | 
| 87e40 |  74 65 78 74 2e 22 20 70 61 74 68 29 29 0a 20 20    20 20 28 6d 65 73 73 61 67 65 20 22 49 67 6e 6f  | text.".path)).....(message."Igno | 
| 87e60 |  72 69 6e 67 20 75 6e 73 75 70 70 6f 72 74 65 64    20 62 69 6e 61 72 79 20 66 69 6c 65 20 5c 22 25  | ring.unsupported.binary.file.\"% | 
| 87e80 |  73 5c 22 2e 22 20 70 61 74 68 29 0a 20 20 20 20    6e 69 6c 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | s\".".path).....nil))..(defun.gp | 
| 87ea0 |  74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64    2d 64 69 72 65 63 74 6f 72 79 20 28 70 61 74 68  | tel-context--add-directory.(path | 
| 87ec0 |  20 61 63 74 69 6f 6e 29 0a 20 20 22 50 72 6f 63    65 73 73 20 61 6c 6c 20 66 69 6c 65 73 20 69 6e  | .action)..."Process.all.files.in | 
| 87ee0 |  20 64 69 72 65 63 74 6f 72 79 20 61 74 20 50 41    54 48 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20  | .directory.at.PATH.according.to. | 
| 87f00 |  41 43 54 49 4f 4e 2e 0a 41 43 54 49 4f 4e 20 73    68 6f 75 6c 64 20 62 65 20 65 69 74 68 65 72 20  | ACTION..ACTION.should.be.either. | 
| 87f20 |  60 61 64 64 27 20 6f 72 20 60 72 65 6d 6f 76 65    27 2e 22 0a 20 20 28 6c 65 74 20 28 28 66 69 6c  | `add'.or.`remove'."...(let.((fil | 
| 87f40 |  65 73 20 28 64 69 72 65 63 74 6f 72 79 2d 66 69    6c 65 73 2d 72 65 63 75 72 73 69 76 65 6c 79 20  | es.(directory-files-recursively. | 
| 87f60 |  70 61 74 68 20 22 2e 22 20 74 29 29 29 0a 20 20    20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20  | path.".".t))).....(mapc.(lambda. | 
| 87f80 |  28 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 75 6e 6c 65 73 73 20 28 66 69 6c 65  | (file).............(unless.(file | 
| 87fa0 |  2d 64 69 72 65 63 74 6f 72 79 2d 70 20 66 69 6c    65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | -directory-p.file).............. | 
| 87fc0 |  20 28 70 63 61 73 65 2d 65 78 68 61 75 73 74 69    76 65 20 61 63 74 69 6f 6e 0a 20 20 20 20 20 20  | .(pcase-exhaustive.action....... | 
| 87fe0 |  20 20 20 20 20 20 20 20 20 20 28 27 61 64 64 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........('add................. | 
| 88000 |  20 28 69 66 20 28 67 70 74 65 6c 2d 2d 66 69 6c    65 2d 62 69 6e 61 72 79 2d 70 20 66 69 6c 65 29  | .(if.(gptel--file-binary-p.file) | 
| 88020 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e  | ......................(gptel-con | 
| 88040 |  74 65 78 74 2d 2d 61 64 64 2d 62 69 6e 61 72 79    2d 66 69 6c 65 20 66 69 6c 65 29 0a 20 20 20 20  | text--add-binary-file.file)..... | 
| 88060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61  | ...............(gptel-context--a | 
| 88080 |  64 64 2d 74 65 78 74 2d 66 69 6c 65 20 66 69 6c    65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | dd-text-file.file)))............ | 
| 880a0 |  20 20 20 20 20 28 27 72 65 6d 6f 76 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | .....('remove..................( | 
| 880c0 |  73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20    66 69 6c 65 20 67 70 74 65 6c 2d 63 6f 6e 74 65  | setf.(alist-get.file.gptel-conte | 
| 880e0 |  78 74 2d 2d 61 6c 69 73 74 20 6e 69 6c 20 27 72    65 6d 6f 76 65 20 23 27 65 71 75 61 6c 29 20 6e  | xt--alist.nil.'remove.#'equal).n | 
| 88100 |  69 6c 29 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 66 69 6c 65 73 29 0a 20 20 20 20 28 77 68  | il)))))...........files).....(wh | 
| 88120 |  65 6e 20 28 65 71 20 61 63 74 69 6f 6e 20 27 72    65 6d 6f 76 65 29 0a 20 20 20 20 20 20 28 6d 65  | en.(eq.action.'remove).......(me | 
| 88140 |  73 73 61 67 65 20 22 44 69 72 65 63 74 6f 72 79    20 5c 22 25 73 5c 22 20 72 65 6d 6f 76 65 64 20  | ssage."Directory.\"%s\".removed. | 
| 88160 |  66 72 6f 6d 20 63 6f 6e 74 65 78 74 2e 22 20 70    61 74 68 29 29 29 29 0a 0a 28 64 65 66 75 6e 20  | from.context.".path))))..(defun. | 
| 88180 |  67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 61 64    64 2d 66 69 6c 65 20 28 70 61 74 68 29 0a 20 20  | gptel-context-add-file.(path)... | 
| 881a0 |  22 41 64 64 20 74 68 65 20 66 69 6c 65 20 61 74    20 50 41 54 48 20 74 6f 20 74 68 65 20 67 70 74  | "Add.the.file.at.PATH.to.the.gpt | 
| 881c0 |  65 6c 20 63 6f 6e 74 65 78 74 2e 0a 0a 49 66 20    50 41 54 48 20 69 73 20 61 20 64 69 72 65 63 74  | el.context...If.PATH.is.a.direct | 
| 881e0 |  6f 72 79 2c 20 72 65 63 75 72 73 69 76 65 6c 79    20 61 64 64 20 61 6c 6c 20 66 69 6c 65 73 20 69  | ory,.recursively.add.all.files.i | 
| 88200 |  6e 20 69 74 2e 0a 50 41 54 48 20 73 68 6f 75 6c    64 20 62 65 20 72 65 61 64 61 62 6c 65 20 61 73  | n.it..PATH.should.be.readable.as | 
| 88220 |  20 74 65 78 74 2e 22 0a 20 20 28 69 6e 74 65 72    61 63 74 69 76 65 20 22 66 43 68 6f 6f 73 65 20  | .text."...(interactive."fChoose. | 
| 88240 |  66 69 6c 65 20 74 6f 20 61 64 64 20 74 6f 20 63    6f 6e 74 65 78 74 3a 20 22 29 0a 20 20 28 63 6f  | file.to.add.to.context:.")...(co | 
| 88260 |  6e 64 20 28 28 66 69 6c 65 2d 64 69 72 65 63 74    6f 72 79 2d 70 20 70 61 74 68 29 0a 09 20 28 67  | nd.((file-directory-p.path)...(g | 
| 88280 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64    64 2d 64 69 72 65 63 74 6f 72 79 20 70 61 74 68  | ptel-context--add-directory.path | 
| 882a0 |  20 27 61 64 64 29 29 0a 09 28 28 67 70 74 65 6c    2d 2d 66 69 6c 65 2d 62 69 6e 61 72 79 2d 70 20  | .'add))..((gptel--file-binary-p. | 
| 882c0 |  70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 28    67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61  | path)..........(gptel-context--a | 
| 882e0 |  64 64 2d 62 69 6e 61 72 79 2d 66 69 6c 65 20 70    61 74 68 29 29 0a 09 28 28 67 70 74 65 6c 2d 63  | dd-binary-file.path))..((gptel-c | 
| 88300 |  6f 6e 74 65 78 74 2d 2d 61 64 64 2d 74 65 78 74    2d 66 69 6c 65 20 70 61 74 68 29 29 29 29 0a 0a  | ontext--add-text-file.path)))).. | 
| 88320 |  3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28    61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65 6c 2d  | ;;;###autoload.(autoload.'gptel- | 
| 88340 |  61 64 64 2d 66 69 6c 65 20 22 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 22 20 22 41 64 64 20 66 69  | add-file."gptel-context"."Add.fi | 
| 88360 |  6c 65 73 20 74 6f 20 67 70 74 65 6c 27 73 20 63    6f 6e 74 65 78 74 2e 22 20 74 29 0a 28 64 65 66  | les.to.gptel's.context.".t).(def | 
| 88380 |  61 6c 69 61 73 20 27 67 70 74 65 6c 2d 61 64 64    2d 66 69 6c 65 20 23 27 67 70 74 65 6c 2d 63 6f  | alias.'gptel-add-file.#'gptel-co | 
| 883a0 |  6e 74 65 78 74 2d 61 64 64 2d 66 69 6c 65 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f  | ntext-add-file)..(defun.gptel-co | 
| 883c0 |  6e 74 65 78 74 2d 72 65 6d 6f 76 65 20 28 26 6f    70 74 69 6f 6e 61 6c 20 63 6f 6e 74 65 78 74 29  | ntext-remove.(&optional.context) | 
| 883e0 |  0a 20 20 22 52 65 6d 6f 76 65 20 74 68 65 20 43    4f 4e 54 45 58 54 20 6f 76 65 72 6c 61 79 20 66  | ..."Remove.the.CONTEXT.overlay.f | 
| 88400 |  72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 78 74 73    20 6c 69 73 74 2e 0a 0a 49 66 20 43 4f 4e 54 45  | rom.the.contexts.list...If.CONTE | 
| 88420 |  58 54 20 69 73 20 6e 69 6c 2c 20 72 65 6d 6f 76    65 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 61  | XT.is.nil,.removes.the.context.a | 
| 88440 |  74 20 70 6f 69 6e 74 2e 0a 49 66 20 73 65 6c 65    63 74 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2c  | t.point..If.selection.is.active, | 
| 88460 |  20 72 65 6d 6f 76 65 73 20 61 6c 6c 20 63 6f 6e    74 65 78 74 73 20 77 69 74 68 69 6e 20 73 65 6c  | .removes.all.contexts.within.sel | 
| 88480 |  65 63 74 69 6f 6e 2e 0a 49 66 20 43 4f 4e 54 45    58 54 20 69 73 20 61 20 64 69 72 65 63 74 6f 72  | ection..If.CONTEXT.is.a.director | 
| 884a0 |  79 2c 20 72 65 63 75 72 73 69 76 65 6c 79 20 72    65 6d 6f 76 65 73 20 61 6c 6c 20 66 69 6c 65 73  | y,.recursively.removes.all.files | 
| 884c0 |  20 69 6e 20 69 74 2e 22 0a 20 20 28 63 6f 6e 64    0a 20 20 20 28 28 6f 76 65 72 6c 61 79 70 20 63  | .in.it."...(cond....((overlayp.c | 
| 884e0 |  6f 6e 74 65 78 74 29 0a 20 20 20 20 28 64 65 6c    65 74 65 2d 6f 76 65 72 6c 61 79 20 63 6f 6e 74  | ontext).....(delete-overlay.cont | 
| 88500 |  65 78 74 29 0a 20 20 20 20 3b 3b 20 46 49 58 4d    45 3a 20 51 75 61 64 72 61 74 69 63 20 63 6f 73  | ext).....;;.FIXME:.Quadratic.cos | 
| 88520 |  74 20 77 68 65 6e 20 63 6c 65 61 72 69 6e 67 20    61 20 62 75 6e 63 68 20 6f 66 20 63 6f 6e 74 65  | t.when.clearing.a.bunch.of.conte | 
| 88540 |  78 74 73 20 61 74 20 6f 6e 63 65 0a 20 20 20 20    28 75 6e 6c 65 73 73 0a 20 20 20 20 20 20 20 20  | xts.at.once.....(unless......... | 
| 88560 |  28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20    20 20 66 6f 72 20 6f 76 20 69 6e 20 28 61 6c 69  | (cl-loop..........for.ov.in.(ali | 
| 88580 |  73 74 2d 67 65 74 20 28 63 75 72 72 65 6e 74 2d    62 75 66 66 65 72 29 20 67 70 74 65 6c 2d 63 6f  | st-get.(current-buffer).gptel-co | 
| 885a0 |  6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 0a 20 20    20 20 20 20 20 20 20 74 68 65 72 65 69 73 20 28  | ntext--alist)..........thereis.( | 
| 885c0 |  6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76    29 29 0a 20 20 20 20 20 20 28 73 65 74 66 20 28  | overlay-start.ov)).......(setf.( | 
| 885e0 |  61 6c 69 73 74 2d 67 65 74 20 28 63 75 72 72 65    6e 74 2d 62 75 66 66 65 72 29 20 67 70 74 65 6c  | alist-get.(current-buffer).gptel | 
| 88600 |  2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 20    6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c  | -context--alist.nil.'remove).nil | 
| 88620 |  29 29 29 0a 20 20 20 28 28 73 74 72 69 6e 67 70    20 63 6f 6e 74 65 78 74 29 20 20 20 20 20 20 20  | )))....((stringp.context)....... | 
| 88640 |  20 20 20 20 20 20 20 20 20 20 20 20 3b 66 69 6c    65 20 6f 72 20 64 69 72 65 63 74 6f 72 79 0a 20  | ............;file.or.directory.. | 
| 88660 |  20 20 20 28 69 66 20 28 66 69 6c 65 2d 64 69 72    65 63 74 6f 72 79 2d 70 20 63 6f 6e 74 65 78 74  | ...(if.(file-directory-p.context | 
| 88680 |  29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c    2d 63 6f 6e 74 65 78 74 2d 2d 61 64 64 2d 64 69  | ).........(gptel-context--add-di | 
| 886a0 |  72 65 63 74 6f 72 79 20 63 6f 6e 74 65 78 74 20    27 72 65 6d 6f 76 65 29 0a 20 20 20 20 20 20 28  | rectory.context.'remove).......( | 
| 886c0 |  73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20    63 6f 6e 74 65 78 74 20 67 70 74 65 6c 2d 63 6f  | setf.(alist-get.context.gptel-co | 
| 886e0 |  6e 74 65 78 74 2d 2d 61 6c 69 73 74 20 6e 69 6c    20 27 72 65 6d 6f 76 65 20 23 27 65 71 75 61 6c  | ntext--alist.nil.'remove.#'equal | 
| 88700 |  29 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 6d 65    73 73 61 67 65 20 22 46 69 6c 65 20 5c 22 25 73  | ).nil).......(message."File.\"%s | 
| 88720 |  5c 22 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20    63 6f 6e 74 65 78 74 2e 22 20 63 6f 6e 74 65 78  | \".removed.from.context.".contex | 
| 88740 |  74 29 29 29 0a 20 20 20 28 28 72 65 67 69 6f 6e    2d 61 63 74 69 76 65 2d 70 29 0a 20 20 20 20 28  | t)))....((region-active-p).....( | 
| 88760 |  77 68 65 6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74    65 78 74 73 20 28 67 70 74 65 6c 2d 63 6f 6e 74  | when-let*.((contexts.(gptel-cont | 
| 88780 |  65 78 74 2d 2d 69 6e 2d 72 65 67 69 6f 6e 20 28    63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a  | ext--in-region.(current-buffer). | 
| 887a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 887c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 67 69  | ....................(region-begi | 
| 887e0 |  6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nning).......................... | 
| 88800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69  | ...........................(regi | 
| 88820 |  6f 6e 2d 65 6e 64 29 29 29 29 0a 20 20 20 20 20    20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 63 74  | on-end)))).......(cl-loop.for.ct | 
| 88840 |  78 20 69 6e 20 63 6f 6e 74 65 78 74 73 20 64 6f    20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79  | x.in.contexts.do.(delete-overlay | 
| 88860 |  20 63 74 78 29 29 29 29 0a 20 20 20 28 74 0a 20    20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28  | .ctx))))....(t.....(when-let*.(( | 
| 88880 |  63 74 78 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 2d 61 74 2d 70 6f 69 6e 74 29 29 29 0a  | ctx.(gptel-context--at-point))). | 
| 888a0 |  20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 6f 76    65 72 6c 61 79 20 63 74 78 29 29 29 29 29 0a 0a  | ......(delete-overlay.ctx))))).. | 
| 888c0 |  28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e    74 65 78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 20  | (defun.gptel-context-remove-all. | 
| 888e0 |  28 26 6f 70 74 69 6f 6e 61 6c 20 76 65 72 62 6f    73 65 29 0a 20 20 22 52 65 6d 6f 76 65 20 61 6c  | (&optional.verbose)..."Remove.al | 
| 88900 |  6c 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74 2e    0a 0a 49 66 20 56 45 52 42 4f 53 45 20 69 73 20  | l.gptel.context...If.VERBOSE.is. | 
| 88920 |  6e 6f 6e 2d 6e 69 6c 2c 20 61 73 6b 20 66 6f 72    20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 20 61 6e  | non-nil,.ask.for.confirmation.an | 
| 88940 |  64 20 6d 65 73 73 61 67 65 0a 61 66 74 65 72 77    61 72 64 73 2e 22 0a 20 20 28 69 6e 74 65 72 61  | d.message.afterwards."...(intera | 
| 88960 |  63 74 69 76 65 20 28 6c 69 73 74 20 74 29 29 0a    20 20 28 69 66 20 28 6e 75 6c 6c 20 67 70 74 65  | ctive.(list.t))...(if.(null.gpte | 
| 88980 |  6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74    29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 76 65  | l-context--alist).......(when.ve | 
| 889a0 |  72 62 6f 73 65 20 28 6d 65 73 73 61 67 65 20 22    4e 6f 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74  | rbose.(message."No.gptel.context | 
| 889c0 |  20 73 6f 75 72 63 65 73 20 74 6f 20 72 65 6d 6f    76 65 2e 22 29 29 0a 20 20 20 20 28 77 68 65 6e  | .sources.to.remove.")).....(when | 
| 889e0 |  20 28 6f 72 20 28 6e 6f 74 20 76 65 72 62 6f 73    65 29 20 28 79 2d 6f 72 2d 6e 2d 70 20 22 52 65  | .(or.(not.verbose).(y-or-n-p."Re | 
| 88a00 |  6d 6f 76 65 20 61 6c 6c 20 63 6f 6e 74 65 78 74    3f 20 22 29 29 0a 20 20 20 20 20 20 28 63 6c 2d  | move.all.context?.")).......(cl- | 
| 88a20 |  6c 6f 6f 70 0a 20 20 20 20 20 20 20 66 6f 72 20    28 73 6f 75 72 63 65 20 2e 20 6f 76 73 29 20 69  | loop........for.(source...ovs).i | 
| 88a40 |  6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 69 66  | n.gptel-context--alist........if | 
| 88a60 |  20 28 62 75 66 66 65 72 70 20 73 6f 75 72 63 65    29 20 64 6f 20 20 20 20 20 20 20 20 20 20 20 3b  | .(bufferp.source).do...........; | 
| 88a80 |  42 75 66 66 65 72 73 20 61 6e 64 20 62 75 66 66    65 72 20 72 65 67 69 6f 6e 73 0a 20 20 20 20 20  | Buffers.and.buffer.regions...... | 
| 88aa0 |  20 20 28 6d 61 70 63 20 23 27 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 20 6f  | ..(mapc.#'gptel-context-remove.o | 
| 88ac0 |  76 73 29 0a 20 20 20 20 20 20 20 65 6c 73 65 20    64 6f 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | vs)........else.do.(gptel-contex | 
| 88ae0 |  74 2d 72 65 6d 6f 76 65 20 73 6f 75 72 63 65 29    20 3b 66 69 6c 65 73 20 6f 72 20 6f 74 68 65 72  | t-remove.source).;files.or.other | 
| 88b00 |  20 74 79 70 65 73 0a 20 20 20 20 20 20 20 66 69    6e 61 6c 6c 79 20 64 6f 20 28 73 65 74 71 20 67  | .types........finally.do.(setq.g | 
| 88b20 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c    69 73 74 20 6e 69 6c 29 29 29 0a 20 20 20 20 28  | ptel-context--alist.nil))).....( | 
| 88b40 |  77 68 65 6e 20 76 65 72 62 6f 73 65 20 28 6d 65    73 73 61 67 65 20 22 52 65 6d 6f 76 65 64 20 61  | when.verbose.(message."Removed.a | 
| 88b60 |  6c 6c 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74    20 73 6f 75 72 63 65 73 2e 22 29 29 29 29 0a 0a  | ll.gptel.context.sources.")))).. | 
| 88b80 |  28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e    74 65 78 74 2d 2d 6d 61 6b 65 2d 6f 76 65 72 6c  | (defun.gptel-context--make-overl | 
| 88ba0 |  61 79 20 28 73 74 61 72 74 20 65 6e 64 20 26 6f    70 74 69 6f 6e 61 6c 20 61 64 76 61 6e 63 65 29  | ay.(start.end.&optional.advance) | 
| 88bc0 |  0a 20 20 22 48 69 67 68 6c 69 67 68 74 20 74 68    65 20 72 65 67 69 6f 6e 20 66 72 6f 6d 20 53 54  | ..."Highlight.the.region.from.ST | 
| 88be0 |  41 52 54 20 74 6f 20 45 4e 44 2e 0a 0a 41 44 56    41 4e 43 45 20 63 6f 6e 74 72 6f 6c 73 20 74 68  | ART.to.END...ADVANCE.controls.th | 
| 88c00 |  65 20 6f 76 65 72 6c 61 79 20 62 6f 75 6e 64 61    72 79 20 62 65 68 61 76 69 6f 72 2e 22 0a 20 20  | e.overlay.boundary.behavior."... | 
| 88c20 |  28 6c 65 74 20 28 28 6f 76 65 72 6c 61 79 20 28    6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 73 74 61  | (let.((overlay.(make-overlay.sta | 
| 88c40 |  72 74 20 65 6e 64 20 6e 69 6c 20 28 6e 6f 74 20    61 64 76 61 6e 63 65 29 20 61 64 76 61 6e 63 65  | rt.end.nil.(not.advance).advance | 
| 88c60 |  29 29 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79    2d 70 75 74 20 6f 76 65 72 6c 61 79 20 27 65 76  | ))).....(overlay-put.overlay.'ev | 
| 88c80 |  61 70 6f 72 61 74 65 20 74 29 0a 20 20 20 20 28    6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 65 72  | aporate.t).....(overlay-put.over | 
| 88ca0 |  6c 61 79 20 27 66 61 63 65 20 27 67 70 74 65 6c    2d 63 6f 6e 74 65 78 74 2d 68 69 67 68 6c 69 67  | lay.'face.'gptel-context-highlig | 
| 88cc0 |  68 74 2d 66 61 63 65 29 0a 20 20 20 20 28 6f 76    65 72 6c 61 79 2d 70 75 74 20 6f 76 65 72 6c 61  | ht-face).....(overlay-put.overla | 
| 88ce0 |  79 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74    20 74 29 0a 20 20 20 20 28 70 75 73 68 20 6f 76  | y.'gptel-context.t).....(push.ov | 
| 88d00 |  65 72 6c 61 79 20 28 61 6c 69 73 74 2d 67 65 74    20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72  | erlay.(alist-get.(current-buffer | 
| 88d20 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67  | )..............................g | 
| 88d40 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c    69 73 74 29 29 0a 20 20 20 20 6f 76 65 72 6c 61  | ptel-context--alist)).....overla | 
| 88d60 |  79 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c    6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 6c  | y))..;;;###autoload.(defun.gptel | 
| 88d80 |  2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 28    63 61 6c 6c 62 61 63 6b 20 64 61 74 61 2d 62 75  | -context--wrap.(callback.data-bu | 
| 88da0 |  66 29 0a 20 20 22 41 64 64 20 72 65 71 75 65 73    74 20 63 6f 6e 74 65 78 74 20 74 6f 20 44 41 54  | f)..."Add.request.context.to.DAT | 
| 88dc0 |  41 2d 42 55 46 20 61 6e 64 20 72 75 6e 20 43 41    4c 4c 42 41 43 4b 2e 0a 0a 44 41 54 41 2d 42 55  | A-BUF.and.run.CALLBACK...DATA-BU | 
| 88de0 |  46 20 69 73 20 74 68 65 20 62 75 66 66 65 72 20    77 68 65 72 65 20 74 68 65 20 72 65 71 75 65 73  | F.is.the.buffer.where.the.reques | 
| 88e00 |  74 20 70 72 6f 6d 70 74 20 69 73 20 63 6f 6e 73    74 72 75 63 74 65 64 2e 22 0a 20 20 28 69 66 20  | t.prompt.is.constructed."...(if. | 
| 88e20 |  28 3d 20 28 63 61 72 20 28 66 75 6e 63 2d 61 72    69 74 79 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | (=.(car.(func-arity.gptel-contex | 
| 88e40 |  74 2d 73 74 72 69 6e 67 2d 66 75 6e 63 74 69 6f    6e 29 29 20 32 29 0a 20 20 20 20 20 20 28 66 75  | t-string-function)).2).......(fu | 
| 88e60 |  6e 63 61 6c 6c 20 67 70 74 65 6c 2d 63 6f 6e 74    65 78 74 2d 73 74 72 69 6e 67 2d 66 75 6e 63 74  | ncall.gptel-context-string-funct | 
| 88e80 |  69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6c 61 6d 62 64 61 20 28 63 29 20 28  | ion................(lambda.(c).( | 
| 88ea0 |  77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66    66 65 72 20 64 61 74 61 2d 62 75 66 0a 20 20 20  | with-current-buffer.data-buf.... | 
| 88ec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74  | .....................(gptel-cont | 
| 88ee0 |  65 78 74 2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66    66 65 72 20 63 29 29 0a 20 20 20 20 20 20 20 20  | ext--wrap-in-buffer.c))......... | 
| 88f00 |  20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c    6c 20 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20  | .........(funcall.callback)).... | 
| 88f20 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c  | ............(gptel-context--coll | 
| 88f40 |  65 63 74 29 29 0a 20 20 20 20 28 77 69 74 68 2d    63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 64  | ect)).....(with-current-buffer.d | 
| 88f60 |  61 74 61 2d 62 75 66 0a 20 20 20 20 20 20 28 74    68 72 65 61 64 2d 6c 61 73 74 20 28 67 70 74 65  | ata-buf.......(thread-last.(gpte | 
| 88f80 |  6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65    63 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | l-context--collect)............. | 
| 88fa0 |  20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20    67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 73 74  | .......(funcall.gptel-context-st | 
| 88fc0 |  72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ring-function).................. | 
| 88fe0 |  20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74    2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66 66 65 72  | ..(gptel-context--wrap-in-buffer | 
| 89000 |  29 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c    20 63 61 6c 6c 62 61 63 6b 29 29 29 0a 0a 28 64  | ))).....(funcall.callback)))..(d | 
| 89020 |  65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66 66  | efun.gptel-context--wrap-in-buff | 
| 89040 |  65 72 20 28 63 6f 6e 74 65 78 74 2d 73 74 72 69    6e 67 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 65 74  | er.(context-string.&optional.met | 
| 89060 |  68 6f 64 29 0a 20 20 22 49 6e 6a 65 63 74 20 43    4f 4e 54 45 58 54 2d 53 54 52 49 4e 47 20 74 6f  | hod)..."Inject.CONTEXT-STRING.to | 
| 89080 |  20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20    75 73 69 6e 67 20 4d 45 54 48 4f 44 2e 0a 0a 4d  | .current.buffer.using.METHOD...M | 
| 890a0 |  45 54 48 4f 44 20 69 73 20 65 69 74 68 65 72 20    73 79 73 74 65 6d 20 6f 72 20 75 73 65 72 2c 20  | ETHOD.is.either.system.or.user,. | 
| 890c0 |  61 6e 64 20 64 65 66 61 75 6c 74 73 20 74 6f 20    60 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e 74 65  | and.defaults.to.`gptel-use-conte | 
| 890e0 |  78 74 27 2e 0a 54 68 69 73 20 6d 6f 64 69 66 69    65 73 20 74 68 65 20 62 75 66 66 65 72 2e 22 0a  | xt'..This.modifies.the.buffer.". | 
| 89100 |  20 20 28 77 68 65 6e 20 28 6c 65 6e 67 74 68 3e    20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e 67 20  | ..(when.(length>.context-string. | 
| 89120 |  30 29 0a 20 20 20 20 28 70 63 61 73 65 20 28 6f    72 20 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 75  | 0).....(pcase.(or.method.gptel-u | 
| 89140 |  73 65 2d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20    20 20 28 27 73 79 73 74 65 6d 0a 20 20 20 20 20  | se-context).......('system...... | 
| 89160 |  20 20 28 69 66 20 28 67 70 74 65 6c 2d 2d 6d 6f    64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 6e  | ..(if.(gptel--model-capable-p.'n | 
| 89180 |  6f 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20    20 20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65  | osystem)............(gptel-conte | 
| 891a0 |  78 74 2d 2d 77 72 61 70 2d 69 6e 2d 62 75 66 66    65 72 20 63 6f 6e 74 65 78 74 2d 73 74 72 69 6e  | xt--wrap-in-buffer.context-strin | 
| 891c0 |  67 20 27 75 73 65 72 29 0a 20 20 20 20 20 20 20    20 20 28 69 66 20 67 70 74 65 6c 2d 2d 73 79 73  | g.'user)..........(if.gptel--sys | 
| 891e0 |  74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 28 63 6c 2d 65 74 79  | tem-message..............(cl-ety | 
| 89200 |  70 65 63 61 73 65 20 67 70 74 65 6c 2d 2d 73 79    73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20  | pecase.gptel--system-message.... | 
| 89220 |  20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72    69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ............(string............. | 
| 89240 |  20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d    2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a  | ....(setq.gptel--system-message. | 
| 89260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 67 70  | ......................(concat.gp | 
| 89280 |  74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73    61 67 65 20 22 5c 6e 5c 6e 22 20 63 6f 6e 74 65  | tel--system-message."\n\n".conte | 
| 892a0 |  78 74 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e  | xt-string)))................(fun | 
| 892c0 |  63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65  | ction.................(setq.gpte | 
| 892e0 |  6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | l--system-message............... | 
| 89300 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d    70 61 72 73 65 2d 64 69 72 65 63 74 69 76 65 20  | ........(gptel--parse-directive. | 
| 89320 |  67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65    73 73 61 67 65 20 27 72 61 77 29 29 0a 20 20 20  | gptel--system-message.'raw)).... | 
| 89340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61  | .............(gptel-context--wra | 
| 89360 |  70 2d 69 6e 2d 62 75 66 66 65 72 20 63 6f 6e 74    65 78 74 2d 73 74 72 69 6e 67 29 29 0a 20 20 20  | p-in-buffer.context-string)).... | 
| 89380 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ............(list............... | 
| 893a0 |  20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 73    79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 3b 63  | ..(setq.gptel--system-message.;c | 
| 893c0 |  6f 6e 73 20 61 20 6e 65 77 20 6c 69 73 74 20 74    6f 20 61 76 6f 69 64 20 6d 75 74 61 74 69 6f 6e  | ons.a.new.list.to.avoid.mutation | 
| 893e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 63 6f  | .......................(cons.(co | 
| 89400 |  6e 63 61 74 20 28 63 61 72 20 67 70 74 65 6c 2d    2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29  | ncat.(car.gptel--system-message) | 
| 89420 |  20 22 5c 6e 5c 6e 22 20 63 6f 6e 74 65 78 74 2d    73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20  | ."\n\n".context-string)......... | 
| 89440 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 64 72 20 67 70 74 65 6c 2d 2d  | ....................(cdr.gptel-- | 
| 89460 |  73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28  | system-message)))))............( | 
| 89480 |  73 65 74 71 20 67 70 74 65 6c 2d 2d 73 79 73 74    65 6d 2d 6d 65 73 73 61 67 65 20 63 6f 6e 74 65  | setq.gptel--system-message.conte | 
| 894a0 |  78 74 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20    20 20 20 20 28 27 75 73 65 72 0a 20 20 20 20 20  | xt-string)))).......('user...... | 
| 894c0 |  20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f    69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20  | ..(goto-char.(point-max))....... | 
| 894e0 |  20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d    73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20  | .(text-property-search-backward. | 
| 89500 |  27 67 70 74 65 6c 20 6e 69 6c 20 74 29 0a 20 20    20 20 20 20 20 28 61 6e 64 20 67 70 74 65 6c 2d  | 'gptel.nil.t)........(and.gptel- | 
| 89520 |  6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 0a 20 20 20  | mode.............(looking-at.... | 
| 89540 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61    74 20 22 5b 5c 6e 5b 3a 62 6c 61 6e 6b 3a 5d 5d  | ..........(concat."[\n[:blank:]] | 
| 89560 |  2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74  | *"......................(and-let | 
| 89580 |  2a 20 28 28 70 72 65 66 69 78 20 28 67 70 74 65    6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d  | *.((prefix.(gptel-prompt-prefix- | 
| 895a0 |  73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | string))........................ | 
| 895c0 |  20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28    73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 70  | .........((not.(string-empty-p.p | 
| 895e0 |  72 65 66 69 78 29 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | refix))))....................... | 
| 89600 |  20 28 63 6f 6e 63 61 74 20 22 5c 5c 28 3f 3a 22    20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 70  | .(concat."\\(?:".(regexp-quote.p | 
| 89620 |  72 65 66 69 78 29 20 22 5c 5c 29 3f 22 29 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64  | refix)."\\)?")))).............(d | 
| 89640 |  65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 6d 61    74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29  | elete-region.(match-beginning.0) | 
| 89660 |  20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29    0a 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20  | .(match-end.0)))........(insert. | 
| 89680 |  22 5c 6e 22 20 63 6f 6e 74 65 78 74 2d 73 74 72    69 6e 67 20 22 5c 6e 5c 6e 22 29 29 29 29 29 0a  | "\n".context-string."\n\n"))))). | 
| 896a0 |  0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f    6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 2d 6d  | .(defun.gptel-context--collect-m | 
| 896c0 |  65 64 69 61 20 28 26 6f 70 74 69 6f 6e 61 6c 20    63 6f 6e 74 65 78 74 73 29 0a 20 20 22 43 6f 6c  | edia.(&optional.contexts)..."Col | 
| 896e0 |  6c 65 63 74 20 6d 65 64 69 61 20 43 4f 4e 54 45    58 54 53 2e 0a 0a 43 4f 4e 54 45 58 54 53 2c 20  | lect.media.CONTEXTS...CONTEXTS,. | 
| 89700 |  77 68 69 63 68 20 61 72 65 20 74 79 70 69 63 61    6c 6c 79 20 70 61 74 68 73 20 74 6f 20 62 69 6e  | which.are.typically.paths.to.bin | 
| 89720 |  61 72 79 20 66 69 6c 65 73 2c 20 61 72 65 0a 62    61 73 65 36 34 2d 65 6e 63 6f 64 65 64 20 61 6e  | ary.files,.are.base64-encoded.an | 
| 89740 |  64 20 70 72 65 70 65 6e 64 65 64 20 74 6f 20 74    68 65 20 66 69 72 73 74 20 75 73 65 72 20 70 72  | d.prepended.to.the.first.user.pr | 
| 89760 |  6f 6d 70 74 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f    70 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 69 6e  | ompt."...(cl-loop.for.context.in | 
| 89780 |  20 28 6f 72 20 63 6f 6e 74 65 78 74 73 20 67 70    74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69  | .(or.contexts.gptel-context--ali | 
| 897a0 |  73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 66    6f 72 20 28 70 61 74 68 20 2e 20 70 72 6f 70 73  | st)............for.(path...props | 
| 897c0 |  29 20 3d 20 63 6f 6e 74 65 78 74 0a 20 20 20 20    20 20 20 20 20 20 20 77 68 65 6e 20 28 61 6e 64  | ).=.context............when.(and | 
| 897e0 |  20 28 73 74 72 69 6e 67 70 20 70 61 74 68 29 20    28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 70 73  | .(stringp.path).(plist-get.props | 
| 89800 |  20 3a 6d 69 6d 65 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 63 6f 6c 6c 65 63 74 20 28 63 6f 6e  | .:mime))............collect.(con | 
| 89820 |  73 20 3a 6d 65 64 69 61 20 63 6f 6e 74 65 78 74    29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 67  | s.:media.context)))..(cl-defun.g | 
| 89840 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 64    64 2d 72 65 67 69 6f 6e 20 28 62 75 66 66 65 72  | ptel-context--add-region.(buffer | 
| 89860 |  20 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e    67 20 72 65 67 69 6f 6e 2d 65 6e 64 20 26 6f 70  | .region-beginning.region-end.&op | 
| 89880 |  74 69 6f 6e 61 6c 20 61 64 76 61 6e 63 65 29 0a    20 20 22 41 64 64 20 72 65 67 69 6f 6e 20 64 65  | tional.advance)..."Add.region.de | 
| 898a0 |  6c 69 6d 69 74 65 64 20 62 79 20 52 45 47 49 4f    4e 2d 42 45 47 49 4e 4e 49 4e 47 2c 20 52 45 47  | limited.by.REGION-BEGINNING,.REG | 
| 898c0 |  49 4f 4e 2d 45 4e 44 20 69 6e 20 42 55 46 46 45    52 20 61 73 20 63 6f 6e 74 65 78 74 2e 0a 0a 49  | ION-END.in.BUFFER.as.context...I | 
| 898e0 |  66 20 41 44 56 41 4e 43 45 20 69 73 20 6e 6f 6e    2d 6e 69 6c 2c 20 74 68 65 20 63 6f 6e 74 65 78  | f.ADVANCE.is.non-nil,.the.contex | 
| 89900 |  74 20 6f 76 65 72 6c 61 79 20 65 6e 76 65 6c 6f    70 65 73 20 63 68 61 6e 67 65 73 20 61 74 0a 74  | t.overlay.envelopes.changes.at.t | 
| 89920 |  68 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64    20 65 6e 64 2e 22 0a 20 20 3b 3b 20 52 65 6d 6f  | he.beginning.and.end."...;;.Remo | 
| 89940 |  76 65 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 74    65 78 74 73 20 69 6e 20 74 68 65 20 73 61 6d 65  | ve.existing.contexts.in.the.same | 
| 89960 |  20 72 65 67 69 6f 6e 2c 20 69 66 20 61 6e 79 2e    0a 20 20 28 6d 61 70 63 20 23 27 67 70 74 65 6c  | .region,.if.any....(mapc.#'gptel | 
| 89980 |  2d 63 6f 6e 74 65 78 74 2d 72 65 6d 6f 76 65 0a    20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63  | -context-remove.........(gptel-c | 
| 899a0 |  6f 6e 74 65 78 74 2d 2d 69 6e 2d 72 65 67 69 6f    6e 20 62 75 66 66 65 72 20 72 65 67 69 6f 6e 2d  | ontext--in-region.buffer.region- | 
| 899c0 |  62 65 67 69 6e 6e 69 6e 67 20 72 65 67 69 6f 6e    2d 65 6e 64 29 29 0a 20 20 28 70 72 6f 67 31 20  | beginning.region-end))...(prog1. | 
| 899e0 |  28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75    66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20  | (with-current-buffer.buffer..... | 
| 89a00 |  20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 63 6f    6e 74 65 78 74 2d 2d 6d 61 6b 65 2d 6f 76 65 72  | .......(gptel-context--make-over | 
| 89a20 |  6c 61 79 20 72 65 67 69 6f 6e 2d 62 65 67 69 6e    6e 69 6e 67 20 72 65 67 69 6f 6e 2d 65 6e 64 20  | lay.region-beginning.region-end. | 
| 89a40 |  61 64 76 61 6e 63 65 29 29 0a 20 20 20 20 20 20    28 6d 65 73 73 61 67 65 20 22 52 65 67 69 6f 6e  | advance)).......(message."Region | 
| 89a60 |  20 61 64 64 65 64 20 74 6f 20 63 6f 6e 74 65 78    74 20 62 75 66 66 65 72 2e 22 29 29 29 0a 0a 28  | .added.to.context.buffer.")))..( | 
| 89a80 |  64 65 66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74    65 78 74 2d 2d 69 6e 2d 72 65 67 69 6f 6e 20 28  | defun.gptel-context--in-region.( | 
| 89aa0 |  62 75 66 66 65 72 20 73 74 61 72 74 20 65 6e 64    29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20  | buffer.start.end)..."Return.the. | 
| 89ac0 |  6c 69 73 74 20 6f 66 20 63 6f 6e 74 65 78 74 20    6f 76 65 72 6c 61 79 73 20 69 6e 20 74 68 65 20  | list.of.context.overlays.in.the. | 
| 89ae0 |  67 69 76 65 6e 20 72 65 67 69 6f 6e 2c 20 69 66    20 61 6e 79 2c 20 69 6e 20 42 55 46 46 45 52 2e  | given.region,.if.any,.in.BUFFER. | 
| 89b00 |  0a 53 54 41 52 54 20 61 6e 64 20 45 4e 44 20 73    69 67 6e 69 66 79 20 74 68 65 20 72 65 67 69 6f  | .START.and.END.signify.the.regio | 
| 89b20 |  6e 20 64 65 6c 69 6d 69 74 65 72 73 2e 22 0a 20    20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62  | n.delimiters."...(with-current-b | 
| 89b40 |  75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20    20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e  | uffer.buffer.....(cl-remove-if-n | 
| 89b60 |  6f 74 20 28 6c 61 6d 62 64 61 20 28 6f 76 29 20    28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20  | ot.(lambda.(ov).(overlay-get.ov. | 
| 89b80 |  27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | 'gptel-context))................ | 
| 89ba0 |  20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 73    2d 69 6e 20 73 74 61 72 74 20 65 6e 64 29 29 29  | .......(overlays-in.start.end))) | 
| 89bc0 |  29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 2d 2d 61 74 2d 70 6f 69 6e  | )..(defun.gptel-context--at-poin | 
| 89be0 |  74 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74    68 65 20 63 6f 6e 74 65 78 74 20 6f 76 65 72 6c  | t.()..."Return.the.context.overl | 
| 89c00 |  61 79 20 61 74 20 70 6f 69 6e 74 2c 20 69 66 20    61 6e 79 2e 22 0a 20 20 28 63 6c 2d 66 69 6e 64  | ay.at.point,.if.any."...(cl-find | 
| 89c20 |  2d 69 66 20 28 6c 61 6d 62 64 61 20 28 6f 76 29    20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76  | -if.(lambda.(ov).(overlay-get.ov | 
| 89c40 |  20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .'gptel-context))............... | 
| 89c60 |  28 6f 76 65 72 6c 61 79 73 2d 61 74 20 28 70 6f    69 6e 74 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61  | (overlays-at.(point))))..;;;###a | 
| 89c80 |  75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67    70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f  | utoload.(defun.gptel-context--co | 
| 89ca0 |  6c 6c 65 63 74 20 28 29 0a 20 20 22 47 65 74 20    74 68 65 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20  | llect.()..."Get.the.list.of.all. | 
| 89cc0 |  61 63 74 69 76 65 20 63 6f 6e 74 65 78 74 20 6f    76 65 72 6c 61 79 73 2e 22 0a 20 20 3b 3b 20 47  | active.context.overlays."...;;.G | 
| 89ce0 |  65 74 20 6f 6e 6c 79 20 74 68 65 20 6e 6f 6e 2d    64 65 67 65 6e 65 72 61 74 65 20 6f 76 65 72 6c  | et.only.the.non-degenerate.overl | 
| 89d00 |  61 79 73 2c 20 63 6f 6c 6c 65 63 74 20 74 68 65    6d 2c 20 61 6e 64 20 75 70 64 61 74 65 20 74 68  | ays,.collect.them,.and.update.th | 
| 89d20 |  65 20 6f 76 65 72 6c 61 79 73 20 76 61 72 69 61    62 6c 65 2e 0a 20 20 28 73 65 74 71 20 67 70 74  | e.overlays.variable....(setq.gpt | 
| 89d40 |  65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73    74 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f  | el-context--alist.........(cl-lo | 
| 89d60 |  6f 70 20 66 6f 72 20 28 62 75 66 20 2e 20 6f 76    73 29 20 69 6e 20 67 70 74 65 6c 2d 63 6f 6e 74  | op.for.(buf...ovs).in.gptel-cont | 
| 89d80 |  65 78 74 2d 2d 61 6c 69 73 74 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28  | ext--alist..................if.( | 
| 89da0 |  62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 62 75    66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | buffer-live-p.buf).............. | 
| 89dc0 |  20 20 20 20 20 20 69 66 20 28 63 6c 2d 6c 6f 6f    70 20 66 6f 72 20 6f 76 20 69 6e 20 6f 76 73 20  | ......if.(cl-loop.for.ov.in.ovs. | 
| 89de0 |  77 68 65 6e 20 28 6f 76 65 72 6c 61 79 2d 73 74    61 72 74 20 6f 76 29 20 63 6f 6c 6c 65 63 74 20  | when.(overlay-start.ov).collect. | 
| 89e00 |  6f 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28  | ov)....................collect.( | 
| 89e20 |  63 6f 6e 73 20 62 75 66 20 69 74 29 20 69 6e 74    6f 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20  | cons.buf.it).into.elements...... | 
| 89e40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e    64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..............end............... | 
| 89e60 |  20 20 20 65 6c 73 65 20 69 66 20 28 61 6e 64 20    28 73 74 72 69 6e 67 70 20 62 75 66 29 20 28 66  | ...else.if.(and.(stringp.buf).(f | 
| 89e80 |  69 6c 65 2d 65 78 69 73 74 73 2d 70 20 62 75 66    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ile-exists-p.buf)).............. | 
| 89ea0 |  20 20 20 20 69 66 20 28 70 6c 69 73 74 2d 67 65    74 20 6f 76 73 20 3a 6d 69 6d 65 29 0a 20 20 20  | ....if.(plist-get.ovs.:mime).... | 
| 89ec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f    6c 6c 65 63 74 20 28 63 6f 6e 73 20 62 75 66 20  | ..............collect.(cons.buf. | 
| 89ee0 |  6f 76 73 29 20 69 6e 74 6f 20 65 6c 65 6d 65 6e    74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ovs).into.elements.............. | 
| 89f00 |  20 20 20 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74    20 28 6c 69 73 74 20 62 75 66 29 20 69 6e 74 6f  | ....else.collect.(list.buf).into | 
| 89f20 |  20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c  | .elements..................final | 
| 89f40 |  6c 79 20 72 65 74 75 72 6e 20 65 6c 65 6d 65 6e    74 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | ly.return.elements)))..(defun.gp | 
| 89f60 |  74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 69 6e 73    65 72 74 2d 62 75 66 66 65 72 2d 73 74 72 69 6e  | tel-context--insert-buffer-strin | 
| 89f80 |  67 20 28 62 75 66 66 65 72 20 63 6f 6e 74 65 78    74 73 29 0a 20 20 22 49 6e 73 65 72 74 20 61 74  | g.(buffer.contexts)..."Insert.at | 
| 89fa0 |  20 70 6f 69 6e 74 20 61 20 63 6f 6e 74 65 78 74    20 73 74 72 69 6e 67 20 66 72 6f 6d 20 61 6c 6c  | .point.a.context.string.from.all | 
| 89fc0 |  20 43 4f 4e 54 45 58 54 53 20 69 6e 20 42 55 46    46 45 52 2e 22 0a 20 20 20 20 28 6c 65 74 20 28  | .CONTEXTS.in.BUFFER.".....(let.( | 
| 89fe0 |  28 69 73 2d 74 6f 70 2d 73 6e 69 70 70 65 74 20    74 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72  | (is-top-snippet.t)...........(pr | 
| 8a000 |  65 76 69 6f 75 73 2d 6c 69 6e 65 20 31 29 29 0a    20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66  | evious-line.1)).......(insert.(f | 
| 8a020 |  6f 72 6d 61 74 20 22 49 6e 20 62 75 66 66 65 72    20 60 25 73 60 3a 22 20 28 62 75 66 66 65 72 2d  | ormat."In.buffer.`%s`:".(buffer- | 
| 8a040 |  6e 61 6d 65 20 62 75 66 66 65 72 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 5c  | name.buffer))..............."\n\ | 
| 8a060 |  6e 60 60 60 22 20 28 67 70 74 65 6c 2d 2d 73 74    72 69 70 2d 6d 6f 64 65 2d 73 75 66 66 69 78 20  | n```".(gptel--strip-mode-suffix. | 
| 8a080 |  28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61    6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  | (buffer-local-value............. | 
| 8a0a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 8a0c0 |  20 20 20 20 20 20 20 27 6d 61 6a 6f 72 2d 6d 6f    64 65 20 62 75 66 66 65 72 29 29 0a 20 20 20 20  | .......'major-mode.buffer))..... | 
| 8a0e0 |  20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 29 0a    20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63  | .........."\n").......(dolist.(c | 
| 8a100 |  6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 73 29    0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28  | ontext.contexts).........(let*.( | 
| 8a120 |  28 73 74 61 72 74 20 28 6f 76 65 72 6c 61 79 2d    73 74 61 72 74 20 63 6f 6e 74 65 78 74 29 29 0a  | (start.(overlay-start.context)). | 
| 8a140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    65 6e 64 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64  | ...............(end.(overlay-end | 
| 8a160 |  20 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e  | .context))................conten | 
| 8a180 |  74 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65    74 20 28 6c 69 6e 65 6e 6f 20 63 6f 6c 75 6d 6e  | t)...........(let.(lineno.column | 
| 8a1a0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77    69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66  | ).............(with-current-buff | 
| 8a1c0 |  65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 77 69 74 68 6f 75 74  | er.buffer...............(without | 
| 8a1e0 |  2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65  | -restriction.................(se | 
| 8a200 |  74 71 20 6c 69 6e 65 6e 6f 20 28 6c 69 6e 65 2d    6e 75 6d 62 65 72 2d 61 74 2d 70 6f 73 20 73 74  | tq.lineno.(line-number-at-pos.st | 
| 8a220 |  61 72 74 20 74 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c  | art.t).......................col | 
| 8a240 |  75 6d 6e 20 28 73 61 76 65 2d 65 78 63 75 72 73    69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 73  | umn.(save-excursion.(goto-char.s | 
| 8a260 |  74 61 72 74 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tart)........................... | 
| 8a280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 63 75 72 72 65 6e 74 2d 63 6f 6c 75  | ...................(current-colu | 
| 8a2a0 |  6d 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65  | mn)).......................conte | 
| 8a2c0 |  6e 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74    72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69  | nt.(buffer-substring-no-properti | 
| 8a2e0 |  65 73 20 73 74 61 72 74 20 65 6e 64 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | es.start.end)))).............;;. | 
| 8a300 |  57 65 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74    6f 20 69 6e 73 65 72 74 20 61 20 6c 69 6e 65 20  | We.do.not.need.to.insert.a.line. | 
| 8a320 |  6e 75 6d 62 65 72 20 69 6e 64 69 63 61 74 6f 72    20 69 66 20 77 65 20 68 61 76 65 20 74 77 6f 20  | number.indicator.if.we.have.two. | 
| 8a340 |  72 65 67 69 6f 6e 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 3b 3b 20 6f 6e 20 74 68 65 20 73 61  | regions.............;;.on.the.sa | 
| 8a360 |  6d 65 20 6c 69 6e 65 2c 20 62 65 63 61 75 73 65    20 74 68 65 20 70 72 65 76 69 6f 75 73 20 72 65  | me.line,.because.the.previous.re | 
| 8a380 |  67 69 6f 6e 20 73 68 6f 75 6c 64 20 68 61 76 65    20 61 6c 72 65 61 64 79 20 70 75 74 20 74 68 65  | gion.should.have.already.put.the | 
| 8a3a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    69 6e 64 69 63 61 74 6f 72 2e 0a 20 20 20 20 20  | .............;;.indicator....... | 
| 8a3c0 |  20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28    3d 20 70 72 65 76 69 6f 75 73 2d 6c 69 6e 65 20  | .......(unless.(=.previous-line. | 
| 8a3e0 |  6c 69 6e 65 6e 6f 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 3d  | lineno)...............(unless.(= | 
| 8a400 |  20 6c 69 6e 65 6e 6f 20 31 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65  | .lineno.1).................(unle | 
| 8a420 |  73 73 20 69 73 2d 74 6f 70 2d 73 6e 69 70 70 65    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ss.is-top-snippet............... | 
| 8a440 |  20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....(insert."\n")).............. | 
| 8a460 |  20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d    61 74 20 22 2e 2e 2e 20 28 4c 69 6e 65 20 25 64  | ...(insert.(format."....(Line.%d | 
| 8a480 |  29 5c 6e 22 20 6c 69 6e 65 6e 6f 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74  | )\n".lineno)))).............(set | 
| 8a4a0 |  71 20 70 72 65 76 69 6f 75 73 2d 6c 69 6e 65 20    6c 69 6e 65 6e 6f 29 0a 20 20 20 20 20 20 20 20  | q.previous-line.lineno)......... | 
| 8a4c0 |  20 20 20 20 28 75 6e 6c 65 73 73 20 28 7a 65 72    6f 70 20 63 6f 6c 75 6d 6e 29 20 28 69 6e 73 65  | ....(unless.(zerop.column).(inse | 
| 8a4e0 |  72 74 20 22 20 2e 2e 2e 22 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 28 69 66 20 69 73 2d 74  | rt."....")).............(if.is-t | 
| 8a500 |  6f 70 2d 73 6e 69 70 70 65 74 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71  | op-snippet.................(setq | 
| 8a520 |  20 69 73 2d 74 6f 70 2d 73 6e 69 70 70 65 74 20    6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .is-top-snippet.nil)............ | 
| 8a540 |  20 20 20 28 75 6e 6c 65 73 73 20 28 3d 20 70 72    65 76 69 6f 75 73 2d 6c 69 6e 65 20 6c 69 6e 65  | ...(unless.(=.previous-line.line | 
| 8a560 |  6e 6f 29 20 28 69 6e 73 65 72 74 20 22 5c 6e 22    29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28  | no).(insert."\n"))))...........( | 
| 8a580 |  69 6e 73 65 72 74 20 63 6f 6e 74 65 6e 74 29 29    29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20  | insert.content))).......(unless. | 
| 8a5a0 |  28 3e 3d 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64    20 28 63 61 72 20 28 6c 61 73 74 20 63 6f 6e 74  | (>=.(overlay-end.(car.(last.cont | 
| 8a5c0 |  65 78 74 73 29 29 29 20 28 70 6f 69 6e 74 2d 6d    61 78 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e  | exts))).(point-max)).........(in | 
| 8a5e0 |  73 65 72 74 20 22 5c 6e 2e 2e 2e 22 29 29 0a 20    20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e  | sert."\n...")).......(insert."\n | 
| 8a600 |  60 60 60 22 29 29 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d 73  | ```")))..(defun.gptel-context--s | 
| 8a620 |  74 72 69 6e 67 20 28 63 6f 6e 74 65 78 74 2d 61    6c 69 73 74 29 0a 20 20 22 46 6f 72 6d 61 74 20  | tring.(context-alist)..."Format. | 
| 8a640 |  74 68 65 20 61 67 67 72 65 67 61 74 65 64 20 67    70 74 65 6c 20 63 6f 6e 74 65 78 74 20 61 73 20  | the.aggregated.gptel.context.as. | 
| 8a660 |  61 6e 6e 6f 74 61 74 65 64 20 6d 61 72 6b 64 6f    77 6e 20 66 72 61 67 6d 65 6e 74 73 2e 0a 0a 52  | annotated.markdown.fragments...R | 
| 8a680 |  65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 2e    20 20 43 4f 4e 54 45 58 54 2d 41 4c 49 53 54 20  | eturns.a.string...CONTEXT-ALIST. | 
| 8a6a0 |  69 73 20 61 20 73 74 72 75 63 74 75 72 65 20 63    6f 6e 74 61 69 6e 69 6e 67 0a 63 6f 6e 74 65 78  | is.a.structure.containing.contex | 
| 8a6c0 |  74 20 6f 76 65 72 6c 61 79 73 2c 20 73 65 65 20    60 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d  | t.overlays,.see.`gptel-context-- | 
| 8a6e0 |  61 6c 69 73 74 27 2e 22 0a 20 20 28 77 69 74 68    2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20  | alist'."...(with-temp-buffer.... | 
| 8a700 |  20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 62    75 66 20 2e 20 6f 76 73 29 20 69 6e 20 63 6f 6e  | .(cl-loop.for.(buf...ovs).in.con | 
| 8a720 |  74 65 78 74 2d 61 6c 69 73 74 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66  | text-alist..............if.(buff | 
| 8a740 |  65 72 70 20 62 75 66 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 64 6f 20 28 67 70 74 65 6c 2d  | erp.buf)..............do.(gptel- | 
| 8a760 |  63 6f 6e 74 65 78 74 2d 2d 69 6e 73 65 72 74 2d    62 75 66 66 65 72 2d 73 74 72 69 6e 67 20 62 75  | context--insert-buffer-string.bu | 
| 8a780 |  66 20 6f 76 73 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 65 6c 73 65 20 69 66 20 28 6e 6f 74  | f.ovs)..............else.if.(not | 
| 8a7a0 |  20 28 70 6c 69 73 74 2d 67 65 74 20 6f 76 73 20    3a 6d 69 6d 65 29 29 0a 20 20 20 20 20 20 20 20  | .(plist-get.ovs.:mime))......... | 
| 8a7c0 |  20 20 20 20 20 64 6f 20 28 67 70 74 65 6c 2d 2d    69 6e 73 65 72 74 2d 66 69 6c 65 2d 73 74 72 69  | .....do.(gptel--insert-file-stri | 
| 8a7e0 |  6e 67 20 62 75 66 29 20 65 6e 64 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 64 6f 20 28 69 6e 73  | ng.buf).end..............do.(ins | 
| 8a800 |  65 72 74 20 22 5c 6e 5c 6e 22 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79  | ert."\n\n")..............finally | 
| 8a820 |  20 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 6b 69 70 2d 63 68 61 72 73 2d 62 61 63  | .do..............(skip-chars-bac | 
| 8a840 |  6b 77 61 72 64 20 22 5c 6e 5c 74 5c 72 20 22 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64  | kward."\n\t\r.")..............(d | 
| 8a860 |  65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 70 6f    69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29  | elete-region.(point).(point-max) | 
| 8a880 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28    75 6e 6c 65 73 73 20 28 62 6f 62 70 29 0a 20 20  | )..............(unless.(bobp)... | 
| 8a8a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f    74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d  | .............(goto-char.(point-m | 
| 8a8c0 |  69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 69 6e 73 65 72 74 20 22 52 65 71  | in))................(insert."Req | 
| 8a8e0 |  75 65 73 74 20 63 6f 6e 74 65 78 74 3a 5c 6e 5c    6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | uest.context:\n\n"))............ | 
| 8a900 |  20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ..finally.return...............( | 
| 8a920 |  61 6e 64 20 28 3e 20 28 62 75 66 66 65 72 2d 73    69 7a 65 29 20 30 29 0a 20 20 20 20 20 20 20 20  | and.(>.(buffer-size).0)......... | 
| 8a940 |  20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66    65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 0a 0a  | ...........(buffer-string))))).. | 
| 8a960 |  3b 3b 3b 20 4d 61 6a 6f 72 20 6d 6f 64 65 20 66    6f 72 20 63 6f 6e 74 65 78 74 20 69 6e 73 70 65  | ;;;.Major.mode.for.context.inspe | 
| 8a980 |  63 74 69 6f 6e 20 62 75 66 66 65 72 73 0a 28 64    65 66 76 61 72 2d 6b 65 79 6d 61 70 20 67 70 74  | ction.buffers.(defvar-keymap.gpt | 
| 8a9a0 |  65 6c 2d 63 6f 6e 74 65 78 74 2d 62 75 66 66 65    72 2d 6d 6f 64 65 2d 6d 61 70 0a 20 20 22 43 2d  | el-context-buffer-mode-map..."C- | 
| 8a9c0 |  63 20 43 2d 63 22 20 23 27 67 70 74 65 6c 2d 63    6f 6e 74 65 78 74 2d 63 6f 6e 66 69 72 6d 0a 20  | c.C-c".#'gptel-context-confirm.. | 
| 8a9e0 |  20 22 43 2d 63 20 43 2d 6b 22 20 23 27 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 2d 71 75 69 74 0a  | ."C-c.C-k".#'gptel-context-quit. | 
| 8aa00 |  20 20 22 52 45 54 22 20 20 20 20 20 23 27 67 70    74 65 6c 2d 63 6f 6e 74 65 78 74 2d 76 69 73 69  | .."RET".....#'gptel-context-visi | 
| 8aa20 |  74 0a 20 20 22 6e 22 20 20 20 20 20 20 20 23 27    67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 6e 65  | t..."n".......#'gptel-context-ne | 
| 8aa40 |  78 74 0a 20 20 22 70 22 20 20 20 20 20 20 20 23    27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 70  | xt..."p".......#'gptel-context-p | 
| 8aa60 |  72 65 76 69 6f 75 73 0a 20 20 22 64 22 20 20 20    20 20 20 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74  | revious..."d".......#'gptel-cont | 
| 8aa80 |  65 78 74 2d 66 6c 61 67 2d 64 65 6c 65 74 69 6f    6e 29 0a 0a 28 64 65 66 69 6e 65 2d 64 65 72 69  | ext-flag-deletion)..(define-deri | 
| 8aaa0 |  76 65 64 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 63    6f 6e 74 65 78 74 2d 62 75 66 66 65 72 2d 6d 6f  | ved-mode.gptel-context-buffer-mo | 
| 8aac0 |  64 65 20 73 70 65 63 69 61 6c 2d 6d 6f 64 65 20    22 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 22 0a  | de.special-mode."gptel-context". | 
| 8aae0 |  20 20 22 4d 61 6a 6f 72 2d 6d 6f 64 65 20 66 6f    72 20 69 6e 73 70 65 63 74 69 6e 67 20 63 6f 6e  | .."Major-mode.for.inspecting.con | 
| 8ab00 |  74 65 78 74 20 75 73 65 64 20 62 79 20 67 70 74    65 6c 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67  | text.used.by.gptel."...:group.'g | 
| 8ab20 |  70 74 65 6c 0a 20 20 28 61 64 64 2d 68 6f 6f 6b    20 27 70 6f 73 74 2d 63 6f 6d 6d 61 6e 64 2d 68  | ptel...(add-hook.'post-command-h | 
| 8ab40 |  6f 6f 6b 20 23 27 67 70 74 65 6c 2d 63 6f 6e 74    65 78 74 2d 2d 70 6f 73 74 2d 63 6f 6d 6d 61 6e  | ook.#'gptel-context--post-comman | 
| 8ab60 |  64 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 69    6c 20 74 29 0a 20 20 28 73 65 74 71 2d 6c 6f 63  | d.............nil.t)...(setq-loc | 
| 8ab80 |  61 6c 20 72 65 76 65 72 74 2d 62 75 66 66 65 72    2d 66 75 6e 63 74 69 6f 6e 20 23 27 67 70 74 65  | al.revert-buffer-function.#'gpte | 
| 8aba0 |  6c 2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65    72 2d 73 65 74 75 70 29 29 0a 0a 28 64 65 66 75  | l-context--buffer-setup))..(defu | 
| 8abc0 |  6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    2d 62 75 66 66 65 72 2d 73 65 74 75 70 20 28 26  | n.gptel-context--buffer-setup.(& | 
| 8abe0 |  6f 70 74 69 6f 6e 61 6c 20 5f 69 67 6e 6f 72 65    2d 61 75 74 6f 20 5f 6e 6f 63 6f 6e 66 69 72 6d  | optional._ignore-auto._noconfirm | 
| 8ac00 |  29 0a 20 20 22 53 65 74 20 75 70 20 74 68 65 20    67 70 74 65 6c 20 63 6f 6e 74 65 78 74 20 62 75  | )..."Set.up.the.gptel.context.bu | 
| 8ac20 |  66 66 65 72 2e 22 0a 20 20 28 77 69 74 68 2d 63    75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67  | ffer."...(with-current-buffer.(g | 
| 8ac40 |  65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65    20 22 2a 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74  | et-buffer-create."*gptel-context | 
| 8ac60 |  2a 22 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 63    6f 6e 74 65 78 74 2d 62 75 66 66 65 72 2d 6d 6f  | *").....(gptel-context-buffer-mo | 
| 8ac80 |  64 65 29 0a 20 20 20 20 28 6c 65 74 20 28 28 69    6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79  | de).....(let.((inhibit-read-only | 
| 8aca0 |  20 74 29 29 0a 20 20 20 20 20 20 28 65 72 61 73    65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20  | .t)).......(erase-buffer)....... | 
| 8acc0 |  28 73 65 74 71 20 68 65 61 64 65 72 2d 6c 69 6e    65 2d 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20  | (setq.header-line-format........ | 
| 8ace0 |  20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65    2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20  | .....(substitute-command-keys... | 
| 8ad00 |  20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63    61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ...........(concat.............. | 
| 8ad20 |  20 22 5c 5c 5b 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 66 6c 61 67 2d 64 65 6c 65 74 69 6f 6e  | ."\\[gptel-context-flag-deletion | 
| 8ad40 |  5d 3a 20 4d 61 72 6b 2f 75 6e 6d 61 72 6b 20 64    65 6c 65 74 69 6f 6e 2c 20 22 0a 20 20 20 20 20  | ]:.Mark/unmark.deletion,."...... | 
| 8ad60 |  20 20 20 20 20 20 20 20 20 22 5c 5c 5b 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 2d 6e 65 78 74 5d  | ........."\\[gptel-context-next] | 
| 8ad80 |  2f 5c 5c 5b 67 70 74 65 6c 2d 63 6f 6e 74 65 78    74 2d 70 72 65 76 69 6f 75 73 5d 3a 20 6e 65 78  | /\\[gptel-context-previous]:.nex | 
| 8ada0 |  74 2f 70 72 65 76 69 6f 75 73 2c 20 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 5b  | t/previous,."..............."\\[ | 
| 8adc0 |  67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 76 69    73 69 74 5d 3a 20 76 69 73 69 74 2c 20 22 0a 20  | gptel-context-visit]:.visit,.".. | 
| 8ade0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c    5b 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 63  | ............."\\[gptel-context-c | 
| 8ae00 |  6f 6e 66 69 72 6d 5d 3a 20 61 70 70 6c 79 2c 20    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | onfirm]:.apply,."............... | 
| 8ae20 |  22 5c 5c 5b 67 70 74 65 6c 2d 63 6f 6e 74 65 78    74 2d 71 75 69 74 5d 3a 20 63 61 6e 63 65 6c 2c  | "\\[gptel-context-quit]:.cancel, | 
| 8ae40 |  20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 5c 5c 5b 71 75 69 74 2d 77 69 6e 64 6f 77  | ."..............."\\[quit-window | 
| 8ae60 |  5d 3a 20 71 75 69 74 22 29 29 29 0a 20 20 20 20    20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f  | ]:.quit"))).......(save-excursio | 
| 8ae80 |  6e 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28    28 63 6f 6e 74 65 78 74 73 20 67 70 74 65 6c 2d  | n.........(let.((contexts.gptel- | 
| 8aea0 |  63 6f 6e 74 65 78 74 2d 2d 61 6c 69 73 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28  | context--alist))...........(if.( | 
| 8aec0 |  6c 65 6e 67 74 68 3e 20 63 6f 6e 74 65 78 74 73    20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | length>.contexts.0)............. | 
| 8aee0 |  20 20 28 6c 65 74 20 28 62 65 67 20 6f 76 20 6c    31 20 6c 32 29 0a 20 20 20 20 20 20 20 20 20 20  | ..(let.(beg.ov.l1.l2)........... | 
| 8af00 |  20 20 20 20 20 20 28 70 63 61 73 65 2d 64 6f 6c    69 73 74 20 28 60 28 2c 62 75 66 20 2e 20 2c 6f  | ......(pcase-dolist.(`(,buf...,o | 
| 8af20 |  76 73 29 20 63 6f 6e 74 65 78 74 73 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | vs).contexts)................... | 
| 8af40 |  28 69 66 20 28 62 75 66 66 65 72 70 20 62 75 66    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (if.(bufferp.buf)............... | 
| 8af60 |  20 20 20 20 20 20 20 20 3b 3b 20 49 74 27 73 20    61 20 62 75 66 66 65 72 20 77 69 74 68 20 73 6f  | ........;;.It's.a.buffer.with.so | 
| 8af80 |  6d 65 20 6f 76 65 72 6c 61 79 28 73 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | me.overlay(s)................... | 
| 8afa0 |  20 20 20 20 28 64 6f 6c 69 73 74 20 28 73 6f 75    72 63 65 2d 6f 76 20 6f 76 73 29 0a 20 20 20 20  | ....(dolist.(source-ov.ovs)..... | 
| 8afc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e  | ....................(with-curren | 
| 8afe0 |  74 2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-buffer.buf.................... | 
| 8b000 |  20 20 20 20 20 20 20 28 73 65 74 71 20 6c 31 20    28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d  | .......(setq.l1.(line-number-at- | 
| 8b020 |  70 6f 73 20 28 6f 76 65 72 6c 61 79 2d 73 74 61    72 74 20 73 6f 75 72 63 65 2d 6f 76 29 29 0a 20  | pos.(overlay-start.source-ov)).. | 
| 8b040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c  | ...............................l | 
| 8b060 |  32 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61    74 2d 70 6f 73 20 28 6f 76 65 72 6c 61 79 2d 65  | 2.(line-number-at-pos.(overlay-e | 
| 8b080 |  6e 64 20 73 6f 75 72 63 65 2d 6f 76 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nd.source-ov))))................ | 
| 8b0a0 |  20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74    20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 66 6f  | .........(insert.(propertize.(fo | 
| 8b0c0 |  72 6d 61 74 20 22 49 6e 20 62 75 66 66 65 72 20    25 73 20 28 6c 69 6e 65 73 20 25 64 2d 25 64 29  | rmat."In.buffer.%s.(lines.%d-%d) | 
| 8b0e0 |  3a 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :\n\n".......................... | 
| 8b100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66  | ...........................(buff | 
| 8b120 |  65 72 2d 6e 61 6d 65 20 62 75 66 29 20 6c 31 20    6c 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | er-name.buf).l1.l2)............. | 
| 8b140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 8b160 |  27 66 61 63 65 20 27 62 6f 6c 64 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | 'face.'bold))................... | 
| 8b180 |  20 20 20 20 20 20 28 73 65 74 71 20 62 65 67 20    28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20  | ......(setq.beg.(point))........ | 
| 8b1a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d  | .................(insert-buffer- | 
| 8b1c0 |  73 75 62 73 74 72 69 6e 67 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | substring....................... | 
| 8b1e0 |  20 20 20 62 75 66 20 28 6f 76 65 72 6c 61 79 2d    73 74 61 72 74 20 73 6f 75 72 63 65 2d 6f 76 29  | ...buf.(overlay-start.source-ov) | 
| 8b200 |  20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 73 6f    75 72 63 65 2d 6f 76 29 29 0a 20 20 20 20 20 20  | .(overlay-end.source-ov))....... | 
| 8b220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a  | ..................(insert."\n"). | 
| 8b240 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 76  | ........................(setq.ov | 
| 8b260 |  20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 62    65 67 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20  | .(make-overlay.beg.(point))).... | 
| 8b280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75  | .....................(overlay-pu | 
| 8b2a0 |  74 20 6f 76 20 27 67 70 74 65 6c 2d 63 6f 6e 74    65 78 74 20 73 6f 75 72 63 65 2d 6f 76 29 0a 20  | t.ov.'gptel-context.source-ov).. | 
| 8b2c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d  | .......................(overlay- | 
| 8b2e0 |  70 75 74 20 6f 76 20 27 67 70 74 65 6c 2d 6f 76    65 72 6c 61 79 20 74 29 0a 20 20 20 20 20 20 20  | put.ov.'gptel-overlay.t)........ | 
| 8b300 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76  | .................(overlay-put.ov | 
| 8b320 |  20 27 65 76 61 70 6f 72 61 74 65 20 74 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .'evaporate.t).................. | 
| 8b340 |  20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22    5c 6e 22 20 28 6d 61 6b 65 2d 73 65 70 61 72 61  | .......(insert."\n".(make-separa | 
| 8b360 |  74 6f 72 2d 6c 69 6e 65 29 20 22 5c 6e 22 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tor-line)."\n"))................ | 
| 8b380 |  20 20 20 20 20 3b 3b 20 42 55 46 20 69 73 20 61    20 66 69 6c 65 20 70 61 74 68 2c 20 6e 6f 74 20  | .....;;.BUF.is.a.file.path,.not. | 
| 8b3a0 |  61 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e  | a.buffer.....................(in | 
| 8b3c0 |  73 65 72 74 20 28 70 72 6f 70 65 72 74 69 7a 65    20 28 66 6f 72 6d 61 74 20 22 49 6e 20 66 69 6c  | sert.(propertize.(format."In.fil | 
| 8b3e0 |  65 20 25 73 3a 5c 6e 5c 6e 22 20 28 66 69 6c 65    2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72 65 63 74 6f  | e.%s:\n\n".(file-name-nondirecto | 
| 8b400 |  72 79 20 62 75 66 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ry.buf))........................ | 
| 8b420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 27 66 61 63 65 20 27 62 6f 6c 64 29 29 0a 20  | .................'face.'bold)).. | 
| 8b440 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 65 74 71 20 62 65 67 20 28 70 6f  | ...................(setq.beg.(po | 
| 8b460 |  69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65  | int)).....................(if-le | 
| 8b480 |  74 2a 20 28 28 6d 69 6d 65 20 28 70 6c 69 73 74    2d 67 65 74 20 6f 76 73 20 3a 6d 69 6d 65 29 29  | t*.((mime.(plist-get.ovs.:mime)) | 
| 8b4a0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3b 3b 20 42 55 46  | ).........................;;.BUF | 
| 8b4c0 |  20 69 73 20 61 20 62 69 6e 61 72 79 20 66 69 6c    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .is.a.binary.file............... | 
| 8b4e0 |  20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65    74 2a 20 28 28 28 73 74 72 69 6e 67 2d 6d 61 74  | ..........(if-let*.(((string-mat | 
| 8b500 |  63 68 2d 70 20 28 69 6d 61 67 65 2d 66 69 6c 65    2d 6e 61 6d 65 2d 72 65 67 65 78 70 29 20 62 75  | ch-p.(image-file-name-regexp).bu | 
| 8b520 |  66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | f))............................. | 
| 8b540 |  20 20 20 20 20 20 28 69 6d 67 20 28 63 72 65 61    74 65 2d 69 6d 61 67 65 20 62 75 66 29 29 29 0a  | ......(img.(create-image.buf))). | 
| 8b560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73  | ............................(ins | 
| 8b580 |  65 72 74 2d 69 6d 61 67 65 20 69 6d 67 20 22 2a    22 29 20 3b 20 43 61 6e 20 62 65 20 64 69 73 70  | ert-image.img."*").;.Can.be.disp | 
| 8b5a0 |  6c 61 79 65 64 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | layed........................... | 
| 8b5c0 |  28 69 6e 73 65 72 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (insert......................... | 
| 8b5e0 |  20 20 20 62 75 66 20 22 20 22 20 28 70 72 6f 70    65 72 74 69 7a 65 20 22 28 4e 6f 20 70 72 65 76  | ...buf.".".(propertize."(No.prev | 
| 8b600 |  69 65 77 20 66 6f 72 20 62 69 6e 61 72 79 20 66    69 6c 65 29 22 0a 20 20 20 20 20 20 20 20 20 20  | iew.for.binary.file)"........... | 
| 8b620 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 8b640 |  20 20 20 20 20 27 66 61 63 65 20 27 28 3a 69 6e    68 65 72 69 74 20 73 68 61 64 6f 77 20 3a 73 6c  | .....'face.'(:inherit.shadow.:sl | 
| 8b660 |  61 6e 74 20 69 74 61 6c 69 63 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ant.italic)))).................. | 
| 8b680 |  20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c    65 2d 63 6f 6e 74 65 6e 74 73 20 62 75 66 29 29  | .....(insert-file-contents.buf)) | 
| 8b6a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20  | .....................(goto-char. | 
| 8b6c0 |  28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (point-max)).................... | 
| 8b6e0 |  20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(insert."\n").................. | 
| 8b700 |  20 20 20 28 73 65 74 71 20 6f 76 20 28 6d 61 6b    65 2d 6f 76 65 72 6c 61 79 20 62 65 67 20 28 70  | ...(setq.ov.(make-overlay.beg.(p | 
| 8b720 |  6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65  | oint))).....................(ove | 
| 8b740 |  72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 20 62 75 66 29 0a  | rlay-put.ov.'gptel-context.buf). | 
| 8b760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74  | ....................(overlay-put | 
| 8b780 |  20 6f 76 20 27 67 70 74 65 6c 2d 6f 76 65 72 6c    61 79 20 74 29 0a 20 20 20 20 20 20 20 20 20 20  | .ov.'gptel-overlay.t)........... | 
| 8b7a0 |  20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c    61 79 2d 70 75 74 20 6f 76 20 27 65 76 61 70 6f  | ..........(overlay-put.ov.'evapo | 
| 8b7c0 |  72 61 74 65 20 74 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73  | rate.t).....................(ins | 
| 8b7e0 |  65 72 74 20 22 5c 6e 22 20 28 6d 61 6b 65 2d 73    65 70 61 72 61 74 6f 72 2d 6c 69 6e 65 29 20 22  | ert."\n".(make-separator-line)." | 
| 8b800 |  5c 6e 22 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61  | \n"))).................(goto-cha | 
| 8b820 |  72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73  | r.(point-min))).............(ins | 
| 8b840 |  65 72 74 20 22 54 68 65 72 65 20 61 72 65 20 6e    6f 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 63  | ert."There.are.no.active.gptel.c | 
| 8b860 |  6f 6e 74 65 78 74 73 2e 22 29 29 29 29 29 0a 20    20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66  | ontexts."))))).....(display-buff | 
| 8b880 |  65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66    65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | er.(current-buffer)............. | 
| 8b8a0 |  20 20 20 20 20 20 20 20 60 28 28 64 69 73 70 6c    61 79 2d 62 75 66 66 65 72 2d 72 65 75 73 65 2d  | ........`((display-buffer-reuse- | 
| 8b8c0 |  77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69  | window........................di | 
| 8b8e0 |  73 70 6c 61 79 2d 62 75 66 66 65 72 2d 72 65 75    73 65 2d 6d 6f 64 65 2d 77 69 6e 64 6f 77 0a 20  | splay-buffer-reuse-mode-window.. | 
| 8b900 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 64 69 73 70 6c 61 79 2d 62 75  | ......................display-bu | 
| 8b920 |  66 66 65 72 2d 62 65 6c 6f 77 2d 73 65 6c 65 63    74 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ffer-below-selected)............ | 
| 8b940 |  20 20 20 20 20 20 20 20 20 20 20 28 62 6f 64 79    2d 66 75 6e 63 74 69 6f 6e 20 2e 20 2c 23 27 73  | ...........(body-function...,#'s | 
| 8b960 |  65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | elect-window)................... | 
| 8b980 |  20 20 20 20 28 77 69 6e 64 6f 77 2d 68 65 69 67    68 74 20 2e 20 2c 23 27 66 69 74 2d 77 69 6e 64  | ....(window-height...,#'fit-wind | 
| 8b9a0 |  6f 77 2d 74 6f 2d 62 75 66 66 65 72 29 29 29 29    29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c  | ow-to-buffer)))))..(defvar.gptel | 
| 8b9c0 |  2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72    2d 72 65 76 65 72 73 65 20 6e 69 6c 0a 20 20 22  | -context--buffer-reverse.nil..." | 
| 8b9e0 |  4c 61 73 74 20 64 69 72 65 63 74 69 6f 6e 20 6f    66 20 63 75 72 73 6f 72 20 6d 6f 76 65 6d 65 6e  | Last.direction.of.cursor.movemen | 
| 8ba00 |  74 20 69 6e 20 67 70 74 65 6c 20 63 6f 6e 74 65    78 74 20 62 75 66 66 65 72 2e 0a 0a 49 66 20 6e  | t.in.gptel.context.buffer...If.n | 
| 8ba20 |  6f 6e 2d 6e 69 6c 2c 20 69 6e 64 69 63 61 74 65    73 20 62 61 63 6b 77 61 72 64 20 6d 6f 76 65 6d  | on-nil,.indicates.backward.movem | 
| 8ba40 |  65 6e 74 2e 22 29 0a 0a 28 64 65 66 61 6c 69 61    73 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74  | ent.")..(defalias.'gptel-context | 
| 8ba60 |  2d 2d 70 6f 73 74 2d 63 6f 6d 6d 61 6e 64 0a 20    20 28 6c 65 74 20 28 28 68 69 67 68 6c 69 67 68  | --post-command...(let.((highligh | 
| 8ba80 |  74 2d 6f 76 65 72 6c 61 79 29 29 0a 20 20 20 20    28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20  | t-overlay)).....(lambda.()...... | 
| 8baa0 |  20 3b 3b 20 4f 6e 6c 79 20 75 70 64 61 74 65 20    69 66 20 70 6f 69 6e 74 20 6d 6f 76 65 64 20 6f  | .;;.Only.update.if.point.moved.o | 
| 8bac0 |  75 74 73 69 64 65 20 74 68 65 20 63 75 72 72 65    6e 74 20 72 65 67 69 6f 6e 2e 0a 20 20 20 20 20  | utside.the.current.region....... | 
| 8bae0 |  20 28 75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 68    69 67 68 6c 69 67 68 74 2d 6f 76 65 72 6c 61 79  | .(unless.(memq.highlight-overlay | 
| 8bb00 |  20 28 6f 76 65 72 6c 61 79 73 2d 61 74 20 28 70    6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20  | .(overlays-at.(point)))......... | 
| 8bb20 |  28 6c 65 74 20 28 28 63 6f 6e 74 65 78 74 2d 6f    76 65 72 6c 61 79 0a 20 20 20 20 20 20 20 20 20  | (let.((context-overlay.......... | 
| 8bb40 |  20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66    6f 72 20 6f 76 20 69 6e 20 28 6f 76 65 72 6c 61  | ......(cl-loop.for.ov.in.(overla | 
| 8bb60 |  79 73 2d 61 74 20 28 70 6f 69 6e 74 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ys-at.(point)).................. | 
| 8bb80 |  20 20 20 20 20 20 20 74 68 65 72 65 69 73 20 28    61 6e 64 20 28 6f 76 65 72 6c 61 79 2d 67 65 74  | .......thereis.(and.(overlay-get | 
| 8bba0 |  20 6f 76 20 27 67 70 74 65 6c 2d 6f 76 65 72 6c    61 79 29 20 6f 76 29 29 29 29 0a 20 20 20 20 20  | .ov.'gptel-overlay).ov))))...... | 
| 8bbc0 |  20 20 20 20 20 28 77 68 65 6e 20 68 69 67 68 6c    69 67 68 74 2d 6f 76 65 72 6c 61 79 0a 20 20 20  | .....(when.highlight-overlay.... | 
| 8bbe0 |  20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61    79 2d 70 75 74 20 68 69 67 68 6c 69 67 68 74 2d  | .........(overlay-put.highlight- | 
| 8bc00 |  6f 76 65 72 6c 61 79 20 27 66 61 63 65 20 6e 69    6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77  | overlay.'face.nil))...........(w | 
| 8bc20 |  68 65 6e 20 63 6f 6e 74 65 78 74 2d 6f 76 65 72    6c 61 79 0a 20 20 20 20 20 20 20 20 20 20 20 20  | hen.context-overlay............. | 
| 8bc40 |  28 6f 76 65 72 6c 61 79 2d 70 75 74 20 63 6f 6e    74 65 78 74 2d 6f 76 65 72 6c 61 79 20 27 66 61  | (overlay-put.context-overlay.'fa | 
| 8bc60 |  63 65 20 27 68 69 67 68 6c 69 67 68 74 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20  | ce.'highlight))...........(setq. | 
| 8bc80 |  68 69 67 68 6c 69 67 68 74 2d 6f 76 65 72 6c 61    79 20 63 6f 6e 74 65 78 74 2d 6f 76 65 72 6c 61  | highlight-overlay.context-overla | 
| 8bca0 |  79 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 76 69  | y))))))..(defun.gptel-context-vi | 
| 8bcc0 |  73 69 74 20 28 29 0a 20 20 22 44 69 73 70 6c 61    79 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f  | sit.()..."Display.the.location.o | 
| 8bce0 |  66 20 74 68 69 73 20 67 70 74 65 6c 20 63 6f 6e    74 65 78 74 20 63 68 75 6e 6b 20 69 6e 20 69 74  | f.this.gptel.context.chunk.in.it | 
| 8bd00 |  73 20 6f 72 69 67 69 6e 61 6c 20 62 75 66 66 65    72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69  | s.original.buffer."...(interacti | 
| 8bd20 |  76 65 29 0a 20 20 28 6c 65 74 20 28 28 6f 76 2d    68 65 72 65 20 28 63 61 72 20 28 6f 76 65 72 6c  | ve)...(let.((ov-here.(car.(overl | 
| 8bd40 |  61 79 73 2d 61 74 20 28 70 6f 69 6e 74 29 29 29    29 29 0a 20 20 20 20 28 69 66 2d 6c 65 74 2a 20  | ays-at.(point))))).....(if-let*. | 
| 8bd60 |  28 28 73 6f 75 72 63 65 20 28 6f 76 65 72 6c 61    79 2d 67 65 74 20 6f 76 2d 68 65 72 65 20 27 67  | ((source.(overlay-get.ov-here.'g | 
| 8bd80 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75  | ptel-context))...............(bu | 
| 8bda0 |  66 20 28 69 66 20 28 6f 76 65 72 6c 61 79 70 20    73 6f 75 72 63 65 29 0a 20 20 20 20 20 20 20 20  | f.(if.(overlayp.source)......... | 
| 8bdc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6f 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 73  | ...............(overlay-buffer.s | 
| 8bde0 |  6f 75 72 63 65 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6e  | ource)......................(fin | 
| 8be00 |  64 2d 66 69 6c 65 2d 6e 6f 73 65 6c 65 63 74 20    73 6f 75 72 63 65 29 29 29 0a 20 20 20 20 20 20  | d-file-noselect.source)))....... | 
| 8be20 |  20 20 20 20 20 20 20 20 28 6f 66 66 73 65 74 20    28 2d 20 28 70 6f 69 6e 74 29 20 28 6f 76 65 72  | ........(offset.(-.(point).(over | 
| 8be40 |  6c 61 79 2d 73 74 61 72 74 20 6f 76 2d 68 65 72    65 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77  | lay-start.ov-here)))).........(w | 
| 8be60 |  69 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e    64 6f 77 20 28 64 69 73 70 6c 61 79 2d 62 75 66  | ith-selected-window.(display-buf | 
| 8be80 |  66 65 72 20 62 75 66 29 0a 20 20 20 20 20 20 20    20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 69  | fer.buf)...........(goto-char.(i | 
| 8bea0 |  66 20 28 6f 76 65 72 6c 61 79 70 20 73 6f 75 72    63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | f.(overlayp.source)............. | 
| 8bec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76    65 72 6c 61 79 2d 73 74 61 72 74 20 73 6f 75 72  | .............(overlay-start.sour | 
| 8bee0 |  63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e  | ce)........................(poin | 
| 8bf00 |  74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72  | t-min)))...........(forward-char | 
| 8bf20 |  20 6f 66 66 73 65 74 29 0a 20 20 20 20 20 20 20    20 20 20 28 72 65 63 65 6e 74 65 72 29 29 0a 20  | .offset)...........(recenter)).. | 
| 8bf40 |  20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 4e    6f 20 73 6f 75 72 63 65 20 6c 6f 63 61 74 69 6f  | .....(message."No.source.locatio | 
| 8bf60 |  6e 20 66 6f 72 20 74 68 69 73 20 67 70 74 65 6c    20 63 6f 6e 74 65 78 74 20 63 68 75 6e 6b 2e 22  | n.for.this.gptel.context.chunk." | 
| 8bf80 |  29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 2d 6e 65 78 74 20  | ))))..(defun.gptel-context-next. | 
| 8bfa0 |  28 29 0a 20 20 22 4d 6f 76 65 20 74 6f 20 6e 65    78 74 20 67 70 74 65 6c 20 63 6f 6e 74 65 78 74  | ()..."Move.to.next.gptel.context | 
| 8bfc0 |  20 63 68 75 6e 6b 2e 22 0a 20 20 28 69 6e 74 65    72 61 63 74 69 76 65 29 0a 20 20 28 6c 65 74 20  | .chunk."...(interactive)...(let. | 
| 8bfe0 |  28 28 6f 76 2d 68 65 72 65 20 28 63 61 72 20 28    6f 76 65 72 6c 61 79 73 2d 61 74 20 28 70 6f 69  | ((ov-here.(car.(overlays-at.(poi | 
| 8c000 |  6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28    6e 65 78 74 2d 73 74 61 72 74 20 28 6e 65 78 74  | nt)))).........(next-start.(next | 
| 8c020 |  2d 6f 76 65 72 6c 61 79 2d 63 68 61 6e 67 65 20    28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 28  | -overlay-change.(point)))).....( | 
| 8c040 |  77 68 65 6e 20 28 61 6e 64 20 28 2f 3d 20 28 70    6f 69 6e 74 2d 6d 61 78 29 20 6e 65 78 74 2d 73  | when.(and.(/=.(point-max).next-s | 
| 8c060 |  74 61 72 74 29 20 6f 76 2d 68 65 72 65 29 0a 20    20 20 20 20 20 3b 3b 20 57 65 20 77 65 72 65 20  | tart).ov-here).......;;.We.were. | 
| 8c080 |  69 6e 73 69 64 65 20 74 68 65 20 6f 76 65 72 6c    61 79 2c 20 73 6f 20 77 65 20 77 61 6e 74 20 74  | inside.the.overlay,.so.we.want.t | 
| 8c0a0 |  68 65 20 6e 65 78 74 20 6f 76 65 72 6c 61 79 20    63 68 61 6e 67 65 2c 20 77 68 69 63 68 0a 20 20  | he.next.overlay.change,.which... | 
| 8c0c0 |  20 20 20 20 3b 3b 20 77 6f 75 6c 64 20 62 65 20    74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 65  | ....;;.would.be.the.start.of.the | 
| 8c0e0 |  20 6e 65 78 74 20 6f 76 65 72 6c 61 79 2e 0a 20    20 20 20 20 20 28 73 65 74 71 20 6e 65 78 74 2d  | .next.overlay........(setq.next- | 
| 8c100 |  73 74 61 72 74 20 28 6e 65 78 74 2d 6f 76 65 72    6c 61 79 2d 63 68 61 6e 67 65 20 6e 65 78 74 2d  | start.(next-overlay-change.next- | 
| 8c120 |  73 74 61 72 74 29 29 29 0a 20 20 20 20 28 77 68    65 6e 20 28 2f 3d 20 6e 65 78 74 2d 73 74 61 72  | start))).....(when.(/=.next-star | 
| 8c140 |  74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20    20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c  | t.(point-max)).......(setq.gptel | 
| 8c160 |  2d 63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72    2d 72 65 76 65 72 73 65 20 6e 69 6c 29 0a 20 20  | -context--buffer-reverse.nil)... | 
| 8c180 |  20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 6e    65 78 74 2d 73 74 61 72 74 29 0a 20 20 20 20 20  | ....(goto-char.next-start)...... | 
| 8c1a0 |  20 28 72 65 63 65 6e 74 65 72 20 28 66 6c 6f 6f    72 20 28 77 69 6e 64 6f 77 2d 68 65 69 67 68 74  | .(recenter.(floor.(window-height | 
| 8c1c0 |  29 20 34 29 29 29 29 29 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 70  | ).4)))))..(defun.gptel-context-p | 
| 8c1e0 |  72 65 76 69 6f 75 73 20 28 29 0a 20 20 22 4d 6f    76 65 20 74 6f 20 70 72 65 76 69 6f 75 73 20 67  | revious.()..."Move.to.previous.g | 
| 8c200 |  70 74 65 6c 20 63 6f 6e 74 65 78 74 20 63 68 75    6e 6b 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74  | ptel.context.chunk."...(interact | 
| 8c220 |  69 76 65 29 0a 20 20 28 6c 65 74 20 28 28 6f 76    2d 68 65 72 65 20 28 63 61 72 20 28 6f 76 65 72  | ive)...(let.((ov-here.(car.(over | 
| 8c240 |  6c 61 79 73 2d 61 74 20 28 70 6f 69 6e 74 29 29    29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 6f 76  | lays-at.(point))))).....(when.ov | 
| 8c260 |  2d 68 65 72 65 20 28 67 6f 74 6f 2d 63 68 61 72    20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20  | -here.(goto-char.(overlay-start. | 
| 8c280 |  6f 76 2d 68 65 72 65 29 29 29 0a 20 20 20 20 28    6c 65 74 20 28 28 70 72 65 76 69 6f 75 73 2d 63  | ov-here))).....(let.((previous-c | 
| 8c2a0 |  6f 6e 74 65 78 74 2d 70 6f 73 20 28 70 72 65 76    69 6f 75 73 2d 6f 76 65 72 6c 61 79 2d 63 68 61  | ontext-pos.(previous-overlay-cha | 
| 8c2c0 |  6e 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nge............................. | 
| 8c2e0 |  20 20 20 20 20 28 70 72 65 76 69 6f 75 73 2d 6f    76 65 72 6c 61 79 2d 63 68 61 6e 67 65 20 28 70  | .....(previous-overlay-change.(p | 
| 8c300 |  6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 20 20    3b 3b 20 50 72 65 76 65 6e 74 20 70 6f 69 6e 74  | oint))))).......;;.Prevent.point | 
| 8c320 |  20 66 72 6f 6d 20 6a 75 6d 70 69 6e 67 20 74 6f    20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68  | .from.jumping.to.the.start.of.th | 
| 8c340 |  65 20 62 75 66 66 65 72 2e 0a 20 20 20 20 20 20    28 75 6e 6c 65 73 73 20 28 3d 20 70 72 65 76 69  | e.buffer........(unless.(=.previ | 
| 8c360 |  6f 75 73 2d 63 6f 6e 74 65 78 74 2d 70 6f 73 20    28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20  | ous-context-pos.(point-min)).... | 
| 8c380 |  20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20    70 72 65 76 69 6f 75 73 2d 63 6f 6e 74 65 78 74  | .....(goto-char.previous-context | 
| 8c3a0 |  2d 70 6f 73 29 0a 20 20 20 20 20 20 20 20 28 72    65 63 65 6e 74 65 72 20 28 66 6c 6f 6f 72 20 28  | -pos).........(recenter.(floor.( | 
| 8c3c0 |  77 69 6e 64 6f 77 2d 68 65 69 67 68 74 29 20 34    29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71  | window-height).4)).........(setq | 
| 8c3e0 |  20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 2d    62 75 66 66 65 72 2d 72 65 76 65 72 73 65 20 74  | .gptel-context--buffer-reverse.t | 
| 8c400 |  29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70    74 65 6c 2d 63 6f 6e 74 65 78 74 2d 66 6c 61 67  | )))))..(defun.gptel-context-flag | 
| 8c420 |  2d 64 65 6c 65 74 69 6f 6e 20 28 29 0a 20 20 22    4d 61 72 6b 20 67 70 74 65 6c 20 63 6f 6e 74 65  | -deletion.()..."Mark.gptel.conte | 
| 8c440 |  78 74 20 63 68 75 6e 6b 20 61 74 20 70 6f 69 6e    74 20 66 6f 72 20 72 65 6d 6f 76 61 6c 2e 22 0a  | xt.chunk.at.point.for.removal.". | 
| 8c460 |  20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a    20 20 28 6c 65 74 2a 20 28 28 6f 76 65 72 6c 61  | ..(interactive)...(let*.((overla | 
| 8c480 |  79 73 20 28 69 66 20 28 75 73 65 2d 72 65 67 69    6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20  | ys.(if.(use-region-p)........... | 
| 8c4a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76    65 72 6c 61 79 73 2d 69 6e 20 28 72 65 67 69 6f  | .............(overlays-in.(regio | 
| 8c4c0 |  6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65    67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 20  | n-beginning).(region-end))...... | 
| 8c4e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6f 76 65 72 6c 61 79 73 2d 61 74 20 28 70 6f  | ................(overlays-at.(po | 
| 8c500 |  69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 28 64 65 6c 65 74 69 6f 6e 2d 6f 76 29 0a 20  | int))))..........(deletion-ov).. | 
| 8c520 |  20 20 20 20 20 20 20 20 28 6d 61 72 6b 65 64 2d    6f 76 73 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69  | ........(marked-ovs.(cl-remove-i | 
| 8c540 |  66 2d 6e 6f 74 20 28 6c 61 6d 62 64 61 20 28 6f    76 29 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20  | f-not.(lambda.(ov).(overlay-get. | 
| 8c560 |  6f 76 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78    74 2d 64 65 6c 65 74 69 6f 6e 2d 6d 61 72 6b 29  | ov.'gptel-context-deletion-mark) | 
| 8c580 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )............................... | 
| 8c5a0 |  20 20 20 20 20 20 20 20 20 6f 76 65 72 6c 61 79    73 29 29 29 0a 20 20 20 20 28 69 66 20 6d 61 72  | .........overlays))).....(if.mar | 
| 8c5c0 |  6b 65 64 2d 6f 76 73 0a 20 20 20 20 20 20 20 20    28 6d 61 70 63 20 23 27 64 65 6c 65 74 65 2d 6f  | ked-ovs.........(mapc.#'delete-o | 
| 8c5e0 |  76 65 72 6c 61 79 20 6d 61 72 6b 65 64 2d 6f 76    73 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 65  | verlay.marked-ovs).......(save-e | 
| 8c600 |  78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20    20 28 64 6f 6c 69 73 74 20 28 6f 76 20 6f 76 65  | xcursion.........(dolist.(ov.ove | 
| 8c620 |  72 6c 61 79 73 29 0a 20 20 20 20 20 20 20 20 20    20 28 77 68 65 6e 20 28 6f 76 65 72 6c 61 79 2d  | rlays)...........(when.(overlay- | 
| 8c640 |  67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d 63 6f    6e 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20  | get.ov.'gptel-context).......... | 
| 8c660 |  20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6f    76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29  | ...(goto-char.(overlay-start.ov) | 
| 8c680 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73    65 74 71 20 64 65 6c 65 74 69 6f 6e 2d 6f 76 20  | ).............(setq.deletion-ov. | 
| 8c6a0 |  28 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 28 6f    76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76 29  | (make-overlay.(overlay-start.ov) | 
| 8c6c0 |  20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f 76    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | .(overlay-end.ov)))............. | 
| 8c6e0 |  28 6f 76 65 72 6c 61 79 2d 70 75 74 20 64 65 6c    65 74 69 6f 6e 2d 6f 76 20 27 67 70 74 65 6c 2d  | (overlay-put.deletion-ov.'gptel- | 
| 8c700 |  63 6f 6e 74 65 78 74 20 28 6f 76 65 72 6c 61 79    2d 67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d 63  | context.(overlay-get.ov.'gptel-c | 
| 8c720 |  6f 6e 74 65 78 74 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75  | ontext)).............(overlay-pu | 
| 8c740 |  74 20 64 65 6c 65 74 69 6f 6e 2d 6f 76 20 27 70    72 69 6f 72 69 74 79 20 2d 38 30 29 0a 20 20 20  | t.deletion-ov.'priority.-80).... | 
| 8c760 |  20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61    79 2d 70 75 74 20 64 65 6c 65 74 69 6f 6e 2d 6f  | .........(overlay-put.deletion-o | 
| 8c780 |  76 20 27 66 61 63 65 20 27 67 70 74 65 6c 2d 63    6f 6e 74 65 78 74 2d 64 65 6c 65 74 69 6f 6e 2d  | v.'face.'gptel-context-deletion- | 
| 8c7a0 |  66 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 64  | face).............(overlay-put.d | 
| 8c7c0 |  65 6c 65 74 69 6f 6e 2d 6f 76 20 27 67 70 74 65    6c 2d 63 6f 6e 74 65 78 74 2d 64 65 6c 65 74 69  | eletion-ov.'gptel-context-deleti | 
| 8c7e0 |  6f 6e 2d 6d 61 72 6b 20 74 29 29 29 29 29 0a 20    20 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69  | on-mark.t))))).....(if.(use-regi | 
| 8c800 |  6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 28 64    65 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 0a  | on-p).........(deactivate-mark). | 
| 8c820 |  20 20 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d    63 6f 6e 74 65 78 74 2d 2d 62 75 66 66 65 72 2d  | ......(if.gptel-context--buffer- | 
| 8c840 |  72 65 76 65 72 73 65 0a 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74  | reverse...........(gptel-context | 
| 8c860 |  2d 70 72 65 76 69 6f 75 73 29 0a 20 20 20 20 20    20 20 20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | -previous).........(gptel-contex | 
| 8c880 |  74 2d 6e 65 78 74 29 29 29 29 29 0a 0a 28 64 65    66 75 6e 20 67 70 74 65 6c 2d 63 6f 6e 74 65 78  | t-next)))))..(defun.gptel-contex | 
| 8c8a0 |  74 2d 71 75 69 74 20 28 29 0a 20 20 22 43 61 6e    63 65 6c 20 70 65 6e 64 69 6e 67 20 6f 70 65 72  | t-quit.()..."Cancel.pending.oper | 
| 8c8c0 |  61 74 69 6f 6e 73 20 61 6e 64 20 72 65 74 75 72    6e 20 74 6f 20 67 70 74 65 6c 27 73 20 6d 65 6e  | ations.and.return.to.gptel's.men | 
| 8c8e0 |  75 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69    76 65 29 0a 20 20 28 71 75 69 74 2d 77 69 6e 64  | u."...(interactive)...(quit-wind | 
| 8c900 |  6f 77 29 0a 20 20 28 63 61 6c 6c 2d 69 6e 74 65    72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65  | ow)...(call-interactively.#'gpte | 
| 8c920 |  6c 2d 6d 65 6e 75 29 29 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 63  | l-menu))..(defun.gptel-context-c | 
| 8c940 |  6f 6e 66 69 72 6d 20 28 29 0a 20 20 22 43 6f 6e    66 69 72 6d 20 70 65 6e 64 69 6e 67 20 6f 70 65  | onfirm.()..."Confirm.pending.ope | 
| 8c960 |  72 61 74 69 6f 6e 73 20 61 6e 64 20 72 65 74 75    72 6e 20 74 6f 20 67 70 74 65 6c 27 73 20 6d 65  | rations.and.return.to.gptel's.me | 
| 8c980 |  6e 75 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74    69 76 65 29 0a 20 20 3b 3b 20 44 65 6c 65 74 65  | nu."...(interactive)...;;.Delete | 
| 8c9a0 |  20 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65 78 74    20 6f 76 65 72 6c 61 79 73 20 74 68 61 74 20 68  | .all.the.context.overlays.that.h | 
| 8c9c0 |  61 76 65 20 62 65 65 6e 20 6d 61 72 6b 65 64 20    66 6f 72 20 64 65 6c 65 74 69 6f 6e 2e 0a 20 20  | ave.been.marked.for.deletion.... | 
| 8c9e0 |  28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 64 65 6c    65 74 69 6f 6e 2d 6d 61 72 6b 73 0a 20 20 20 20  | (when-let*.((deletion-marks..... | 
| 8ca00 |  20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 71    20 6e 69 6c 20 28 6d 61 70 63 61 72 0a 20 20 20  | ...........(delq.nil.(mapcar.... | 
| 8ca20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28  | .......................(lambda.( | 
| 8ca40 |  6f 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ov)............................. | 
| 8ca60 |  28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (and............................ | 
| 8ca80 |  20 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f    76 20 27 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74  | ..(overlay-get.ov.'gptel-context | 
| 8caa0 |  2d 64 65 6c 65 74 69 6f 6e 2d 6d 61 72 6b 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -deletion-mark)................. | 
| 8cac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76    65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67 70  | .............(overlay-get.ov.'gp | 
| 8cae0 |  74 65 6c 2d 63 6f 6e 74 65 78 74 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tel-context))).................. | 
| 8cb00 |  20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61    79 73 2d 69 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e  | .........(overlays-in.(point-min | 
| 8cb20 |  29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29    29 29 0a 20 20 20 20 28 6d 61 70 63 20 23 27 67  | ).(point-max)))))).....(mapc.#'g | 
| 8cb40 |  70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d 72 65 6d    6f 76 65 20 64 65 6c 65 74 69 6f 6e 2d 6d 61 72  | ptel-context-remove.deletion-mar | 
| 8cb60 |  6b 73 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 63    6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65 63 74 29  | ks).....(gptel-context--collect) | 
| 8cb80 |  20 20 20 20 20 20 20 20 20 20 20 3b 55 70 64 61    74 65 20 63 6f 6e 74 65 78 74 73 20 61 6e 64 20  | ...........;Update.contexts.and. | 
| 8cba0 |  72 65 76 65 72 74 20 62 75 66 66 65 72 20 28 23    34 38 32 29 0a 20 20 20 20 28 72 65 76 65 72 74  | revert.buffer.(#482).....(revert | 
| 8cbc0 |  2d 62 75 66 66 65 72 29 29 0a 20 20 28 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 2d 71 75 69 74 29  | -buffer))...(gptel-context-quit) | 
| 8cbe0 |  29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 29 0a 3b 3b 3b 20  | )..(provide.'gptel-context).;;;. | 
| 8cc00 |  67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2e 65 6c    20 65 6e 64 73 20 68 65 72 65 2e 0a 00 00 00 00  | gptel-context.el.ends.here...... | 
| 8cc20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cc40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cc60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cc80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8ccc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cd00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cd20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cd40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cd60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cd80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cda0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cdc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cde0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8ce00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 4e 45    57 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | gptel-0.9.8.5/NEWS.............. | 
| 8ce20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8ce40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8ce60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 8ce80 |  30 30 33 34 36 31 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 32 31 35 30 00 20 30 00 00 00  | 0034610.00000000000.012150..0... | 
| 8cea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cf00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 8cf20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 8cf40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cf60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cf80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cfa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cfc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8cfe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 8d000 |  23 20 2d 2a 2d 20 6d 6f 64 65 3a 20 6f 72 67 3b    20 2d 2a 2d 0a 0a 2a 20 30 2e 39 2e 38 2e 35 20  | #.-*-.mode:.org;.-*-..*.0.9.8.5. | 
| 8d020 |  32 30 32 35 2d 30 36 2d 31 31 0a 0a 2a 2a 20 42    72 65 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 0a  | 2025-06-11..**.Breaking.changes. | 
| 8d040 |  0a 2d 20 7e 67 70 74 65 6c 2d 6f 72 67 2d 62 72    61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 7e  | .-.~gptel-org-branching-context~ | 
| 8d060 |  20 69 73 20 6e 6f 77 20 61 20 67 6c 6f 62 61 6c    20 76 61 72 69 61 62 6c 65 2e 20 20 49 74 20 77  | .is.now.a.global.variable...It.w | 
| 8d080 |  61 73 0a 20 20 62 75 66 66 65 72 2d 6c 6f 63 61    6c 20 62 79 20 64 65 66 61 75 6c 74 20 69 6e 20  | as...buffer-local.by.default.in. | 
| 8d0a0 |  70 61 73 74 20 72 65 6c 65 61 73 65 73 2e 0a 0a    2d 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  | past.releases...-.The.following. | 
| 8d0c0 |  6d 6f 64 65 6c 73 20 68 61 76 65 20 62 65 65 6e    20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68  | models.have.been.removed.from.th | 
| 8d0e0 |  65 20 64 65 66 61 75 6c 74 20 43 68 61 74 47 50    54 20 62 61 63 6b 65 6e 64 3a 0a 20 20 2d 20 7e  | e.default.ChatGPT.backend:...-.~ | 
| 8d100 |  6f 31 2d 70 72 65 76 69 65 77 7e 3a 20 75 73 65    20 7e 6f 31 7e 20 69 6e 73 74 65 61 64 2e 0a 20  | o1-preview~:.use.~o1~.instead... | 
| 8d120 |  20 2d 20 7e 67 70 74 2d 34 2d 74 75 72 62 6f 2d    70 72 65 76 69 65 77 7e 3a 20 75 73 65 20 7e 67  | .-.~gpt-4-turbo-preview~:.use.~g | 
| 8d140 |  70 74 2d 34 6f 7e 20 6f 72 20 7e 67 70 74 2d 34    2d 74 75 72 62 6f 7e 20 69 6e 73 74 65 61 64 2e  | pt-4o~.or.~gpt-4-turbo~.instead. | 
| 8d160 |  0a 20 20 2d 20 7e 67 70 74 2d 34 2d 33 32 6b 7e    2c 20 7e 67 70 74 2d 34 2d 30 31 32 35 2d 70 72  | ...-.~gpt-4-32k~,.~gpt-4-0125-pr | 
| 8d180 |  65 76 69 65 77 7e 20 61 6e 64 20 7e 67 70 74 2d    34 2d 31 31 30 36 2d 70 72 65 76 69 65 77 7e 3a  | eview~.and.~gpt-4-1106-preview~: | 
| 8d1a0 |  20 75 73 65 0a 20 20 20 20 7e 67 70 74 2d 34 6f    7e 20 6f 72 20 7e 67 70 74 2d 34 7e 20 69 6e 73  | .use.....~gpt-4o~.or.~gpt-4~.ins | 
| 8d1c0 |  74 65 61 64 2e 0a 20 20 41 6c 74 65 72 6e 61 74    69 76 65 6c 79 2c 20 79 6f 75 20 63 61 6e 20 61  | tead....Alternatively,.you.can.a | 
| 8d1e0 |  64 64 20 74 68 65 73 65 20 6d 6f 64 65 6c 73 20    62 61 63 6b 20 74 6f 20 74 68 65 20 62 61 63 6b  | dd.these.models.back.to.the.back | 
| 8d200 |  65 6e 64 20 69 6e 20 79 6f 75 72 0a 20 20 70 65    72 73 6f 6e 61 6c 20 63 6f 6e 66 69 67 75 72 61  | end.in.your...personal.configura | 
| 8d220 |  74 69 6f 6e 3a 0a 20 20 23 2b 62 65 67 69 6e 5f    73 72 63 20 65 6d 61 63 73 2d 6c 69 73 70 0a 20  | tion:...#+begin_src.emacs-lisp.. | 
| 8d240 |  20 28 70 75 73 68 20 27 67 70 74 2d 34 2d 74 75    72 62 6f 2d 70 72 65 76 69 65 77 0a 20 20 20 20  | .(push.'gpt-4-turbo-preview..... | 
| 8d260 |  20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65    6e 64 2d 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c  | ....(gptel-backend-models.(gptel | 
| 8d280 |  2d 67 65 74 2d 62 61 63 6b 65 6e 64 20 22 43 68    61 74 47 50 54 22 29 29 29 0a 20 20 23 2b 65 6e  | -get-backend."ChatGPT")))...#+en | 
| 8d2a0 |  64 5f 73 72 63 0a 0a 2d 20 4f 6e 6c 79 20 72 65    6c 65 76 61 6e 74 20 69 66 20 79 6f 75 20 75 73  | d_src..-.Only.relevant.if.you.us | 
| 8d2c0 |  65 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74    7e 20 69 6e 20 79 6f 75 72 20 65 6c 69 73 70 20  | e.~gptel-request~.in.your.elisp. | 
| 8d2e0 |  63 6f 64 65 2c 0a 20 20 2f 69 6e 74 65 72 61 63    74 69 76 65 20 67 70 74 65 6c 20 75 73 61 67 65  | code,.../interactive.gptel.usage | 
| 8d300 |  20 69 73 20 75 6e 61 66 66 65 63 74 65 64 2f 3a    20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74 7e  | .is.unaffected/:.~gptel-request~ | 
| 8d320 |  20 6e 6f 77 20 74 61 6b 65 73 20 61 0a 20 20 6e    65 77 2c 20 6f 70 74 69 6f 6e 61 6c 20 3d 3a 74  | .now.takes.a...new,.optional.=:t | 
| 8d340 |  72 61 6e 73 66 6f 72 6d 73 3d 20 61 72 67 75 6d    65 6e 74 2e 20 20 41 6e 79 20 70 72 6f 6d 70 74  | ransforms=.argument...Any.prompt | 
| 8d360 |  20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 0a 20    20 28 6c 69 6b 65 20 61 64 64 69 6e 67 20 63 6f  | .modifications...(like.adding.co | 
| 8d380 |  6e 74 65 78 74 20 74 6f 20 72 65 71 75 65 73 74    73 29 20 6d 75 73 74 20 6e 6f 77 20 62 65 20 73  | ntext.to.requests).must.now.be.s | 
| 8d3a0 |  70 65 63 69 66 69 65 64 20 76 69 61 20 74 68 69    73 0a 20 20 61 72 67 75 6d 65 6e 74 2e 20 20 53  | pecified.via.this...argument...S | 
| 8d3c0 |  65 65 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f    6e 20 6f 66 20 7e 67 70 74 65 6c 2d 73 65 6e 64  | ee.the.definition.of.~gptel-send | 
| 8d3e0 |  7e 20 66 6f 72 20 61 6e 20 65 78 61 6d 70 6c 65    2e 0a 0a 2a 2a 20 4e 65 77 20 6d 6f 64 65 6c 73  | ~.for.an.example...**.New.models | 
| 8d400 |  20 61 6e 64 20 62 61 63 6b 65 6e 64 73 0a 0a 2d    20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72  | .and.backends..-.Add.support.for | 
| 8d420 |  20 7e 67 70 74 2d 34 2e 31 7e 2c 20 7e 67 70 74    2d 34 2e 31 2d 6d 69 6e 69 7e 2c 20 7e 67 70 74  | .~gpt-4.1~,.~gpt-4.1-mini~,.~gpt | 
| 8d440 |  2d 34 2e 31 2d 6e 61 6e 6f 7e 2c 20 7e 6f 33 7e    20 61 6e 64 0a 20 20 7e 6f 34 2d 6d 69 6e 69 7e  | -4.1-nano~,.~o3~.and...~o4-mini~ | 
| 8d460 |  2e 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74    20 66 6f 72 20 7e 67 65 6d 69 6e 69 2d 32 2e 35  | ...-.Add.support.for.~gemini-2.5 | 
| 8d480 |  2d 70 72 6f 2d 65 78 70 2d 30 33 2d 32 35 7e 2c    0a 20 20 7e 67 65 6d 69 6e 69 2d 32 2e 35 2d 66  | -pro-exp-03-25~,...~gemini-2.5-f | 
| 8d4a0 |  6c 61 73 68 2d 70 72 65 76 69 65 77 2d 30 34 2d    31 37 7e 2c 20 7e 67 65 6d 69 6e 69 2d 32 2e 35  | lash-preview-04-17~,.~gemini-2.5 | 
| 8d4c0 |  2d 70 72 6f 2d 70 72 65 76 69 65 77 2d 30 35 2d    30 36 7e 20 61 6e 64 0a 20 20 7e 67 65 6d 69 6e  | -pro-preview-05-06~.and...~gemin | 
| 8d4e0 |  69 2d 32 2e 35 2d 70 72 6f 2d 70 72 65 76 69 65    77 2d 30 36 2d 30 35 7e 2e 0a 0a 2d 20 41 64 64  | i-2.5-pro-preview-06-05~...-.Add | 
| 8d500 |  20 73 75 70 70 6f 72 74 20 66 6f 72 20 7e 63 6c    61 75 64 65 2d 73 6f 6e 6e 65 74 2d 34 2d 32 30  | .support.for.~claude-sonnet-4-20 | 
| 8d520 |  32 35 30 35 31 34 7e 20 61 6e 64 0a 20 20 7e 63    6c 61 75 64 65 2d 6f 70 75 73 2d 34 2d 32 30 32  | 250514~.and...~claude-opus-4-202 | 
| 8d540 |  35 30 35 31 34 7e 2e 0a 0a 2d 20 41 64 64 20 73    75 70 70 6f 72 74 20 66 6f 72 20 41 57 53 20 42  | 50514~...-.Add.support.for.AWS.B | 
| 8d560 |  65 64 72 6f 63 6b 20 6d 6f 64 65 6c 73 2e 20 20    59 6f 75 20 63 61 6e 20 63 72 65 61 74 65 20 61  | edrock.models...You.can.create.a | 
| 8d580 |  6e 20 41 57 53 20 42 65 64 72 6f 63 6b 0a 20 20    67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 77 69  | n.AWS.Bedrock...gptel.backend.wi | 
| 8d5a0 |  74 68 20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 62    65 64 72 6f 63 6b 7e 2c 20 77 68 69 63 68 20 73  | th.~gptel-make-bedrock~,.which.s | 
| 8d5c0 |  65 65 2e 20 20 50 6c 65 61 73 65 20 6e 6f 74 65    3a 0a 20 20 41 57 53 20 42 65 64 72 6f 63 6b 20  | ee...Please.note:...AWS.Bedrock. | 
| 8d5e0 |  73 75 70 70 6f 72 74 20 72 65 71 75 69 72 65 73    20 43 75 72 6c 20 38 2e 35 2e 30 20 6f 72 20 68  | support.requires.Curl.8.5.0.or.h | 
| 8d600 |  69 67 68 65 72 2e 0a 0a 2d 20 59 6f 75 20 63 61    6e 20 6e 6f 77 20 63 72 65 61 74 65 20 61 6e 20  | igher...-.You.can.now.create.an. | 
| 8d620 |  78 41 49 20 62 61 63 6b 65 6e 64 20 77 69 74 68    20 7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 78 61 69  | xAI.backend.with.~gptel-make-xai | 
| 8d640 |  7e 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 20 20    28 78 41 49 20 77 61 73 20 73 75 70 70 6f 72 74  | ~,.which.see....(xAI.was.support | 
| 8d660 |  65 64 20 62 65 66 6f 72 65 20 62 75 74 20 74 68    65 20 6d 6f 64 65 6c 20 63 6f 6e 66 69 67 75 72  | ed.before.but.the.model.configur | 
| 8d680 |  61 74 69 6f 6e 20 69 73 20 6e 6f 77 20 68 61 6e    64 6c 65 64 0a 20 20 66 6f 72 20 79 6f 75 20 62  | ation.is.now.handled...for.you.b | 
| 8d6a0 |  79 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e    29 0a 0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74  | y.this.function.)..-.Add.support | 
| 8d6c0 |  20 66 6f 72 20 47 69 74 48 75 62 20 43 6f 70 69    6c 6f 74 20 43 68 61 74 2e 20 20 53 65 65 20 74  | .for.GitHub.Copilot.Chat...See.t | 
| 8d6e0 |  68 65 20 52 45 41 44 4d 45 20 61 6e 64 0a 20 20    7e 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 68 2d 63  | he.README.and...~gptel-make-gh-c | 
| 8d700 |  6f 70 69 6c 6f 74 7e 2e 20 20 50 6c 65 61 73 65    20 6e 6f 74 65 3a 20 74 68 69 73 20 69 73 20 6f  | opilot~...Please.note:.this.is.o | 
| 8d720 |  6e 6c 79 20 74 68 65 20 63 68 61 74 0a 20 20 63    6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 47 69 74 48  | nly.the.chat...component.of.GitH | 
| 8d740 |  75 62 20 43 6f 70 69 6c 6f 74 2e 20 20 43 6f 70    69 6c 6f 74 27 73 20 7e 63 6f 6d 70 6c 65 74 69  | ub.Copilot...Copilot's.~completi | 
| 8d760 |  6f 6e 2d 61 74 2d 70 6f 69 6e 74 7e 0a 20 20 28    74 61 62 2d 63 6f 6d 70 6c 65 74 69 6f 6e 29 20  | on-at-point~...(tab-completion). | 
| 8d780 |  66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 69 73    20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62  | functionality.is.not.supported.b | 
| 8d7a0 |  79 20 67 70 74 65 6c 2e 0a 0a 2d 20 41 64 64 20    73 75 70 70 6f 72 74 20 66 6f 72 20 53 61 6d 62  | y.gptel...-.Add.support.for.Samb | 
| 8d7c0 |  61 6e 6f 76 61 2e 20 20 54 68 69 73 20 69 73 20    61 6e 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74  | anova...This.is.an.OpenAI-compat | 
| 8d7e0 |  69 62 6c 65 20 41 50 49 20 73 6f 20 79 6f 75 0a    20 20 63 61 6e 20 63 72 65 61 74 65 20 61 20 62  | ible.API.so.you...can.create.a.b | 
| 8d800 |  61 63 6b 65 6e 64 20 77 69 74 68 20 7e 67 70 74    65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 2c  | ackend.with.~gptel-make-openai~, | 
| 8d820 |  20 73 65 65 20 74 68 65 20 52 45 41 44 4d 45 20    66 6f 72 0a 20 20 64 65 74 61 69 6c 73 2e 0a 0a  | .see.the.README.for...details... | 
| 8d840 |  2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f    72 20 4d 69 73 74 72 61 6c 20 4c 65 20 43 68 61  | -.Add.support.for.Mistral.Le.Cha | 
| 8d860 |  74 2e 20 20 54 68 69 73 20 69 73 20 61 6e 20 61    6e 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69  | t...This.is.an.an.OpenAI-compati | 
| 8d880 |  62 6c 65 0a 20 20 41 50 49 20 73 6f 20 79 6f 75    20 63 61 6e 20 63 72 65 61 74 65 20 61 20 62 61  | ble...API.so.you.can.create.a.ba | 
| 8d8a0 |  63 6b 65 6e 64 20 77 69 74 68 20 7e 67 70 74 65    6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 2c 20  | ckend.with.~gptel-make-openai~,. | 
| 8d8c0 |  73 65 65 20 74 68 65 0a 20 20 52 45 41 44 4d 45    20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 2a  | see.the...README.for.details...* | 
| 8d8e0 |  2a 20 4e 65 77 20 66 65 61 74 75 72 65 73 20 61    6e 64 20 55 49 20 63 68 61 6e 67 65 73 0a 0a 2d  | *.New.features.and.UI.changes..- | 
| 8d900 |  20 67 70 74 65 6c 20 6e 6f 77 20 73 75 70 70 6f    72 74 73 20 68 61 6e 64 6c 69 6e 67 20 72 65 61  | .gptel.now.supports.handling.rea | 
| 8d920 |  73 6f 6e 69 6e 67 2f 74 68 69 6e 6b 69 6e 67 20    62 6c 6f 63 6b 73 20 69 6e 20 72 65 73 70 6f 6e  | soning/thinking.blocks.in.respon | 
| 8d940 |  73 65 73 0a 20 20 66 72 6f 6d 20 47 65 6d 69 6e    69 20 6d 6f 64 65 6c 73 2e 20 20 54 68 69 73 20  | ses...from.Gemini.models...This. | 
| 8d960 |  69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79    0a 20 20 7e 67 70 74 65 6c 2d 69 6e 63 6c 75 64  | is.controlled.by...~gptel-includ | 
| 8d980 |  65 2d 72 65 61 73 6f 6e 69 6e 67 7e 2c 20 69 6e    20 74 68 65 20 73 61 6d 65 20 77 61 79 20 74 68  | e-reasoning~,.in.the.same.way.th | 
| 8d9a0 |  61 74 20 69 74 20 68 61 6e 64 6c 65 73 20 6f 74    68 65 72 0a 20 20 41 50 49 73 2e 0a 0a 2d 20 54  | at.it.handles.other...APIs...-.T | 
| 8d9c0 |  68 65 20 6e 65 77 20 6f 70 74 69 6f 6e 20 7e 67    70 74 65 6c 2d 63 75 72 6c 2d 65 78 74 72 61 2d  | he.new.option.~gptel-curl-extra- | 
| 8d9e0 |  61 72 67 73 7e 20 63 61 6e 20 62 65 20 75 73 65    64 20 74 6f 20 73 70 65 63 69 66 79 20 65 78 74  | args~.can.be.used.to.specify.ext | 
| 8da00 |  72 61 0a 20 20 61 72 67 75 6d 65 6e 74 73 20 74    6f 20 74 68 65 20 43 75 72 6c 20 63 6f 6d 6d 61  | ra...arguments.to.the.Curl.comma | 
| 8da20 |  6e 64 20 75 73 65 64 20 66 6f 72 20 74 68 65 20    72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 69  | nd.used.for.the.request...This.i | 
| 8da40 |  73 20 74 68 65 0a 20 20 67 6c 6f 62 61 6c 20 76    65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 67 70  | s.the...global.version.of.the.gp | 
| 8da60 |  74 65 6c 2d 62 61 63 6b 65 6e 64 2d 73 70 65 63    69 66 69 63 20 7e 3a 63 75 72 6c 2d 61 72 67 73  | tel-backend-specific.~:curl-args | 
| 8da80 |  7e 20 73 6c 6f 74 2c 0a 20 20 77 68 69 63 68 20    63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 73  | ~.slot,...which.can.be.used.to.s | 
| 8daa0 |  70 65 63 69 66 79 20 43 75 72 6c 20 61 72 67 75    6d 65 6e 74 73 20 77 68 65 6e 20 75 73 69 6e 67  | pecify.Curl.arguments.when.using | 
| 8dac0 |  20 61 20 73 70 65 63 69 66 69 63 0a 20 20 62 61    63 6b 65 6e 64 2e 0a 0a 2d 20 54 6f 6f 6c 73 20  | .a.specific...backend...-.Tools. | 
| 8dae0 |  6e 6f 77 20 72 75 6e 20 69 6e 20 74 68 65 20 62    75 66 66 65 72 20 66 72 6f 6d 20 77 68 69 63 68  | now.run.in.the.buffer.from.which | 
| 8db00 |  20 74 68 65 20 72 65 71 75 65 73 74 20 6f 72 69    67 69 6e 61 74 65 73 2e 20 20 54 68 69 73 0a 20  | .the.request.originates...This.. | 
| 8db20 |  20 63 61 6e 20 62 65 20 73 69 67 6e 69 66 69 63    61 6e 74 20 77 68 65 6e 20 74 6f 6f 6c 73 20 72  | .can.be.significant.when.tools.r | 
| 8db40 |  65 61 64 20 6f 72 20 6d 61 6e 69 70 75 6c 61 74    65 20 45 6d 61 63 73 27 20 73 74 61 74 65 2e 0a  | ead.or.manipulate.Emacs'.state.. | 
| 8db60 |  0a 2d 20 67 70 74 65 6c 20 63 61 6e 20 61 63 63    65 73 73 20 4d 43 50 20 73 65 72 76 65 72 20 74  | .-.gptel.can.access.MCP.server.t | 
| 8db80 |  6f 6f 6c 73 20 62 79 20 69 6e 74 65 67 72 61 74    69 6e 67 20 77 69 74 68 20 74 68 65 20 6d 63 70  | ools.by.integrating.with.the.mcp | 
| 8dba0 |  2e 65 6c 0a 20 20 70 61 63 6b 61 67 65 2c 20 77    68 69 63 68 20 69 73 20 61 74 20 68 74 74 70 73  | .el...package,.which.is.at.https | 
| 8dbc0 |  3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6c 69    7a 71 77 65 72 73 63 6f 74 74 2f 6d 63 70 2e 65  | ://github.com/lizqwerscott/mcp.e | 
| 8dbe0 |  6c 2e 0a 20 20 28 6d 63 70 2e 65 6c 20 69 73 20    61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 4d 45 4c  | l....(mcp.el.is.available.on.MEL | 
| 8dc00 |  50 41 2e 29 20 20 54 6f 20 68 65 6c 70 20 77 69    74 68 20 74 68 65 20 69 6e 74 65 67 72 61 74 69  | PA.)..To.help.with.the.integrati | 
| 8dc20 |  6f 6e 2c 20 74 77 6f 0a 20 20 6e 65 77 20 63 6f    6d 6d 61 6e 64 73 20 61 72 65 20 70 72 6f 76 69  | on,.two...new.commands.are.provi | 
| 8dc40 |  64 65 64 3a 20 7e 67 70 74 65 6c 2d 6d 63 70 2d    63 6f 6e 6e 65 63 74 7e 20 61 6e 64 0a 20 20 7e  | ded:.~gptel-mcp-connect~.and...~ | 
| 8dc60 |  67 70 74 65 6c 2d 6d 63 70 2d 64 69 73 63 6f 6e    6e 65 63 74 7e 2e 20 20 59 6f 75 20 63 61 6e 20  | gptel-mcp-disconnect~...You.can. | 
| 8dc80 |  75 73 65 20 74 68 65 73 65 20 74 6f 20 73 74 61    72 74 20 4d 43 50 20 73 65 72 76 65 72 73 0a 20  | use.these.to.start.MCP.servers.. | 
| 8dca0 |  20 73 65 6c 65 63 74 69 76 65 6c 79 20 61 6e 64    20 61 64 64 20 74 6f 6f 6c 73 20 74 6f 20 67 70  | .selectively.and.add.tools.to.gp | 
| 8dcc0 |  74 65 6c 2e 20 20 54 68 65 73 65 20 63 6f 6d 6d    61 6e 64 73 20 61 72 65 20 61 6c 73 6f 0a 20 20  | tel...These.commands.are.also... | 
| 8dce0 |  61 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20 67    70 74 65 6c 27 73 20 74 6f 6f 6c 73 20 6d 65 6e  | available.from.gptel's.tools.men | 
| 8dd00 |  75 2e 0a 20 20 0a 20 20 54 68 65 73 65 20 63 6f    6d 6d 61 6e 64 73 20 61 72 65 20 63 75 72 72 65  | u.......These.commands.are.curre | 
| 8dd20 |  6e 74 6c 79 20 6e 6f 74 20 61 75 74 6f 6c 6f 61    64 65 64 20 62 79 20 67 70 74 65 6c 2e 20 20 54  | ntly.not.autoloaded.by.gptel...T | 
| 8dd40 |  6f 20 61 63 63 65 73 73 0a 20 20 74 68 65 6d 2c    20 72 65 71 75 69 72 65 20 74 68 65 20 7e 67 70  | o.access...them,.require.the.~gp | 
| 8dd60 |  74 65 6c 2d 69 6e 74 65 67 72 61 74 69 6f 6e 73    7e 20 66 65 61 74 75 72 65 2e 0a 0a 2d 20 59 6f  | tel-integrations~.feature...-.Yo | 
| 8dd80 |  75 20 63 61 6e 20 6e 6f 77 20 64 65 66 69 6e 65    20 22 70 72 65 73 65 74 73 22 2c 20 77 68 69 63  | u.can.now.define."presets",.whic | 
| 8dda0 |  68 20 61 72 65 20 61 20 62 75 6e 64 6c 65 20 6f    66 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 2c  | h.are.a.bundle.of.gptel.options, | 
| 8ddc0 |  0a 20 20 73 75 63 68 20 61 73 20 74 68 65 20 62    61 63 6b 65 6e 64 2c 20 6d 6f 64 65 6c 2c 20 73  | ...such.as.the.backend,.model,.s | 
| 8dde0 |  79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c 20 69    6e 63 6c 75 64 65 64 20 74 6f 6f 6c 73 2c 0a 20  | ystem.message,.included.tools,.. | 
| 8de00 |  20 74 65 6d 70 65 72 61 74 75 72 65 20 61 6e 64    20 73 6f 20 6f 6e 2e 20 20 54 68 69 73 20 73 65  | .temperature.and.so.on...This.se | 
| 8de20 |  74 20 6f 66 20 6f 70 74 69 6f 6e 73 20 63 61 6e    20 62 65 20 61 70 70 6c 69 65 64 20 74 6f 67 65  | t.of.options.can.be.applied.toge | 
| 8de40 |  74 68 65 72 2c 0a 20 20 6d 61 6b 69 6e 67 20 69    74 20 65 61 73 79 20 74 6f 20 73 77 69 74 63 68  | ther,...making.it.easy.to.switch | 
| 8de60 |  20 62 65 74 77 65 65 6e 20 64 69 66 66 65 72 65    6e 74 20 74 61 73 6b 73 20 75 73 69 6e 67 20 67  | .between.different.tasks.using.g | 
| 8de80 |  70 74 65 6c 2e 20 20 46 72 6f 6d 0a 20 20 67 70    74 65 6c 27 73 20 74 72 61 6e 73 69 65 6e 74 20  | ptel...From...gptel's.transient. | 
| 8dea0 |  6d 65 6e 75 2c 20 79 6f 75 20 63 61 6e 20 73 61    76 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 63  | menu,.you.can.save.the.current.c | 
| 8dec0 |  6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 61 73 20    61 0a 20 20 70 72 65 73 65 74 20 6f 72 20 61 70  | onfiguration.as.a...preset.or.ap | 
| 8dee0 |  70 6c 79 20 61 6e 6f 74 68 65 72 20 6f 6e 65 2e    20 20 50 72 65 73 65 74 73 20 63 61 6e 20 62 65  | ply.another.one...Presets.can.be | 
| 8df00 |  20 61 70 70 6c 69 65 64 20 67 6c 6f 62 61 6c 6c    79 2c 0a 20 20 62 75 66 66 65 72 2d 6c 6f 63 61  | .applied.globally,...buffer-loca | 
| 8df20 |  6c 6c 79 20 6f 72 20 66 6f 72 20 74 68 65 20 6e    65 78 74 20 72 65 71 75 65 73 74 20 6f 6e 6c 79  | lly.or.for.the.next.request.only | 
| 8df40 |  2e 20 20 54 6f 20 70 65 72 73 69 73 74 20 70 72    65 73 65 74 73 0a 20 20 61 63 72 6f 73 73 20 45  | ...To.persist.presets...across.E | 
| 8df60 |  6d 61 63 73 20 73 65 73 73 69 6f 6e 73 2c 20 64    65 66 69 6e 65 20 70 72 65 73 65 74 73 20 69 6e  | macs.sessions,.define.presets.in | 
| 8df80 |  20 79 6f 75 72 20 63 6f 6e 66 69 67 75 72 61 74    69 6f 6e 20 75 73 69 6e 67 0a 20 20 7e 67 70 74  | .your.configuration.using...~gpt | 
| 8dfa0 |  65 6c 2d 6d 61 6b 65 2d 70 72 65 73 65 74 7e 2e    0a 0a 2d 20 57 68 65 6e 20 75 73 69 6e 67 20 7e  | el-make-preset~...-.When.using.~ | 
| 8dfc0 |  67 70 74 65 6c 2d 73 65 6e 64 7e 20 66 72 6f 6d    20 61 6e 79 77 68 65 72 65 20 69 6e 20 45 6d 61  | gptel-send~.from.anywhere.in.Ema | 
| 8dfe0 |  63 73 2c 20 79 6f 75 20 63 61 6e 20 6e 6f 77 20    69 6e 63 6c 75 64 65 0a 20 20 61 20 22 63 6f 6f  | cs,.you.can.now.include...a."coo | 
| 8e000 |  6b 69 65 22 20 6f 66 20 74 68 65 20 66 6f 72 6d    20 3d 40 70 72 65 73 65 74 2d 6e 61 6d 65 3d 20  | kie".of.the.form.=@preset-name=. | 
| 8e020 |  69 6e 20 74 68 65 20 70 72 6f 6d 70 74 20 74 65    78 74 20 74 6f 20 61 70 70 6c 79 0a 20 20 74 68  | in.the.prompt.text.to.apply...th | 
| 8e040 |  61 74 20 70 72 65 73 65 74 20 62 65 66 6f 72 65    20 73 65 6e 64 69 6e 67 2e 20 20 54 68 65 20 70  | at.preset.before.sending...The.p | 
| 8e060 |  72 65 73 65 74 20 69 73 20 61 70 70 6c 69 65 64    20 66 6f 72 20 74 68 61 74 20 72 65 71 75 65 73  | reset.is.applied.for.that.reques | 
| 8e080 |  74 0a 20 20 6f 6e 6c 79 2e 20 20 54 68 69 73 20    69 73 20 61 6e 20 65 61 73 79 20 77 61 79 20 74  | t...only...This.is.an.easy.way.t | 
| 8e0a0 |  6f 20 73 70 65 63 69 66 79 20 6d 6f 64 65 6c 73    2c 20 74 6f 6f 6c 73 2c 20 73 79 73 74 65 6d 0a  | o.specify.models,.tools,.system. | 
| 8e0c0 |  20 20 6d 65 73 73 61 67 65 73 20 28 65 74 63 29    20 6f 6e 20 74 68 65 20 66 6c 79 2e 20 20 49 6e  | ..messages.(etc).on.the.fly...In | 
| 8e0e0 |  20 63 68 61 74 20 62 75 66 66 65 72 73 20 74 68    65 20 70 72 65 73 65 74 20 63 6f 6f 6b 69 65 20  | .chat.buffers.the.preset.cookie. | 
| 8e100 |  69 73 0a 20 20 66 6f 6e 74 69 66 69 65 64 20 61    6e 64 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72  | is...fontified.and.available.for | 
| 8e120 |  20 63 6f 6d 70 6c 65 74 69 6f 6e 20 76 69 61 20    7e 63 6f 6d 70 6c 65 74 69 6f 6e 2d 61 74 2d 70  | .completion.via.~completion-at-p | 
| 8e140 |  6f 69 6e 74 7e 2e 0a 0a 2d 20 46 6f 72 20 73 63    72 69 70 74 69 6e 67 20 70 75 72 70 6f 73 65 73  | oint~...-.For.scripting.purposes | 
| 8e160 |  2c 20 70 72 6f 76 69 64 65 20 61 20 7e 67 70 74    65 6c 2d 77 69 74 68 2d 70 72 65 73 65 74 7e 20  | ,.provide.a.~gptel-with-preset~. | 
| 8e180 |  6d 61 63 72 6f 20 74 6f 0a 20 20 63 72 65 61 74    65 20 61 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  | macro.to...create.an.environment | 
| 8e1a0 |  20 77 69 74 68 20 61 20 70 72 65 73 65 74 20 61    70 70 6c 69 65 64 2e 0a 0a 2d 20 4c 69 6e 6b 73  | .with.a.preset.applied...-.Links | 
| 8e1c0 |  20 74 6f 20 70 6c 61 69 6e 2d 74 65 78 74 20 66    69 6c 65 73 20 69 6e 20 63 68 61 74 20 62 75 66  | .to.plain-text.files.in.chat.buf | 
| 8e1e0 |  66 65 72 73 20 63 61 6e 20 62 65 20 66 6f 6c 6c    6f 77 65 64 2c 20 61 6e 64 20 74 68 65 69 72 0a  | fers.can.be.followed,.and.their. | 
| 8e200 |  20 20 63 6f 6e 74 65 6e 74 73 20 69 6e 63 6c 75    64 65 64 20 77 69 74 68 20 74 68 65 20 72 65 71  | ..contents.included.with.the.req | 
| 8e220 |  75 65 73 74 2e 20 20 55 73 69 6e 67 20 4f 72 67    20 6f 72 20 4d 61 72 6b 64 6f 77 6e 20 6c 69 6e  | uest...Using.Org.or.Markdown.lin | 
| 8e240 |  6b 73 20 69 73 0a 20 20 61 6e 20 65 61 73 79 2c    20 69 6e 74 75 69 74 69 76 65 2c 20 70 65 72 73  | ks.is...an.easy,.intuitive,.pers | 
| 8e260 |  69 73 74 65 6e 74 20 61 6e 64 20 62 75 66 66 65    72 2d 6c 6f 63 61 6c 20 77 61 79 20 74 6f 20 73  | istent.and.buffer-local.way.to.s | 
| 8e280 |  70 65 63 69 66 79 0a 20 20 63 6f 6e 74 65 78 74    2e 20 20 54 6f 20 65 6e 61 62 6c 65 20 74 68 69  | pecify...context...To.enable.thi | 
| 8e2a0 |  73 20 62 65 68 61 76 69 6f 72 2c 20 74 75 72 6e    20 6f 6e 20 7e 67 70 74 65 6c 2d 74 72 61 63 6b  | s.behavior,.turn.on.~gptel-track | 
| 8e2c0 |  2d 6d 65 64 69 61 7e 2e 20 54 68 69 73 0a 20 20    69 73 20 61 20 70 72 65 2d 65 78 69 73 74 69 6e  | -media~..This...is.a.pre-existin | 
| 8e2e0 |  67 20 6f 70 74 69 6f 6e 20 74 68 61 74 20 61 6c    73 6f 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74  | g.option.that.also.controls.whet | 
| 8e300 |  68 65 72 20 69 6d 61 67 65 2f 64 6f 63 75 6d 65    6e 74 0a 20 20 6c 69 6e 6b 73 20 61 72 65 20 66  | her.image/document...links.are.f | 
| 8e320 |  6f 6c 6c 6f 77 65 64 20 61 6e 64 20 73 65 6e 74    20 28 77 68 65 6e 20 74 68 65 20 6d 6f 64 65 6c  | ollowed.and.sent.(when.the.model | 
| 8e340 |  20 73 75 70 70 6f 72 74 73 20 69 74 29 2e 0a 0a    2d 20 41 20 6e 65 77 20 68 6f 6f 6b 20 7e 67 70  | .supports.it)...-.A.new.hook.~gp | 
| 8e360 |  74 65 6c 2d 70 72 6f 6d 70 74 2d 74 72 61 6e 73    66 6f 72 6d 2d 66 75 6e 63 74 69 6f 6e 73 7e 20  | tel-prompt-transform-functions~. | 
| 8e380 |  69 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 0a    20 20 61 72 62 69 74 72 61 72 79 20 74 72 61 6e  | is.provided.for...arbitrary.tran | 
| 8e3a0 |  73 66 6f 72 6d 61 74 69 6f 6e 73 20 6f 66 20 74    68 65 20 70 72 6f 6d 70 74 20 70 72 69 6f 72 20  | sformations.of.the.prompt.prior. | 
| 8e3c0 |  74 6f 20 73 65 6e 64 69 6e 67 20 61 20 72 65 71    75 65 73 74 2e 0a 20 20 54 68 69 73 20 68 6f 6f  | to.sending.a.request....This.hoo | 
| 8e3e0 |  6b 20 72 75 6e 73 20 69 6e 20 61 20 74 65 6d 70    6f 72 61 72 79 20 62 75 66 66 65 72 20 63 6f 6e  | k.runs.in.a.temporary.buffer.con | 
| 8e400 |  74 61 69 6e 69 6e 67 20 74 68 65 20 74 65 78 74    20 74 6f 20 62 65 20 73 65 6e 74 2e 0a 20 20 41  | taining.the.text.to.be.sent....A | 
| 8e420 |  6e 79 20 61 73 70 65 63 74 20 6f 66 20 74 68 65    20 72 65 71 75 65 73 74 20 28 74 68 65 20 74 65  | ny.aspect.of.the.request.(the.te | 
| 8e440 |  78 74 2c 20 64 65 73 74 69 6e 61 74 69 6f 6e 2c    20 72 65 71 75 65 73 74 0a 20 20 70 61 72 61 6d  | xt,.destination,.request...param | 
| 8e460 |  65 74 65 72 73 2c 20 72 65 73 70 6f 6e 73 65 20    68 61 6e 64 6c 69 6e 67 20 70 72 65 66 65 72 65  | eters,.response.handling.prefere | 
| 8e480 |  6e 63 65 73 29 20 63 61 6e 20 62 65 20 6d 6f 64    69 66 69 65 64 0a 20 20 62 75 66 66 65 72 2d 6c  | nces).can.be.modified...buffer-l | 
| 8e4a0 |  6f 63 61 6c 6c 79 20 68 65 72 65 2e 20 20 54 68    65 73 65 20 68 6f 6f 6b 20 66 75 6e 63 74 69 6f  | ocally.here...These.hook.functio | 
| 8e4c0 |  6e 73 20 63 61 6e 20 62 65 20 61 73 79 6e 63 68    72 6f 6e 6f 75 73 2e 0a 0a 2d 20 54 68 65 20 75  | ns.can.be.asynchronous...-.The.u | 
| 8e4e0 |  73 65 72 20 6f 70 74 69 6f 6e 20 7e 67 70 74 65    6c 2d 75 73 65 2d 63 75 72 6c 7e 20 63 61 6e 20  | ser.option.~gptel-use-curl~.can. | 
| 8e500 |  6e 6f 77 20 62 65 20 75 73 65 64 20 74 6f 20 73    70 65 63 69 66 79 20 61 20 43 75 72 6c 0a 20 20  | now.be.used.to.specify.a.Curl... | 
| 8e520 |  70 61 74 68 2e 0a 0a 2d 20 54 68 65 20 63 75 72    72 65 6e 74 20 6b 69 6c 6c 20 63 61 6e 20 62 65  | path...-.The.current.kill.can.be | 
| 8e540 |  20 61 64 64 65 64 20 74 6f 20 67 70 74 65 6c 27    73 20 63 6f 6e 74 65 78 74 2e 20 20 54 6f 20 65  | .added.to.gptel's.context...To.e | 
| 8e560 |  6e 61 62 6c 65 20 74 68 69 73 2c 0a 20 20 74 75    72 6e 20 6f 6e 20 7e 67 70 74 65 6c 2d 65 78 70  | nable.this,...turn.on.~gptel-exp | 
| 8e580 |  65 72 74 2d 63 6f 6d 6d 61 6e 64 73 7e 20 61 6e    64 20 75 73 65 20 67 70 74 65 6c 27 73 20 74 72  | ert-commands~.and.use.gptel's.tr | 
| 8e5a0 |  61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e 20 0a 0a    2d 20 54 68 65 20 74 6f 6f 6c 73 20 6d 65 6e 75  | ansient.menu....-.The.tools.menu | 
| 8e5c0 |  20 28 7e 67 70 74 65 6c 2d 74 6f 6f 6c 73 7e 29    20 68 61 73 20 62 65 65 6e 20 72 65 64 65 73 69  | .(~gptel-tools~).has.been.redesi | 
| 8e5e0 |  67 6e 65 64 2e 20 20 49 74 20 6e 6f 77 20 64 69    73 70 6c 61 79 73 0a 20 20 74 6f 6f 6c 20 63 61  | gned...It.now.displays...tool.ca | 
| 8e600 |  74 65 67 6f 72 69 65 73 20 61 6e 64 20 61 73 73    6f 63 69 61 74 65 64 20 74 6f 6f 6c 73 20 69 6e  | tegories.and.associated.tools.in | 
| 8e620 |  20 74 77 6f 20 63 6f 6c 75 6d 6e 73 2c 20 61 6e    64 20 69 74 20 73 68 6f 75 6c 64 0a 20 20 73 63  | .two.columns,.and.it.should...sc | 
| 8e640 |  61 6c 65 20 62 65 74 74 65 72 20 74 6f 20 61 6e    79 20 6e 75 6d 62 65 72 20 6f 66 20 74 6f 6f 6c  | ale.better.to.any.number.of.tool | 
| 8e660 |  73 2e 20 20 41 73 20 61 20 62 6f 6e 75 73 2c 20    74 68 65 20 6e 65 77 20 6d 65 6e 75 0a 20 20 72  | s...As.a.bonus,.the.new.menu...r | 
| 8e680 |  65 71 75 69 72 65 73 20 68 61 6c 66 20 61 73 20    6d 61 6e 79 20 6b 65 79 73 74 72 6f 6b 65 73 20  | equires.half.as.many.keystrokes. | 
| 8e6a0 |  61 73 20 62 65 66 6f 72 65 20 74 6f 20 65 6e 61    62 6c 65 20 69 6e 64 69 76 69 64 75 61 6c 0a 20  | as.before.to.enable.individual.. | 
| 8e6c0 |  20 74 6f 6f 6c 73 20 6f 72 20 74 6f 67 67 6c 65    20 63 61 74 65 67 6f 72 69 65 73 2e 0a 0a 2a 2a  | .tools.or.toggle.categories...** | 
| 8e6e0 |  20 4e 6f 74 61 62 6c 65 20 42 75 67 20 66 69 78    65 73 0a 0a 2d 20 46 69 78 20 6d 6f 72 65 20 4f  | .Notable.Bug.fixes..-.Fix.more.O | 
| 8e700 |  72 67 20 6d 61 72 6b 75 70 20 63 6f 6e 76 65 72    73 69 6f 6e 20 65 64 67 65 20 63 61 73 65 73 20  | rg.markup.conversion.edge.cases. | 
| 8e720 |  69 6e 76 6f 6c 76 69 6e 67 20 6e 65 73 74 65 64    20 4d 61 72 6b 64 6f 77 6e 0a 20 20 64 65 6c 69  | involving.nested.Markdown...deli | 
| 8e740 |  6d 69 74 65 72 73 2e 0a 0a 2a 20 30 2e 39 2e 38    20 32 30 32 35 2d 30 33 2d 31 33 0a 0a 56 65 72  | miters...*.0.9.8.2025-03-13..Ver | 
| 8e760 |  73 69 6f 6e 20 30 2e 39 2e 38 20 61 64 64 73 20    73 75 70 70 6f 72 74 20 66 6f 72 20 6e 65 77 20  | sion.0.9.8.adds.support.for.new. | 
| 8e780 |  47 65 6d 69 6e 69 2c 20 41 6e 74 68 72 6f 70 69    63 2c 20 4f 70 65 6e 41 49 2c 0a 50 65 72 70 6c  | Gemini,.Anthropic,.OpenAI,.Perpl | 
| 8e7a0 |  65 78 69 74 79 2c 20 61 6e 64 20 44 65 65 70 53    65 65 6b 20 6d 6f 64 65 6c 73 2c 20 69 6e 74 72  | exity,.and.DeepSeek.models,.intr | 
| 8e7c0 |  6f 64 75 63 65 73 20 4c 4c 4d 20 74 6f 6f 6c 20    75 73 65 2f 66 75 6e 63 74 69 6f 6e 0a 63 61 6c  | oduces.LLM.tool.use/function.cal | 
| 8e7e0 |  6c 69 6e 67 2c 20 61 20 72 65 64 65 73 69 67 6e    20 6f 66 20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e  | ling,.a.redesign.of.~gptel-menu~ | 
| 8e800 |  2c 20 69 6e 63 6c 75 64 65 73 20 6e 65 77 20 63    75 73 74 6f 6d 69 7a 61 74 69 6f 6e 20 68 6f 6f  | ,.includes.new.customization.hoo | 
| 8e820 |  6b 73 2c 0a 64 72 79 2d 72 75 6e 20 6f 70 74 69    6f 6e 73 20 61 6e 64 20 72 65 66 69 6e 65 64 20  | ks,.dry-run.options.and.refined. | 
| 8e840 |  73 65 74 74 69 6e 67 73 2c 20 69 6d 70 72 6f 76    65 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 72 65  | settings,.improvements.to.the.re | 
| 8e860 |  77 72 69 74 65 0a 66 65 61 74 75 72 65 20 61 6e    64 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 4c 4c 4d  | write.feature.and.control.of.LLM | 
| 8e880 |  20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63 6f 6e    74 65 6e 74 2e 0a 0a 2a 2a 20 42 72 65 61 6b 69  | ."reasoning".content...**.Breaki | 
| 8e8a0 |  6e 67 20 63 68 61 6e 67 65 73 0a 0a 2d 20 7e 67    65 6d 69 6e 69 2d 70 72 6f 7e 20 68 61 73 20 62  | ng.changes..-.~gemini-pro~.has.b | 
| 8e8c0 |  65 65 6e 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d    20 74 68 65 20 6c 69 73 74 20 6f 66 20 47 65 6d  | een.removed.from.the.list.of.Gem | 
| 8e8e0 |  69 6e 69 20 6d 6f 64 65 6c 73 2c 20 61 73 0a 20    20 74 68 69 73 20 6d 6f 64 65 6c 20 69 73 20 6e  | ini.models,.as...this.model.is.n | 
| 8e900 |  6f 20 6c 6f 6e 67 65 72 20 73 75 70 70 6f 72 74    65 64 20 62 79 20 74 68 65 20 47 65 6d 69 6e 69  | o.longer.supported.by.the.Gemini | 
| 8e920 |  20 41 50 49 2e 0a 0a 2d 20 53 65 6e 64 69 6e 67    20 61 6e 20 61 63 74 69 76 65 20 72 65 67 69 6f  | .API...-.Sending.an.active.regio | 
| 8e940 |  6e 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 77 69    6c 6c 20 6e 6f 77 20 61 70 70 6c 79 20 4f 72 67  | n.in.Org.mode.will.now.apply.Org | 
| 8e960 |  0a 20 20 6d 6f 64 65 2d 73 70 65 63 69 66 69 63    20 72 75 6c 65 73 20 74 6f 20 74 68 65 20 74 65  | ...mode-specific.rules.to.the.te | 
| 8e980 |  78 74 2c 20 73 75 63 68 20 61 73 20 62 72 61 6e    63 68 69 6e 67 20 63 6f 6e 74 65 78 74 2e 0a 0a  | xt,.such.as.branching.context... | 
| 8e9a0 |  2d 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20    6f 62 73 6f 6c 65 74 65 20 76 61 72 69 61 62 6c  | -.The.following.obsolete.variabl | 
| 8e9c0 |  65 73 20 61 6e 64 20 66 75 6e 63 74 69 6f 6e 73    20 68 61 76 65 20 62 65 65 6e 20 72 65 6d 6f 76  | es.and.functions.have.been.remov | 
| 8e9e0 |  65 64 3a 0a 20 20 2d 20 7e 67 70 74 65 6c 2d 73    65 6e 64 2d 6d 65 6e 75 7e 3a 20 55 73 65 20 7e  | ed:...-.~gptel-send-menu~:.Use.~ | 
| 8ea00 |  67 70 74 65 6c 2d 6d 65 6e 75 7e 20 69 6e 73 74    65 61 64 2e 0a 20 20 2d 20 7e 67 70 74 65 6c 2d  | gptel-menu~.instead....-.~gptel- | 
| 8ea20 |  68 6f 73 74 7e 3a 20 55 73 65 20 7e 67 70 74 65    6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 7e 20 69  | host~:.Use.~gptel-make-openai~.i | 
| 8ea40 |  6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67 70 74    65 6c 2d 70 6c 61 79 62 61 63 6b 7e 3a 20 55 73  | nstead....-.~gptel-playback~:.Us | 
| 8ea60 |  65 20 7e 67 70 74 65 6c 2d 73 74 72 65 61 6d 7e    20 69 6e 73 74 65 61 64 2e 0a 20 20 2d 20 7e 67  | e.~gptel-stream~.instead....-.~g | 
| 8ea80 |  70 74 65 6c 2d 2d 64 65 62 75 67 7e 3a 20 55 73    65 20 7e 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76  | ptel--debug~:.Use.~gptel-log-lev | 
| 8eaa0 |  65 6c 7e 20 69 6e 73 74 65 61 64 2e 0a 0a 2a 2a    20 4e 65 77 20 6d 6f 64 65 6c 73 20 61 6e 64 20  | el~.instead...**.New.models.and. | 
| 8eac0 |  62 61 63 6b 65 6e 64 73 0a 0a 2d 20 41 64 64 20    73 75 70 70 6f 72 74 20 66 6f 72 20 73 65 76 65  | backends..-.Add.support.for.seve | 
| 8eae0 |  72 61 6c 20 6e 65 77 20 47 65 6d 69 6e 69 20 6d    6f 64 65 6c 73 20 69 6e 63 6c 75 64 69 6e 67 0a  | ral.new.Gemini.models.including. | 
| 8eb00 |  20 20 7e 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c    61 73 68 7e 2c 20 7e 67 65 6d 69 6e 69 2d 32 2e  | ..~gemini-2.0-flash~,.~gemini-2. | 
| 8eb20 |  30 2d 70 72 6f 2d 65 78 70 7e 20 61 6e 64 0a 20    20 7e 67 65 6d 69 6e 69 2d 32 2e 30 2d 66 6c 61  | 0-pro-exp~.and...~gemini-2.0-fla | 
| 8eb40 |  73 68 2d 74 68 69 6e 6b 69 6e 67 2d 65 78 70 7e    2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 73 2e 0a  | sh-thinking-exp~,.among.others.. | 
| 8eb60 |  0a 2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66    6f 72 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63  | .-.Add.support.for.the.Anthropic | 
| 8eb80 |  20 6d 6f 64 65 6c 20 7e 63 6c 61 75 64 65 2d 33    2d 37 2d 73 6f 6e 6e 65 74 2d 32 30 32 35 30 32  | .model.~claude-3-7-sonnet-202502 | 
| 8eba0 |  31 39 7e 2c 0a 20 20 69 6e 63 6c 75 64 69 6e 67    20 69 74 73 20 22 72 65 61 73 6f 6e 69 6e 67 22  | 19~,...including.its."reasoning" | 
| 8ebc0 |  20 6f 75 74 70 75 74 2e 0a 0a 2d 20 41 64 64 20    73 75 70 70 6f 72 74 20 66 6f 72 20 4f 70 65 6e  | .output...-.Add.support.for.Open | 
| 8ebe0 |  41 49 27 73 20 7e 6f 31 7e 2c 20 7e 6f 33 2d 6d    69 6e 69 7e 20 61 6e 64 20 7e 67 70 74 2d 34 2e  | AI's.~o1~,.~o3-mini~.and.~gpt-4. | 
| 8ec00 |  35 2d 70 72 65 76 69 65 77 7e 0a 20 20 6d 6f 64    65 6c 73 2e 0a 0a 2d 20 41 64 64 20 73 75 70 70  | 5-preview~...models...-.Add.supp | 
| 8ec20 |  6f 72 74 20 66 6f 72 20 50 65 72 70 6c 65 78 69    74 79 2e 20 20 57 68 69 6c 65 20 67 70 74 65 6c  | ort.for.Perplexity...While.gptel | 
| 8ec40 |  20 73 75 70 70 6f 72 74 65 64 20 50 65 72 70 6c    65 78 69 74 79 20 69 6e 0a 20 20 65 61 72 6c 69  | .supported.Perplexity.in...earli | 
| 8ec60 |  65 72 20 72 65 6c 65 61 73 65 73 20 62 79 20 72    65 75 73 69 6e 67 20 69 74 73 20 4f 70 65 6e 41  | er.releases.by.reusing.its.OpenA | 
| 8ec80 |  49 20 73 75 70 70 6f 72 74 2c 20 74 68 65 72 65    20 69 73 20 6e 6f 77 20 66 69 72 73 74 0a 20 20  | I.support,.there.is.now.first... | 
| 8eca0 |  63 6c 61 73 73 20 73 75 70 70 6f 72 74 20 66 6f    72 20 74 68 65 20 50 65 72 70 6c 65 78 69 74 79  | class.support.for.the.Perplexity | 
| 8ecc0 |  20 41 50 49 2c 20 69 6e 63 6c 75 64 69 6e 67 20    63 69 74 61 74 69 6f 6e 73 2e 0a 0a 2d 20 41 64  | .API,.including.citations...-.Ad | 
| 8ece0 |  64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 44 65    65 70 53 65 65 6b 2e 20 20 57 68 69 6c 65 20 67  | d.support.for.DeepSeek...While.g | 
| 8ed00 |  70 74 65 6c 20 73 75 70 70 6f 72 74 65 64 20 44    65 65 70 53 65 65 6b 20 69 6e 20 65 61 72 6c 69  | ptel.supported.DeepSeek.in.earli | 
| 8ed20 |  65 72 0a 20 20 72 65 6c 65 61 73 65 73 20 62 79    20 72 65 75 73 69 6e 67 20 69 74 73 20 4f 70 65  | er...releases.by.reusing.its.Ope | 
| 8ed40 |  6e 41 49 20 73 75 70 70 6f 72 74 2c 20 74 68 65    72 65 20 69 73 20 6e 6f 77 20 66 69 72 73 74 20  | nAI.support,.there.is.now.first. | 
| 8ed60 |  63 6c 61 73 73 0a 20 20 73 75 70 70 6f 72 74 20    66 6f 72 20 74 68 65 20 44 65 65 70 53 65 65 6b  | class...support.for.the.DeepSeek | 
| 8ed80 |  20 41 50 49 2c 20 69 6e 63 6c 75 64 69 6e 67 20    73 75 70 70 6f 72 74 20 66 6f 72 20 68 61 6e 64  | .API,.including.support.for.hand | 
| 8eda0 |  6c 69 6e 67 0a 20 20 22 72 65 61 73 6f 6e 69 6e    67 22 20 6f 75 74 70 75 74 2e 0a 0a 2a 2a 20 4e  | ling..."reasoning".output...**.N | 
| 8edc0 |  65 77 20 66 65 61 74 75 72 65 73 20 61 6e 64 20    55 49 20 63 68 61 6e 67 65 73 0a 0a 2d 20 7e 67  | ew.features.and.UI.changes..-.~g | 
| 8ede0 |  70 74 65 6c 2d 72 65 77 72 69 74 65 7e 20 6e 6f    77 20 73 75 70 70 6f 72 74 73 20 69 74 65 72 61  | ptel-rewrite~.now.supports.itera | 
| 8ee00 |  74 69 6e 67 20 6f 6e 20 72 65 73 70 6f 6e 73 65    73 2e 0a 0a 2d 20 67 70 74 65 6c 20 73 75 70 70  | ting.on.responses...-.gptel.supp | 
| 8ee20 |  6f 72 74 73 20 74 68 65 20 61 62 69 6c 69 74 79    20 74 6f 20 73 69 6d 75 6c 61 74 65 2f 64 72 79  | orts.the.ability.to.simulate/dry | 
| 8ee40 |  2d 72 75 6e 20 72 65 71 75 65 73 74 73 20 73 6f    20 79 6f 75 20 63 61 6e 0a 20 20 73 65 65 20 65  | -run.requests.so.you.can...see.e | 
| 8ee60 |  78 61 63 74 6c 79 20 77 68 61 74 20 77 69 6c 6c    20 62 65 20 73 65 6e 74 2e 20 20 54 68 69 73 20  | xactly.what.will.be.sent...This. | 
| 8ee80 |  70 61 79 6c 6f 61 64 20 70 72 65 76 69 65 77 20    63 61 6e 20 6e 6f 77 20 62 65 0a 20 20 65 64 69  | payload.preview.can.now.be...edi | 
| 8eea0 |  74 65 64 20 69 6e 20 70 6c 61 63 65 20 61 6e 64    20 74 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e  | ted.in.place.and.the.request.con | 
| 8eec0 |  74 69 6e 75 65 64 2e 0a 0a 2d 20 44 69 72 65 63    74 6f 72 69 65 73 20 63 61 6e 20 6e 6f 77 20 62  | tinued...-.Directories.can.now.b | 
| 8eee0 |  65 20 61 64 64 65 64 20 74 6f 20 67 70 74 65 6c    27 73 20 67 6c 6f 62 61 6c 20 63 6f 6e 74 65 78  | e.added.to.gptel's.global.contex | 
| 8ef00 |  74 2e 20 20 44 6f 69 6e 67 20 73 6f 0a 20 20 77    69 6c 6c 20 61 64 64 20 61 6c 6c 20 66 69 6c 65  | t...Doing.so...will.add.all.file | 
| 8ef20 |  73 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f    72 79 20 72 65 63 75 72 73 69 76 65 6c 79 2e 0a  | s.in.the.directory.recursively.. | 
| 8ef40 |  0a 2d 20 22 4f 6e 65 73 68 6f 74 22 20 73 65 74    74 69 6e 67 73 3a 20 77 68 65 6e 20 75 73 69 6e  | .-."Oneshot".settings:.when.usin | 
| 8ef60 |  67 20 67 70 74 65 6c 27 73 20 54 72 61 6e 73 69    65 6e 74 20 6d 65 6e 75 73 2c 20 72 65 71 75 65  | g.gptel's.Transient.menus,.reque | 
| 8ef80 |  73 74 0a 20 20 70 61 72 61 6d 65 74 65 72 73 2c    20 64 69 72 65 63 74 69 76 65 73 20 61 6e 64 20  | st...parameters,.directives.and. | 
| 8efa0 |  74 6f 6f 6c 73 20 63 61 6e 20 6e 6f 77 20 62 65    20 73 65 74 20 66 6f 72 20 74 68 65 20 6e 65 78  | tools.can.now.be.set.for.the.nex | 
| 8efc0 |  74 20 72 65 71 75 65 73 74 0a 20 20 6f 6e 6c 79    20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20  | t.request...only.in.addition.to. | 
| 8efe0 |  67 6c 6f 62 61 6c 6c 79 20 61 63 72 6f 73 73 20    74 68 65 20 45 6d 61 63 73 20 73 65 73 73 69 6f  | globally.across.the.Emacs.sessio | 
| 8f000 |  6e 20 61 6e 64 0a 20 20 62 75 66 66 65 72 2d 6c    6f 63 61 6c 6c 79 2e 20 20 54 68 69 73 20 69 73  | n.and...buffer-locally...This.is | 
| 8f020 |  20 75 73 65 66 75 6c 20 66 6f 72 20 6d 61 6b 69    6e 67 20 6f 6e 65 2d 6f 66 66 20 72 65 71 75 65  | .useful.for.making.one-off.reque | 
| 8f040 |  73 74 73 20 77 69 74 68 0a 20 20 64 69 66 66 65    72 65 6e 74 20 73 65 74 74 69 6e 67 73 2e 0a 0a  | sts.with...different.settings... | 
| 8f060 |  2d 20 7e 67 70 74 65 6c 2d 6d 6f 64 65 7e 20 63    61 6e 20 6e 6f 77 20 62 65 20 75 73 65 64 20 69  | -.~gptel-mode~.can.now.be.used.i | 
| 8f080 |  6e 20 61 6c 6c 20 6d 6f 64 65 73 20 64 65 72 69    76 65 64 20 66 72 6f 6d 20 7e 74 65 78 74 2d 6d  | n.all.modes.derived.from.~text-m | 
| 8f0a0 |  6f 64 65 7e 2e 0a 0a 2d 20 67 70 74 65 6c 20 6e    6f 77 20 74 72 69 65 73 20 74 6f 20 68 61 6e 64  | ode~...-.gptel.now.tries.to.hand | 
| 8f0c0 |  6c 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73    20 74 68 61 74 20 61 72 65 20 69 6e 20 6d 69 78  | le.LLM.responses.that.are.in.mix | 
| 8f0e0 |  65 64 0a 20 20 4f 72 67 2f 4d 61 72 6b 64 6f 77    6e 20 6d 61 72 6b 75 70 20 63 6f 72 72 65 63 74  | ed...Org/Markdown.markup.correct | 
| 8f100 |  6c 79 2e 0a 0a 2d 20 41 64 64 20 7e 67 70 74 65    6c 2d 6f 72 67 2d 63 6f 6e 76 65 72 74 2d 72 65  | ly...-.Add.~gptel-org-convert-re | 
| 8f120 |  73 70 6f 6e 73 65 7e 20 74 6f 20 74 6f 67 67 6c    65 20 74 68 65 20 61 75 74 6f 6d 61 74 69 63 20  | sponse~.to.toggle.the.automatic. | 
| 8f140 |  63 6f 6e 76 65 72 73 69 6f 6e 0a 20 20 6f 66 20    28 70 6f 73 73 69 62 6c 79 29 20 4d 61 72 6b 64  | conversion...of.(possibly).Markd | 
| 8f160 |  6f 77 6e 2d 66 6f 72 6d 61 74 74 65 64 20 4c 4c    4d 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 4f  | own-formatted.LLM.responses.to.O | 
| 8f180 |  72 67 20 6d 61 72 6b 75 70 20 77 68 65 72 65 0a    20 20 61 70 70 72 6f 70 72 69 61 74 65 2e 0a 0a  | rg.markup.where...appropriate... | 
| 8f1a0 |  2d 20 59 6f 75 20 63 61 6e 20 6e 6f 77 20 6c 6f    6f 6b 20 75 70 20 72 65 67 69 73 74 65 72 65 64  | -.You.can.now.look.up.registered | 
| 8f1c0 |  20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 73 20    75 73 69 6e 67 20 74 68 65 0a 20 20 7e 67 70 74  | .gptel.backends.using.the...~gpt | 
| 8f1e0 |  65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64 7e 20    66 75 6e 63 74 69 6f 6e 2e 20 20 54 68 69 73 20  | el-get-backend~.function...This. | 
| 8f200 |  69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 6d    61 6b 65 20 73 63 72 69 70 74 69 6e 67 0a 20 20  | is.intended.to.make.scripting... | 
| 8f220 |  61 6e 64 20 63 6f 6e 66 69 67 75 72 69 6e 67 20    67 70 74 65 6c 20 65 61 73 69 65 72 2e 20 20 7e  | and.configuring.gptel.easier...~ | 
| 8f240 |  67 70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e    64 7e 20 69 73 20 61 20 67 65 6e 65 72 61 6c 69  | gptel-get-backend~.is.a.generali | 
| 8f260 |  7a 65 64 0a 20 20 76 61 72 69 61 62 6c 65 20 73    6f 20 79 6f 75 20 63 61 6e 20 28 75 6e 29 73 65  | zed...variable.so.you.can.(un)se | 
| 8f280 |  74 20 62 61 63 6b 65 6e 64 73 20 77 69 74 68 20    7e 73 65 74 66 7e 2e 0a 0a 2d 20 54 6f 6f 6c 20  | t.backends.with.~setf~...-.Tool. | 
| 8f2a0 |  75 73 65 3a 20 67 70 74 65 6c 20 6e 6f 77 20 73    75 70 70 6f 72 74 73 20 4c 4c 4d 20 74 6f 6f 6c  | use:.gptel.now.supports.LLM.tool | 
| 8f2c0 |  20 75 73 65 2c 20 6f 72 20 66 75 6e 63 74 69 6f    6e 20 63 61 6c 6c 69 6e 67 2e 0a 20 20 45 73 73  | .use,.or.function.calling....Ess | 
| 8f2e0 |  65 6e 74 69 61 6c 6c 79 20 79 6f 75 20 63 61 6e    20 65 71 75 69 70 20 74 68 65 20 4c 4c 4d 20 77  | entially.you.can.equip.the.LLM.w | 
| 8f300 |  69 74 68 20 63 61 70 61 62 69 6c 69 74 69 65 73    20 28 73 75 63 68 20 61 73 0a 20 20 66 69 6c 65  | ith.capabilities.(such.as...file | 
| 8f320 |  73 79 73 74 65 6d 20 61 63 63 65 73 73 2c 20 77    65 62 20 73 65 61 72 63 68 2c 20 63 6f 6e 74 72  | system.access,.web.search,.contr | 
| 8f340 |  6f 6c 20 6f 66 20 45 6d 61 63 73 20 6f 72 20 69    6e 74 72 6f 73 70 65 63 74 69 6f 6e 20 6f 66 0a  | ol.of.Emacs.or.introspection.of. | 
| 8f360 |  20 20 45 6d 61 63 73 27 20 73 74 61 74 65 20 61    6e 64 20 6d 6f 72 65 29 20 74 68 61 74 20 69 74  | ..Emacs'.state.and.more).that.it | 
| 8f380 |  20 63 61 6e 20 75 73 65 20 74 6f 20 70 65 72 66    6f 72 6d 20 74 61 73 6b 73 20 66 6f 72 20 79 6f  | .can.use.to.perform.tasks.for.yo | 
| 8f3a0 |  75 2e 0a 20 20 67 70 74 65 6c 20 72 75 6e 73 20    74 68 65 73 65 20 74 6f 6f 6c 73 20 75 73 69 6e  | u....gptel.runs.these.tools.usin | 
| 8f3c0 |  67 20 61 72 67 75 6d 65 6e 74 20 76 61 6c 75 65    73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  | g.argument.values.provided.by.th | 
| 8f3e0 |  65 20 4c 4c 4d 73 2e 0a 20 20 54 68 69 73 20 72    65 71 75 69 72 65 73 20 73 70 65 63 69 66 79 69  | e.LLMs....This.requires.specifyi | 
| 8f400 |  6e 67 20 74 6f 6f 6c 73 2c 20 77 68 69 63 68 20    61 72 65 20 65 6c 69 73 70 20 66 75 6e 63 74 69  | ng.tools,.which.are.elisp.functi | 
| 8f420 |  6f 6e 73 20 77 69 74 68 20 70 6c 61 69 6e 0a 20    20 74 65 78 74 20 64 65 73 63 72 69 70 74 69 6f  | ons.with.plain...text.descriptio | 
| 8f440 |  6e 73 20 6f 66 20 74 68 65 69 72 20 61 72 67 75    6d 65 6e 74 73 20 61 6e 64 20 72 65 73 75 6c 74  | ns.of.their.arguments.and.result | 
| 8f460 |  73 2e 20 20 67 70 74 65 6c 20 64 6f 65 73 20 6e    6f 74 0a 20 20 69 6e 63 6c 75 64 65 20 61 6e 79  | s...gptel.does.not...include.any | 
| 8f480 |  20 74 6f 6f 6c 73 20 6f 75 74 20 6f 66 20 74 68    65 20 62 6f 78 20 79 65 74 2e 0a 0a 2d 20 59 6f  | .tools.out.of.the.box.yet...-.Yo | 
| 8f4a0 |  75 20 63 61 6e 20 6c 6f 6f 6b 20 75 70 20 72 65    67 69 73 74 65 72 65 64 20 67 70 74 65 6c 20 74  | u.can.look.up.registered.gptel.t | 
| 8f4c0 |  6f 6f 6c 73 20 75 73 69 6e 67 20 74 68 65 20 7e    67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c 7e 0a  | ools.using.the.~gptel-get-tool~. | 
| 8f4e0 |  20 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68 69    73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f  | ..function...This.is.intended.to | 
| 8f500 |  20 6d 61 6b 65 20 73 63 72 69 70 74 69 6e 67 20    61 6e 64 20 63 6f 6e 66 69 67 75 72 69 6e 67 20  | .make.scripting.and.configuring. | 
| 8f520 |  67 70 74 65 6c 0a 20 20 65 61 73 69 65 72 2e 20    20 7e 67 70 74 65 6c 2d 67 65 74 2d 74 6f 6f 6c  | gptel...easier...~gptel-get-tool | 
| 8f540 |  7e 20 69 73 20 61 20 67 65 6e 65 72 61 6c 69 7a    65 64 20 76 61 72 69 61 62 6c 65 20 73 6f 20 79  | ~.is.a.generalized.variable.so.y | 
| 8f560 |  6f 75 20 63 61 6e 0a 20 20 28 75 6e 29 73 65 74    20 74 6f 6f 6c 73 20 77 69 74 68 20 7e 73 65 74  | ou.can...(un)set.tools.with.~set | 
| 8f580 |  66 7e 2e 0a 0a 2d 20 4e 65 77 20 68 6f 6f 6b 73    20 66 6f 72 20 63 75 73 74 6f 6d 69 7a 61 74 69  | f~...-.New.hooks.for.customizati | 
| 8f5a0 |  6f 6e 3a 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70    72 6f 6d 70 74 2d 66 69 6c 74 65 72 2d 68 6f 6f  | on:...+.~gptel-prompt-filter-hoo | 
| 8f5c0 |  6b 7e 20 72 75 6e 73 20 69 6e 20 61 20 74 65 6d    70 6f 72 61 72 79 20 62 75 66 66 65 72 20 63 6f  | k~.runs.in.a.temporary.buffer.co | 
| 8f5e0 |  6e 74 61 69 6e 69 6e 67 0a 20 20 20 20 74 68 65    20 74 65 78 74 20 74 6f 20 62 65 20 73 65 6e 74  | ntaining.....the.text.to.be.sent | 
| 8f600 |  2c 20 62 65 66 6f 72 65 20 74 68 65 20 66 75 6c    6c 20 71 75 65 72 79 20 69 73 20 63 72 65 61 74  | ,.before.the.full.query.is.creat | 
| 8f620 |  65 64 2e 20 20 49 74 20 63 61 6e 20 62 65 0a 20    20 20 20 75 73 65 64 20 66 6f 72 20 61 72 62 69  | ed...It.can.be.....used.for.arbi | 
| 8f640 |  74 72 61 72 79 20 74 65 78 74 20 74 72 61 6e 73    66 6f 72 6d 61 74 69 6f 6e 73 20 74 6f 20 74 68  | trary.text.transformations.to.th | 
| 8f660 |  65 20 73 6f 75 72 63 65 20 74 65 78 74 2e 0a 20    20 2b 20 7e 67 70 74 65 6c 2d 70 6f 73 74 2d 72  | e.source.text....+.~gptel-post-r | 
| 8f680 |  65 71 75 65 73 74 2d 68 6f 6f 6b 7e 20 72 75 6e    73 20 61 66 74 65 72 20 74 68 65 20 72 65 71 75  | equest-hook~.runs.after.the.requ | 
| 8f6a0 |  65 73 74 20 69 73 20 73 65 6e 74 2c 20 61 6e 64    0a 20 20 20 20 28 70 6f 73 73 69 62 6c 79 29 20  | est.is.sent,.and.....(possibly). | 
| 8f6c0 |  62 65 66 6f 72 65 20 61 6e 79 20 72 65 73 70 6f    6e 73 65 20 69 73 20 72 65 63 65 69 76 65 64 2e  | before.any.response.is.received. | 
| 8f6e0 |  20 20 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64    65 64 20 66 6f 72 0a 20 20 20 20 70 72 65 70 61  | ..This.is.intended.for.....prepa | 
| 8f700 |  72 61 74 6f 72 79 2f 72 65 73 65 74 20 63 6f 64    65 2e 0a 20 20 2b 20 7e 67 70 74 65 6c 2d 70 6f  | ratory/reset.code....+.~gptel-po | 
| 8f720 |  73 74 2d 72 65 77 72 69 74 65 2d 68 6f 6f 6b 7e    20 72 75 6e 73 20 61 66 74 65 72 20 61 20 7e 67  | st-rewrite-hook~.runs.after.a.~g | 
| 8f740 |  70 74 65 6c 2d 72 65 77 72 69 74 65 7e 20 72 65    71 75 65 73 74 20 69 73 0a 20 20 20 20 73 75 63  | ptel-rewrite~.request.is.....suc | 
| 8f760 |  63 65 73 73 66 75 6c 6c 79 20 61 6e 64 20 66 75    6c 6c 79 20 72 65 63 65 69 76 65 64 2e 0a 0a 2d  | cessfully.and.fully.received...- | 
| 8f780 |  20 7e 67 70 74 65 6c 2d 6d 65 6e 75 7e 20 68 61    73 20 62 65 65 6e 20 72 65 64 65 73 69 67 6e 65  | .~gptel-menu~.has.been.redesigne | 
| 8f7a0 |  64 2e 20 20 49 74 20 6e 6f 77 20 73 68 6f 77 73    20 61 20 76 65 72 62 6f 73 65 0a 20 20 64 65 73  | d...It.now.shows.a.verbose...des | 
| 8f7c0 |  63 72 69 70 74 69 6f 6e 20 6f 66 20 77 68 61 74    20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 61 6e  | cription.of.what.will.be.sent.an | 
| 8f7e0 |  64 20 77 68 65 72 65 20 74 68 65 20 6f 75 74 70    75 74 20 77 69 6c 6c 20 67 6f 2e 20 20 54 68 69  | d.where.the.output.will.go...Thi | 
| 8f800 |  73 0a 20 20 69 73 20 69 6e 74 65 6e 64 65 64 20    74 6f 20 70 72 6f 76 69 64 65 20 63 6c 61 72 69  | s...is.intended.to.provide.clari | 
| 8f820 |  74 79 20 6f 6e 20 67 70 74 65 6c 27 73 20 64 65    66 61 75 6c 74 20 70 72 6f 6d 70 74 69 6e 67 0a  | ty.on.gptel's.default.prompting. | 
| 8f840 |  20 20 62 65 68 61 76 69 6f 72 2c 20 61 73 20 77    65 6c 6c 20 61 73 20 74 68 65 20 65 66 66 65 63  | ..behavior,.as.well.as.the.effec | 
| 8f860 |  74 20 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73    20 70 72 6f 6d 70 74 2f 72 65 73 70 6f 6e 73 65  | t.of.the.various.prompt/response | 
| 8f880 |  0a 20 20 72 65 64 69 72 65 63 74 69 6f 6e 20 69    74 20 70 72 6f 76 69 64 65 73 2e 20 20 49 6e 63  | ...redirection.it.provides...Inc | 
| 8f8a0 |  6f 6d 70 61 74 69 62 6c 65 20 63 6f 6d 62 69 6e    61 74 69 6f 6e 73 20 6f 66 20 6f 70 74 69 6f 6e  | ompatible.combinations.of.option | 
| 8f8c0 |  73 20 61 72 65 0a 20 20 6e 6f 77 20 64 69 73 61    6c 6c 6f 77 65 64 2e 0a 0a 2d 20 54 68 65 20 73  | s.are...now.disallowed...-.The.s | 
| 8f8e0 |  70 61 63 69 6e 67 20 62 65 74 77 65 65 6e 20 74    68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 70 72  | pacing.between.the.end.of.the.pr | 
| 8f900 |  6f 6d 70 74 20 61 6e 64 20 74 68 65 20 62 65 67    69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 0a 20 20  | ompt.and.the.beginning.of.the... | 
| 8f920 |  72 65 73 70 6f 6e 73 65 20 69 6e 20 62 75 66 66    65 72 73 20 69 73 20 6e 6f 77 20 63 75 73 74 6f  | response.in.buffers.is.now.custo | 
| 8f940 |  6d 69 7a 61 62 6c 65 20 76 69 61 0a 20 20 7e 67    70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 73 65  | mizable.via...~gptel-response-se | 
| 8f960 |  70 61 72 61 74 6f 72 7e 2c 20 61 6e 64 20 63 61    6e 20 62 65 20 61 6e 79 20 73 74 72 69 6e 67 2e  | parator~,.and.can.be.any.string. | 
| 8f980 |  0a 0a 2d 20 7e 67 70 74 65 6c 2d 63 6f 6e 74 65    78 74 2d 72 65 6d 6f 76 65 2d 61 6c 6c 7e 20 69  | ..-.~gptel-context-remove-all~.i | 
| 8f9a0 |  73 20 6e 6f 77 20 61 6e 20 69 6e 74 65 72 61 63    74 69 76 65 20 63 6f 6d 6d 61 6e 64 2e 0a 0a 2d  | s.now.an.interactive.command...- | 
| 8f9c0 |  20 67 70 74 65 6c 20 6e 6f 77 20 68 61 6e 64 6c    65 73 20 22 72 65 61 73 6f 6e 69 6e 67 22 20 63  | .gptel.now.handles."reasoning".c | 
| 8f9e0 |  6f 6e 74 65 6e 74 20 70 72 6f 64 75 63 65 64 20    62 79 20 4c 4c 4d 73 2e 20 20 53 6f 6d 65 20 4c  | ontent.produced.by.LLMs...Some.L | 
| 8fa00 |  4c 4d 73 0a 20 20 69 6e 63 6c 75 64 65 20 69 6e    20 74 68 65 69 72 20 72 65 73 70 6f 6e 73 65 20  | LMs...include.in.their.response. | 
| 8fa20 |  61 20 22 74 68 69 6e 6b 69 6e 67 22 20 6f 72 20    22 72 65 61 73 6f 6e 69 6e 67 22 20 73 65 63 74  | a."thinking".or."reasoning".sect | 
| 8fa40 |  69 6f 6e 2e 20 20 54 68 69 73 0a 20 20 74 65 78    74 20 69 6d 70 72 6f 76 65 73 20 74 68 65 20 71  | ion...This...text.improves.the.q | 
| 8fa60 |  75 61 6c 69 74 79 20 6f 66 20 74 68 65 20 4c 4c    4d e2 80 99 73 20 66 69 6e 61 6c 20 6f 75 74 70  | uality.of.the.LLM...s.final.outp | 
| 8fa80 |  75 74 2c 20 62 75 74 20 6d 61 79 20 6e 6f 74 20    62 65 0a 20 20 69 6e 74 65 72 65 73 74 69 6e 67  | ut,.but.may.not.be...interesting | 
| 8faa0 |  20 74 6f 20 79 6f 75 20 62 79 20 69 74 73 65 6c    66 2e 20 20 54 68 65 20 6e 65 77 20 75 73 65 72  | .to.you.by.itself...The.new.user | 
| 8fac0 |  20 6f 70 74 69 6f 6e 0a 20 20 7e 67 70 74 65 6c    2d 69 6e 63 6c 75 64 65 2d 72 65 61 73 6f 6e 69  | .option...~gptel-include-reasoni | 
| 8fae0 |  6e 67 7e 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65    74 68 65 72 20 61 6e 64 20 68 6f 77 20 67 70 74  | ng~.controls.whether.and.how.gpt | 
| 8fb00 |  65 6c 20 64 69 73 70 6c 61 79 73 0a 20 20 74 68    69 73 20 63 6f 6e 74 65 6e 74 2e 0a 0a 2d 20 28  | el.displays...this.content...-.( | 
| 8fb20 |  41 6e 74 68 72 6f 70 69 63 20 41 50 49 20 6f 6e    6c 79 29 20 53 6f 6d 65 20 4c 4c 4d 20 62 61 63  | Anthropic.API.only).Some.LLM.bac | 
| 8fb40 |  6b 65 6e 64 73 20 63 61 6e 20 63 61 63 68 65 20    63 6f 6e 74 65 6e 74 20 73 65 6e 74 20 74 6f 20  | kends.can.cache.content.sent.to. | 
| 8fb60 |  69 74 0a 20 20 62 79 20 67 70 74 65 6c 2c 20 73    6f 20 74 68 61 74 20 6f 6e 6c 79 20 74 68 65 20  | it...by.gptel,.so.that.only.the. | 
| 8fb80 |  6e 65 77 6c 79 20 69 6e 63 6c 75 64 65 64 20 70    61 72 74 20 6f 66 20 74 68 65 20 74 65 78 74 20  | newly.included.part.of.the.text. | 
| 8fba0 |  6e 65 65 64 73 20 74 6f 0a 20 20 62 65 20 70 72    6f 63 65 73 73 65 64 20 6f 6e 20 73 75 62 73 65  | needs.to...be.processed.on.subse | 
| 8fbc0 |  71 75 65 6e 74 20 63 6f 6e 76 65 72 73 61 74 69    6f 6e 20 74 75 72 6e 73 2e 20 20 54 68 69 73 20  | quent.conversation.turns...This. | 
| 8fbe0 |  72 65 73 75 6c 74 73 20 69 6e 0a 20 20 66 61 73    74 65 72 20 61 6e 64 20 73 69 67 6e 69 66 69 63  | results.in...faster.and.signific | 
| 8fc00 |  61 6e 74 6c 79 20 63 68 65 61 70 65 72 20 70 72    6f 63 65 73 73 69 6e 67 2e 20 54 68 65 20 6e 65  | antly.cheaper.processing..The.ne | 
| 8fc20 |  77 20 75 73 65 72 20 6f 70 74 69 6f 6e 0a 20 20    7e 67 70 74 65 6c 2d 63 61 63 68 65 7e 20 63 61  | w.user.option...~gptel-cache~.ca | 
| 8fc40 |  6e 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65    63 69 66 79 20 63 61 63 68 69 6e 67 20 70 72 65  | n.be.used.to.specify.caching.pre | 
| 8fc60 |  66 65 72 65 6e 63 65 73 20 66 6f 72 0a 20 20 70    72 6f 6d 70 74 73 2c 20 74 68 65 20 73 79 73 74  | ferences.for...prompts,.the.syst | 
| 8fc80 |  65 6d 20 6d 65 73 73 61 67 65 20 61 6e 64 2f 6f    72 20 74 6f 6f 6c 20 64 65 66 69 6e 69 74 69 6f  | em.message.and/or.tool.definitio | 
| 8fca0 |  6e 73 2e 20 20 54 68 69 73 20 69 73 0a 20 20 73    75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 62 79  | ns...This.is...supported.only.by | 
| 8fcc0 |  20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 20 41    50 49 20 72 69 67 68 74 20 6e 6f 77 2e 0a 0a 2d  | .the.Anthropic.API.right.now...- | 
| 8fce0 |  20 28 4f 72 67 20 6d 6f 64 65 29 20 4f 72 67 20    70 72 6f 70 65 72 74 79 20 64 72 61 77 65 72 73  | .(Org.mode).Org.property.drawers | 
| 8fd00 |  20 61 72 65 20 6e 6f 77 20 73 74 72 69 70 70 65    64 20 66 72 6f 6d 20 74 68 65 20 70 72 6f 6d 70  | .are.now.stripped.from.the.promp | 
| 8fd20 |  74 0a 20 20 74 65 78 74 20 62 65 66 6f 72 65 20    73 65 6e 64 69 6e 67 20 71 75 65 72 69 65 73 2e  | t...text.before.sending.queries. | 
| 8fd40 |  20 20 59 6f 75 20 63 61 6e 20 63 6f 6e 74 72 6f    6c 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20  | ..You.can.control.this.behavior. | 
| 8fd60 |  6f 72 0a 20 20 73 70 65 63 69 66 79 20 61 64 64    69 74 69 6f 6e 61 6c 20 4f 72 67 20 65 6c 65 6d  | or...specify.additional.Org.elem | 
| 8fd80 |  65 6e 74 73 20 74 6f 20 69 67 6e 6f 72 65 20 76    69 61 0a 20 20 7e 67 70 74 65 6c 2d 6f 72 67 2d  | ents.to.ignore.via...~gptel-org- | 
| 8fda0 |  69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 7e    2e 20 20 28 46 6f 72 20 6d 6f 72 65 20 63 6f 6d  | ignore-elements~...(For.more.com | 
| 8fdc0 |  70 6c 65 78 20 70 72 65 2d 70 72 6f 63 65 73 73    69 6e 67 20 79 6f 75 0a 20 20 63 61 6e 20 75 73  | plex.pre-processing.you...can.us | 
| 8fde0 |  65 20 7e 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d    66 69 6c 74 65 72 2d 68 6f 6f 6b 7e 2e 29 0a 0a  | e.~gptel-prompt-filter-hook~.).. | 
| 8fe00 |  2a 2a 20 4e 6f 74 61 62 6c 65 20 42 75 67 20 66    69 78 65 73 0a 0a 2d 20 46 69 78 20 72 65 73 70  | **.Notable.Bug.fixes..-.Fix.resp | 
| 8fe20 |  6f 6e 73 65 20 6d 69 78 2d 75 70 20 77 68 65 6e    20 72 75 6e 6e 69 6e 67 20 63 6f 6e 63 75 72 72  | onse.mix-up.when.running.concurr | 
| 8fe40 |  65 6e 74 20 72 65 71 75 65 73 74 73 20 69 6e 20    4f 72 67 20 6d 6f 64 65 0a 20 20 62 75 66 66 65  | ent.requests.in.Org.mode...buffe | 
| 8fe60 |  72 73 2e 0a 2d 20 67 70 74 65 6c 20 6e 6f 77 20    77 6f 72 6b 73 20 61 72 6f 75 6e 64 20 61 6e 20  | rs..-.gptel.now.works.around.an. | 
| 8fe80 |  4f 72 67 20 66 6f 6e 74 69 66 69 63 61 74 69 6f    6e 20 62 75 67 20 77 68 65 72 65 20 73 74 72 65  | Org.fontification.bug.where.stre | 
| 8fea0 |  61 6d 69 6e 67 0a 20 20 72 65 73 70 6f 6e 73 65    73 20 69 6e 20 4f 72 67 20 6d 6f 64 65 20 62 75  | aming...responses.in.Org.mode.bu | 
| 8fec0 |  66 66 65 72 73 20 73 6f 6d 65 74 69 6d 65 73 20    63 61 75 73 65 64 20 73 6f 75 72 63 65 20 63 6f  | ffers.sometimes.caused.source.co | 
| 8fee0 |  64 65 20 62 6c 6f 63 6b 73 20 74 6f 0a 20 20 72    65 6d 61 69 6e 20 75 6e 66 6f 6e 74 69 66 69 65  | de.blocks.to...remain.unfontifie | 
| 8ff00 |  64 2e 0a 0a 2a 20 30 2e 39 2e 37 20 32 30 32 34    2d 31 32 2d 30 34 0a 0a 56 65 72 73 69 6f 6e 20  | d...*.0.9.7.2024-12-04..Version. | 
| 8ff20 |  30 2e 39 2e 37 20 61 64 64 73 20 64 79 6e 61 6d    69 63 20 64 69 72 65 63 74 69 76 65 73 2c 20 61  | 0.9.7.adds.dynamic.directives,.a | 
| 8ff40 |  20 62 65 74 74 65 72 20 72 65 77 72 69 74 65 20    69 6e 74 65 72 66 61 63 65 2c 0a 73 74 72 65 61  | .better.rewrite.interface,.strea | 
| 8ff60 |  6d 69 6e 67 20 73 75 70 70 6f 72 74 20 74 6f 20    74 68 65 20 67 70 74 65 6c 20 72 65 71 75 65 73  | ming.support.to.the.gptel.reques | 
| 8ff80 |  74 20 41 50 49 2c 20 61 6e 64 20 6d 6f 72 65 20    66 6c 65 78 69 62 6c 65 0a 6d 6f 64 65 6c 2f 62  | t.API,.and.more.flexible.model/b | 
| 8ffa0 |  61 63 6b 65 6e 64 20 63 6f 6e 66 69 67 75 72 61    74 69 6f 6e 2e 0a 0a 2a 2a 20 42 72 65 61 6b 69  | ackend.configuration...**.Breaki | 
| 8ffc0 |  6e 67 20 63 68 61 6e 67 65 73 0a 7e 67 70 74 65    6c 2d 72 65 77 72 69 74 65 2d 6d 65 6e 75 7e 20  | ng.changes.~gptel-rewrite-menu~. | 
| 8ffe0 |  68 61 73 20 62 65 65 6e 20 6f 62 73 6f 6c 65 74    65 64 2e 20 20 55 73 65 20 7e 67 70 74 65 6c 2d  | has.been.obsoleted...Use.~gptel- | 
| 90000 |  72 65 77 72 69 74 65 7e 20 69 6e 73 74 65 61 64    2e 0a 0a 2a 2a 20 42 61 63 6b 65 6e 64 73 0a 2d  | rewrite~.instead...**.Backends.- | 
| 90020 |  20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f 72    20 4f 70 65 6e 41 49 27 73 20 7e 6f 31 2d 70 72  | .Add.support.for.OpenAI's.~o1-pr | 
| 90040 |  65 76 69 65 77 7e 20 61 6e 64 20 7e 6f 31 2d 6d    69 6e 69 7e 2e 0a 0a 2d 20 41 64 64 20 73 75 70  | eview~.and.~o1-mini~...-.Add.sup | 
| 90060 |  70 6f 72 74 20 66 6f 72 20 41 6e 74 68 72 6f 70    69 63 27 73 20 43 6c 61 75 64 65 20 33 2e 35 20  | port.for.Anthropic's.Claude.3.5. | 
| 90080 |  48 61 69 6b 75 2e 0a 0a 2d 20 41 64 64 20 73 75    70 70 6f 72 74 20 66 6f 72 20 78 41 49 2e 0a 0a  | Haiku...-.Add.support.for.xAI... | 
| 900a0 |  2d 20 41 64 64 20 73 75 70 70 6f 72 74 20 66 6f    72 20 4e 6f 76 69 74 61 20 41 49 2e 0a 0a 2a 2a  | -.Add.support.for.Novita.AI...** | 
| 900c0 |  20 4e 65 77 20 66 65 61 74 75 72 65 73 20 61 6e    64 20 55 49 20 63 68 61 6e 67 65 73 0a 0a 2d 20  | .New.features.and.UI.changes..-. | 
| 900e0 |  67 70 74 65 6c 27 73 20 64 69 72 65 63 74 69 76    65 73 20 28 73 65 65 20 7e 67 70 74 65 6c 2d 64  | gptel's.directives.(see.~gptel-d | 
| 90100 |  69 72 65 63 74 69 76 65 73 7e 29 20 63 61 6e 20    6e 6f 77 20 62 65 20 64 79 6e 61 6d 69 63 2c 20  | irectives~).can.now.be.dynamic,. | 
| 90120 |  61 6e 64 0a 20 20 69 6e 63 6c 75 64 65 20 6d 6f    72 65 20 74 68 61 6e 20 74 68 65 20 73 79 73 74  | and...include.more.than.the.syst | 
| 90140 |  65 6d 20 6d 65 73 73 61 67 65 2e 20 20 59 6f 75    20 63 61 6e 20 22 70 72 65 2d 66 69 6c 6c 22 20  | em.message...You.can."pre-fill". | 
| 90160 |  61 0a 20 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e    20 77 69 74 68 20 63 61 6e 6e 65 64 20 75 73 65  | a...conversation.with.canned.use | 
| 90180 |  72 2f 4c 4c 4d 20 6d 65 73 73 61 67 65 73 2e 20    20 44 69 72 65 63 74 69 76 65 73 20 63 61 6e 20  | r/LLM.messages...Directives.can. | 
| 901a0 |  6e 6f 77 20 62 65 0a 20 20 66 75 6e 63 74 69 6f    6e 73 20 74 68 61 74 20 64 79 6e 61 6d 69 63 61  | now.be...functions.that.dynamica | 
| 901c0 |  6c 6c 79 20 67 65 6e 65 72 61 74 65 20 74 68 65    20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20  | lly.generate.the.system.message. | 
| 901e0 |  61 6e 64 0a 20 20 63 6f 6e 76 65 72 73 61 74 69    6f 6e 20 68 69 73 74 6f 72 79 20 62 61 73 65 64  | and...conversation.history.based | 
| 90200 |  20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20    63 6f 6e 74 65 78 74 2e 20 20 54 68 69 73 20 70  | .on.the.current.context...This.p | 
| 90220 |  61 76 65 73 20 74 68 65 0a 20 20 77 61 79 20 66    6f 72 20 66 75 6c 6c 79 20 66 6c 65 78 69 62 6c  | aves.the...way.for.fully.flexibl | 
| 90240 |  65 20 74 61 73 6b 2d 73 70 65 63 69 66 69 63 20    74 65 6d 70 6c 61 74 65 73 2c 20 77 68 69 63 68  | e.task-specific.templates,.which | 
| 90260 |  20 74 68 65 20 55 49 20 64 6f 65 73 0a 20 20 6e    6f 74 20 79 65 74 20 73 75 70 70 6f 72 74 20 69  | .the.UI.does...not.yet.support.i | 
| 90280 |  6e 20 66 75 6c 6c 2e 0a 0a 2d 20 67 70 74 65 6c    27 73 20 72 65 77 72 69 74 65 20 69 6e 74 65 72  | n.full...-.gptel's.rewrite.inter | 
| 902a0 |  66 61 63 65 20 68 61 73 20 62 65 65 6e 20 72 65    77 6f 72 6b 65 64 2e 20 20 49 66 20 75 73 69 6e  | face.has.been.reworked...If.usin | 
| 902c0 |  67 20 61 20 73 74 72 65 61 6d 69 6e 67 0a 20 20    65 6e 64 70 6f 69 6e 74 2c 20 74 68 65 20 72 65  | g.a.streaming...endpoint,.the.re | 
| 902e0 |  77 72 69 74 74 65 6e 20 74 65 78 74 20 69 73 20    73 74 72 65 61 6d 65 64 20 69 6e 20 61 73 20 61  | written.text.is.streamed.in.as.a | 
| 90300 |  20 70 72 65 76 69 65 77 20 70 6c 61 63 65 64 20    6f 76 65 72 0a 20 20 74 68 65 20 6f 72 69 67 69  | .preview.placed.over...the.origi | 
| 90320 |  6e 61 6c 2e 20 20 49 6e 20 61 6c 6c 20 63 61 73    65 73 2c 20 63 6c 69 63 6b 69 6e 67 20 6f 6e 20  | nal...In.all.cases,.clicking.on. | 
| 90340 |  74 68 65 20 70 72 65 76 69 65 77 20 62 72 69 6e    67 73 20 75 70 20 61 0a 20 20 64 69 73 70 61 74  | the.preview.brings.up.a...dispat | 
| 90360 |  63 68 20 79 6f 75 20 63 61 6e 20 75 73 65 20 74    6f 20 65 61 73 69 6c 79 20 64 69 66 66 2c 20 65  | ch.you.can.use.to.easily.diff,.e | 
| 90380 |  64 69 66 66 2c 20 6d 65 72 67 65 2c 20 61 63 63    65 70 74 20 6f 72 20 72 65 6a 65 63 74 0a 20 20  | diff,.merge,.accept.or.reject... | 
| 903a0 |  74 68 65 20 63 68 61 6e 67 65 73 20 28 34 61 65    39 63 31 62 32 29 2c 20 61 6e 64 20 79 6f 75 20  | the.changes.(4ae9c1b2),.and.you. | 
| 903c0 |  63 61 6e 20 63 6f 6e 66 69 67 75 72 65 20 67 70    74 65 6c 20 74 6f 20 72 75 6e 20 6f 6e 65 20 6f  | can.configure.gptel.to.run.one.o | 
| 903e0 |  66 0a 20 20 74 68 65 73 65 20 61 63 74 69 6f 6e    73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  | f...these.actions.automatically. | 
| 90400 |  20 20 53 65 65 20 74 68 65 20 52 45 41 44 4d 45    20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 0a 0a  | ..See.the.README.for.examples... | 
| 90420 |  2d 20 7e 67 70 74 65 6c 2d 61 62 6f 72 74 7e 2c    20 75 73 65 64 20 74 6f 20 63 61 6e 63 65 6c 20  | -.~gptel-abort~,.used.to.cancel. | 
| 90440 |  72 65 71 75 65 73 74 73 20 69 6e 20 70 72 6f 67    72 65 73 73 2c 20 6e 6f 77 20 77 6f 72 6b 73 20  | requests.in.progress,.now.works. | 
| 90460 |  61 63 72 6f 73 73 0a 20 20 74 68 65 20 62 6f 61    72 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20 77 68  | across...the.board,.including.wh | 
| 90480 |  65 6e 20 6e 6f 74 20 75 73 69 6e 67 20 43 75 72    6c 20 6f 72 20 77 69 74 68 20 7e 67 70 74 65 6c  | en.not.using.Curl.or.with.~gptel | 
| 904a0 |  2d 72 65 77 72 69 74 65 7e 2e 0a 0a 2d 20 54 68    65 20 7e 67 70 74 65 6c 2d 72 65 71 75 65 73 74  | -rewrite~...-.The.~gptel-request | 
| 904c0 |  7e 20 41 50 49 20 6e 6f 77 20 65 78 70 6c 69 63    69 74 6c 79 20 73 75 70 70 6f 72 74 73 20 73 74  | ~.API.now.explicitly.supports.st | 
| 904e0 |  72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65    73 0a 20 20 2c 20 6d 61 6b 69 6e 67 20 69 74 20  | reaming.responses...,.making.it. | 
| 90500 |  65 61 73 79 20 74 6f 20 77 72 69 74 65 20 79 6f    75 72 20 6f 77 6e 20 68 65 6c 70 65 72 73 20 6f  | easy.to.write.your.own.helpers.o | 
| 90520 |  72 20 66 65 61 74 75 72 65 73 20 77 69 74 68 0a    20 20 73 74 72 65 61 6d 69 6e 67 20 73 75 70 70  | r.features.with...streaming.supp | 
| 90540 |  6f 72 74 2e 20 20 54 68 65 20 41 50 49 20 61 6c    73 6f 20 73 75 70 70 6f 72 74 73 20 7e 67 70 74  | ort...The.API.also.supports.~gpt | 
| 90560 |  65 6c 2d 61 62 6f 72 74 7e 20 74 6f 20 73 74 6f    70 20 61 6e 64 0a 20 20 63 6c 65 61 6e 20 75 70  | el-abort~.to.stop.and...clean.up | 
| 90580 |  20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 2d 20 59    6f 75 20 63 61 6e 20 6e 6f 77 20 75 6e 73 65 74  | .responses...-.You.can.now.unset | 
| 905a0 |  20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73    61 67 65 20 2d 2d 20 64 69 66 66 65 72 65 6e 74  | .the.system.message.--.different | 
| 905c0 |  20 66 72 6f 6d 20 73 65 74 74 69 6e 67 20 69 74    20 74 6f 0a 20 20 61 6e 20 65 6d 70 74 79 20 73  | .from.setting.it.to...an.empty.s | 
| 905e0 |  74 72 69 6e 67 2e 20 20 67 70 74 65 6c 20 77 69    6c 6c 20 61 6c 73 6f 20 61 75 74 6f 6d 61 74 69  | tring...gptel.will.also.automati | 
| 90600 |  63 61 6c 6c 79 20 64 69 73 61 62 6c 65 20 74 68    65 20 73 79 73 74 65 6d 0a 20 20 6d 65 73 73 61  | cally.disable.the.system...messa | 
| 90620 |  67 65 20 77 68 65 6e 20 75 73 69 6e 67 20 6d 6f    64 65 6c 73 20 74 68 61 74 20 64 6f 6e 27 74 20  | ge.when.using.models.that.don't. | 
| 90640 |  73 75 70 70 6f 72 74 20 69 74 2e 0a 0a 2d 20 53    75 70 70 6f 72 74 20 66 6f 72 20 69 6e 63 6c 75  | support.it...-.Support.for.inclu | 
| 90660 |  64 69 6e 67 20 50 44 46 73 20 77 69 74 68 20 72    65 71 75 65 73 74 73 20 74 6f 20 41 6e 74 68 72  | ding.PDFs.with.requests.to.Anthr | 
| 90680 |  6f 70 69 63 20 6d 6f 64 65 6c 73 20 68 61 73 0a    20 20 62 65 65 6e 20 61 64 64 65 64 2e 20 20 28  | opic.models.has...been.added...( | 
| 906a0 |  54 68 65 73 65 20 71 75 65 72 69 65 73 20 61 72    65 20 63 61 63 68 65 64 2c 20 73 6f 20 79 6f 75  | These.queries.are.cached,.so.you | 
| 906c0 |  20 70 61 79 20 6f 6e 6c 79 20 31 30 25 20 6f 66    20 74 68 65 0a 20 20 74 6f 6b 65 6e 20 63 6f 73  | .pay.only.10%.of.the...token.cos | 
| 906e0 |  74 20 6f 66 20 74 68 65 20 50 44 46 20 69 6e 20    66 6f 6c 6c 6f 77 2d 75 70 20 71 75 65 72 69 65  | t.of.the.PDF.in.follow-up.querie | 
| 90700 |  73 2e 29 20 20 4e 6f 74 65 20 74 68 61 74 20 64    6f 63 75 6d 65 6e 74 0a 20 20 73 75 70 70 6f 72  | s.)..Note.that.document...suppor | 
| 90720 |  74 20 28 50 44 46 73 20 65 74 63 29 20 66 6f 72    20 47 65 6d 69 6e 69 20 6d 6f 64 65 6c 73 20 68  | t.(PDFs.etc).for.Gemini.models.h | 
| 90740 |  61 73 20 62 65 65 6e 20 61 76 61 69 6c 61 62 6c    65 20 73 69 6e 63 65 0a 20 20 76 30 2e 39 2e 35  | as.been.available.since...v0.9.5 | 
| 90760 |  2e 0a 0a 2d 20 57 68 65 6e 20 64 65 66 69 6e 69    6e 67 20 61 20 67 70 74 65 6c 20 6d 6f 64 65 6c  | ...-.When.defining.a.gptel.model | 
| 90780 |  20 6f 72 20 62 61 63 6b 65 6e 64 2c 20 79 6f 75    20 63 61 6e 20 73 70 65 63 69 66 79 20 61 72 62  | .or.backend,.you.can.specify.arb | 
| 907a0 |  69 74 72 61 72 79 0a 20 20 70 61 72 61 6d 65 74    65 72 73 20 74 6f 20 62 65 20 73 65 6e 74 20 77  | itrary...parameters.to.be.sent.w | 
| 907c0 |  69 74 68 20 65 61 63 68 20 72 65 71 75 65 73 74    2e 20 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73  | ith.each.request...This.includes | 
| 907e0 |  20 74 68 65 20 28 6d 61 6e 79 29 0a 20 20 41 50    49 20 6f 70 74 69 6f 6e 73 20 61 63 72 6f 73 73  | .the.(many)...API.options.across | 
| 90800 |  20 61 6c 6c 20 41 50 49 73 20 74 68 61 74 20 67    70 74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 79 65  | .all.APIs.that.gptel.does.not.ye | 
| 90820 |  74 20 70 72 6f 76 69 64 65 20 65 78 70 6c 69 63    69 74 0a 20 20 73 75 70 70 6f 72 74 20 66 6f 72  | t.provide.explicit...support.for | 
| 90840 |  2e 0a 0a 2d 20 4e 65 77 20 74 72 61 6e 73 69 65    6e 74 20 63 6f 6d 6d 61 6e 64 20 6f 70 74 69 6f  | ...-.New.transient.command.optio | 
| 90860 |  6e 20 74 6f 20 65 61 73 69 6c 79 20 72 65 6d 6f    76 65 20 61 6c 6c 20 69 6e 63 6c 75 64 65 64 20  | n.to.easily.remove.all.included. | 
| 90880 |  63 6f 6e 74 65 78 74 0a 20 20 63 68 75 6e 6b 73    2e 0a 0a 2a 2a 20 4e 6f 74 61 62 6c 65 20 42 75  | context...chunks...**.Notable.Bu | 
| 908a0 |  67 20 66 69 78 65 73 0a 2d 20 50 72 65 73 73 69    6e 67 20 7e 52 45 54 7e 20 6f 6e 20 69 6e 63 6c  | g.fixes.-.Pressing.~RET~.on.incl | 
| 908c0 |  75 64 65 64 20 66 69 6c 65 73 20 69 6e 20 74 68    65 20 63 6f 6e 74 65 78 74 20 69 6e 73 70 65 63  | uded.files.in.the.context.inspec | 
| 908e0 |  74 6f 72 20 62 75 66 66 65 72 20 6e 6f 77 0a 20    20 70 6f 70 73 20 75 70 20 74 68 65 20 66 69 6c  | tor.buffer.now...pops.up.the.fil | 
| 90900 |  65 20 63 6f 72 72 65 63 74 6c 79 2e 0a 2d 20 41    50 49 20 6b 65 79 73 20 61 72 65 20 73 74 72 69  | e.correctly..-.API.keys.are.stri | 
| 90920 |  70 70 65 64 20 6f 66 20 77 68 69 74 65 73 70 61    63 65 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e  | pped.of.whitespace.before.sendin | 
| 90940 |  67 2e 0a 2d 20 4d 75 6c 74 69 70 6c 65 20 55 49    2c 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 70 72  | g..-.Multiple.UI,.backend.and.pr | 
| 90960 |  6f 6d 70 74 20 63 6f 6e 73 74 72 75 63 74 69 6f    6e 20 62 75 67 73 20 68 61 76 65 20 62 65 65 6e  | ompt.construction.bugs.have.been | 
| 90980 |  20 66 69 78 65 64 2e 0a 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .fixed.......................... | 
| 909a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 909c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 909e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90a00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 72 65 77 72 69 74 65 2e 65 6c 00 00  | gptel-0.9.8.5/gptel-rewrite.el.. | 
| 90a20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90a40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90a60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 90a80 |  30 30 37 32 32 31 32 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 35 36 35 00 20 30 00 00 00  | 0072212.00000000000.014565..0... | 
| 90aa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90ac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90ae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90b00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 90b20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 90b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 90c00 |  3b 3b 3b 20 67 70 74 65 6c 2d 72 65 77 72 69 74    65 2e 65 6c 20 2d 2d 2d 20 52 65 66 61 63 74 6f  | ;;;.gptel-rewrite.el.---.Refacto | 
| 90c20 |  72 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 66    6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65  | ring.functions.for.gptel..-*-.le | 
| 90c40 |  78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74    3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69  | xical-binding:.t;.-*-..;;.Copyri | 
| 90c60 |  67 68 74 20 28 43 29 20 32 30 32 34 20 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | ght.(C).2024..Karthik.Chikmagalu | 
| 90c80 |  72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | r..;;.Author:.Karthik.Chikmagalu | 
| 90ca0 |  72 20 3c 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61    67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e  | r.<karthikchikmagalur@gmail.com> | 
| 90cc0 |  0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 68 79    70 65 72 6d 65 64 69 61 2c 20 63 6f 6e 76 65 6e  | .;;.Keywords:.hypermedia,.conven | 
| 90ce0 |  69 65 6e 63 65 2c 20 74 6f 6f 6c 73 0a 0a 3b 3b    20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73  | ience,.tools..;;.This.program.is | 
| 90d00 |  20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20    79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69  | .free.software;.you.can.redistri | 
| 90d20 |  62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d    6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65  | bute.it.and/or.modify.;;.it.unde | 
| 90d40 |  72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74    68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50  | r.the.terms.of.the.GNU.General.P | 
| 90d60 |  75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73    20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b  | ublic.License.as.published.by.;; | 
| 90d80 |  20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61    72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65  | .the.Free.Software.Foundation,.e | 
| 90da0 |  69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20    6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20  | ither.version.3.of.the.License,. | 
| 90dc0 |  6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f    70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72  | or.;;.(at.your.option).any.later | 
| 90de0 |  20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68    69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69  | .version...;;.This.program.is.di | 
| 90e00 |  73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65    20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69  | stributed.in.the.hope.that.it.wi | 
| 90e20 |  6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b    20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59  | ll.be.useful,.;;.but.WITHOUT.ANY | 
| 90e40 |  20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f    75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c  | .WARRANTY;.without.even.the.impl | 
| 90e60 |  69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a    3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49  | ied.warranty.of.;;.MERCHANTABILI | 
| 90e80 |  54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f    52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50  | TY.or.FITNESS.FOR.A.PARTICULAR.P | 
| 90ea0 |  55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65    0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20  | URPOSE...See.the.;;.GNU.General. | 
| 90ec0 |  50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66    6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e  | Public.License.for.more.details. | 
| 90ee0 |  0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20    68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20  | ..;;.You.should.have.received.a. | 
| 90f00 |  63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20    47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c  | copy.of.the.GNU.General.Public.L | 
| 90f20 |  69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20    77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61  | icense.;;.along.with.this.progra | 
| 90f40 |  6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20    3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75  | m...If.not,.see.<https://www.gnu | 
| 90f60 |  2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e    0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79  | .org/licenses/>...;;;.Commentary | 
| 90f80 |  3a 0a 0a 3b 3b 0a 0a 3b 3b 3b 20 43 6f 64 65 3a    0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c  | :..;;..;;;.Code:.(require.'gptel | 
| 90fa0 |  2d 74 72 61 6e 73 69 65 6e 74 29 0a 28 72 65 71    75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 0a 28  | -transient).(require.'cl-lib)..( | 
| 90fc0 |  64 65 66 76 61 72 20 65 6c 64 6f 63 2d 64 6f 63    75 6d 65 6e 74 61 74 69 6f 6e 2d 66 75 6e 63 74  | defvar.eldoc-documentation-funct | 
| 90fe0 |  69 6f 6e 73 29 0a 28 64 65 66 76 61 72 20 64 69    66 66 2d 65 6e 74 69 72 65 2d 62 75 66 66 65 72  | ions).(defvar.diff-entire-buffer | 
| 91000 |  73 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e    63 74 69 6f 6e 20 64 69 66 66 2d 6e 6f 2d 73 65  | s)..(declare-function.diff-no-se | 
| 91020 |  6c 65 63 74 20 22 64 69 66 66 22 29 0a 28 64 65    63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 72  | lect."diff").(declare-function.r | 
| 91040 |  6d 63 2d 2d 61 64 64 2d 6b 65 79 2d 64 65 73 63    72 69 70 74 69 6f 6e 20 22 72 6d 63 22 29 0a 0a  | mc--add-key-description."rmc").. | 
| 91060 |  3b 3b 20 2a 20 55 73 65 72 20 6f 70 74 69 6f 6e    73 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70  | ;;.*.User.options..(defcustom.gp | 
| 91080 |  74 65 6c 2d 72 65 77 72 69 74 65 2d 64 69 72 65    63 74 69 76 65 73 2d 68 6f 6f 6b 20 6e 69 6c 0a  | tel-rewrite-directives-hook.nil. | 
| 910a0 |  20 20 22 48 6f 6f 6b 20 72 75 6e 20 74 6f 20 67    65 6e 65 72 61 74 65 20 67 70 74 65 6c 27 73 20  | .."Hook.run.to.generate.gptel's. | 
| 910c0 |  64 65 66 61 75 6c 74 20 72 65 77 72 69 74 65 20    64 69 72 65 63 74 69 76 65 73 2e 0a 0a 45 61 63  | default.rewrite.directives...Eac | 
| 910e0 |  68 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68    69 73 20 68 6f 6f 6b 20 69 73 20 63 61 6c 6c 65  | h.function.in.this.hook.is.calle | 
| 91100 |  64 20 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65    6e 74 73 20 75 6e 74 69 6c 20 6f 6e 65 0a 72 65  | d.with.no.arguments.until.one.re | 
| 91120 |  74 75 72 6e 73 20 61 20 6e 6f 6e 2d 6e 69 6c 20    76 61 6c 75 65 2c 20 74 68 65 20 62 61 73 65 20  | turns.a.non-nil.value,.the.base. | 
| 91140 |  73 74 72 69 6e 67 20 74 6f 20 75 73 65 20 61 73    20 74 68 65 0a 72 65 77 72 69 74 65 20 69 6e 73  | string.to.use.as.the.rewrite.ins | 
| 91160 |  74 72 75 63 74 69 6f 6e 2e 0a 0a 55 73 65 20 74    68 69 73 20 68 6f 6f 6b 20 74 6f 20 74 61 69 6c  | truction...Use.this.hook.to.tail | 
| 91180 |  6f 72 20 63 6f 6e 74 65 78 74 2d 73 70 65 63 69    66 69 63 20 72 65 77 72 69 74 65 20 64 69 72 65  | or.context-specific.rewrite.dire | 
| 911a0 |  63 74 69 76 65 73 2e 0a 46 6f 72 20 65 78 61 6d    70 6c 65 2c 20 79 6f 75 20 63 61 6e 20 73 70 65  | ctives..For.example,.you.can.spe | 
| 911c0 |  63 69 61 6c 69 7a 65 20 74 68 65 20 64 65 66 61    75 6c 74 20 72 65 77 72 69 74 65 20 64 69 72 65  | cialize.the.default.rewrite.dire | 
| 911e0 |  63 74 69 76 65 0a 66 6f 72 20 61 20 70 61 72 74    69 63 75 6c 61 72 20 6d 61 6a 6f 72 2d 6d 6f 64  | ctive.for.a.particular.major-mod | 
| 91200 |  65 20 6f 72 20 70 72 6f 6a 65 63 74 2e 22 0a 20    20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20  | e.or.project."...:group.'gptel.. | 
| 91220 |  20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 28    64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d  | .:type.'hook)..(defcustom.gptel- | 
| 91240 |  70 6f 73 74 2d 72 65 77 72 69 74 65 2d 66 75 6e    63 74 69 6f 6e 73 20 6e 69 6c 0a 20 20 22 41 62  | post-rewrite-functions.nil..."Ab | 
| 91260 |  6e 6f 72 6d 61 6c 20 68 6f 6f 6b 20 72 75 6e 20    61 66 74 65 72 20 61 20 60 67 70 74 65 6c 2d 72  | normal.hook.run.after.a.`gptel-r | 
| 91280 |  65 77 72 69 74 65 27 20 61 63 74 69 6f 6e 2e 0a    0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61  | ewrite'.action...This.hook.is.ca | 
| 912a0 |  6c 6c 65 64 20 61 66 74 65 72 20 74 68 65 20 4c    4c 4d 20 72 65 73 70 6f 6e 73 65 20 66 6f 72 20  | lled.after.the.LLM.response.for. | 
| 912c0 |  74 68 65 20 72 65 77 72 69 74 65 20 61 63 74 69    6f 6e 0a 68 61 73 20 62 65 65 6e 20 66 75 6c 6c  | the.rewrite.action.has.been.full | 
| 912e0 |  79 20 72 65 63 65 69 76 65 64 20 69 6e 20 61 20    74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72  | y.received.in.a.temporary.buffer | 
| 91300 |  2e 20 20 45 61 63 68 20 66 75 6e 63 74 69 6f 6e    20 69 73 0a 63 61 6c 6c 65 64 20 77 69 74 68 20  | ...Each.function.is.called.with. | 
| 91320 |  74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 74    68 65 20 72 65 73 70 6f 6e 73 65 20 62 65 67 69  | two.arguments:.the.response.begi | 
| 91340 |  6e 6e 69 6e 67 20 61 6e 64 20 65 6e 64 0a 70 6f    73 69 74 69 6f 6e 73 2e 0a 0a 4e 6f 74 65 3a 20  | nning.and.end.positions...Note:. | 
| 91360 |  74 68 69 73 20 68 6f 6f 6b 20 6f 6e 6c 79 20 72    75 6e 73 20 69 66 20 74 68 65 20 72 65 77 72 69  | this.hook.only.runs.if.the.rewri | 
| 91380 |  74 65 20 72 65 71 75 65 73 74 20 73 75 63 63 65    65 64 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 68  | te.request.succeeds."...:type.'h | 
| 913a0 |  6f 6f 6b 0a 20 20 3a 67 72 6f 75 70 20 27 67 70    74 65 6c 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d  | ook...:group.'gptel)..(defcustom | 
| 913c0 |  20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 64    65 66 61 75 6c 74 2d 61 63 74 69 6f 6e 20 6e 69  | .gptel-rewrite-default-action.ni | 
| 913e0 |  6c 0a 20 20 22 41 63 74 69 6f 6e 20 74 6f 20 74    61 6b 65 20 77 68 65 6e 20 72 65 77 72 69 74 69  | l..."Action.to.take.when.rewriti | 
| 91400 |  6e 67 20 61 20 74 65 78 74 20 72 65 67 69 6f 6e    20 75 73 69 6e 67 20 67 70 74 65 6c 2e 0a 0a 57  | ng.a.text.region.using.gptel...W | 
| 91420 |  68 65 6e 20 74 68 65 20 4c 4c 4d 20 72 65 73 70    6f 6e 73 65 20 77 69 74 68 20 74 68 65 20 72 65  | hen.the.LLM.response.with.the.re | 
| 91440 |  77 72 69 74 74 65 6e 20 74 65 78 74 20 69 73 20    72 65 63 65 69 76 65 64 2c 20 79 6f 75 20 63 61  | written.text.is.received,.you.ca | 
| 91460 |  6e 0a 2d 20 6d 65 72 67 65 20 69 74 20 77 69 74    68 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 65  | n.-.merge.it.with.the.current.re | 
| 91480 |  67 69 6f 6e 2c 20 70 6f 73 73 69 62 6c 79 20 63    72 65 61 74 69 6e 67 20 61 20 6d 65 72 67 65 20  | gion,.possibly.creating.a.merge. | 
| 914a0 |  63 6f 6e 66 6c 69 63 74 2c 0a 2d 20 64 69 66 66    20 6f 72 20 65 64 69 66 66 20 61 67 61 69 6e 73  | conflict,.-.diff.or.ediff.agains | 
| 914c0 |  74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 72    65 67 69 6f 6e 2c 0a 2d 20 6f 72 20 61 63 63 65  | t.the.original.region,.-.or.acce | 
| 914e0 |  70 74 20 69 74 20 69 6e 20 70 6c 61 63 65 2c 20    72 65 70 6c 61 63 69 6e 67 20 74 68 65 20 6f 72  | pt.it.in.place,.replacing.the.or | 
| 91500 |  69 67 69 6e 61 6c 20 72 65 67 69 6f 6e 2e 0a 2d    20 64 69 73 70 6c 61 79 20 61 20 64 69 73 70 61  | iginal.region..-.display.a.dispa | 
| 91520 |  74 63 68 20 6d 65 6e 75 20 77 69 74 68 20 74 68    65 20 61 62 6f 76 65 20 63 68 6f 69 63 65 73 2e  | tch.menu.with.the.above.choices. | 
| 91540 |  0a 0a 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e    20 69 73 20 6e 69 6c 20 28 74 68 65 20 64 65 66  | ..If.this.option.is.nil.(the.def | 
| 91560 |  61 75 6c 74 29 2c 20 67 70 74 65 6c 20 77 61 69    74 73 20 66 6f 72 20 61 6e 20 65 78 70 6c 69 63  | ault),.gptel.waits.for.an.explic | 
| 91580 |  69 74 0a 63 6f 6d 6d 61 6e 64 2e 20 20 53 65 74    20 69 74 20 74 6f 20 74 68 65 20 73 79 6d 62 6f  | it.command...Set.it.to.the.symbo | 
| 915a0 |  6c 20 60 6d 65 72 67 65 27 2c 20 60 64 69 66 66    27 2c 20 60 65 64 69 66 66 27 2c 20 60 61 63 63  | l.`merge',.`diff',.`ediff',.`acc | 
| 915c0 |  65 70 74 27 0a 6f 72 20 60 64 69 73 70 61 74 63    68 27 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61  | ept'.or.`dispatch'.to.automatica | 
| 915e0 |  6c 6c 79 20 64 6f 20 6f 6e 65 20 6f 66 20 74 68    65 73 65 20 74 68 69 6e 67 73 20 69 6e 73 74 65  | lly.do.one.of.these.things.inste | 
| 91600 |  61 64 2e 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73    6f 20 73 65 74 20 69 74 20 74 6f 20 61 20 66 75  | ad...You.can.also.set.it.to.a.fu | 
| 91620 |  6e 63 74 69 6f 6e 20 6f 66 20 79 6f 75 72 20 63    68 6f 6f 73 69 6e 67 20 66 6f 72 20 61 20 63 75  | nction.of.your.choosing.for.a.cu | 
| 91640 |  73 74 6f 6d 0a 61 63 74 69 6f 6e 2e 20 20 54 68    69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 63 65  | stom.action...This.function.rece | 
| 91660 |  69 76 65 73 20 6f 6e 65 20 61 72 67 75 6d 65 6e    74 2c 20 74 68 65 20 72 65 77 72 69 74 65 0a 6f  | ives.one.argument,.the.rewrite.o | 
| 91680 |  76 65 72 6c 61 79 2e 22 0a 20 20 3a 67 72 6f 75    70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65  | verlay."...:group.'gptel...:type | 
| 916a0 |  20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20  | .'(choice...........(const.:tag. | 
| 916c0 |  22 57 61 69 74 22 20 6e 69 6c 29 0a 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61  | "Wait".nil)...........(const.:ta | 
| 916e0 |  67 20 22 4d 65 72 67 65 20 77 69 74 68 20 63 75    72 72 65 6e 74 20 72 65 67 69 6f 6e 22 20 6d 65  | g."Merge.with.current.region".me | 
| 91700 |  72 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 28    63 6f 6e 73 74 20 3a 74 61 67 20 20 22 44 69 66  | rge)...........(const.:tag.."Dif | 
| 91720 |  66 20 61 67 61 69 6e 73 74 20 63 75 72 72 65 6e    74 20 72 65 67 69 6f 6e 22 20 64 69 66 66 29 0a  | f.against.current.region".diff). | 
| 91740 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74    20 3a 74 61 67 20 22 45 64 69 66 66 20 61 67 61  | ..........(const.:tag."Ediff.aga | 
| 91760 |  69 6e 73 74 20 63 75 72 72 65 6e 74 20 72 65 67    69 6f 6e 22 20 65 64 69 66 66 29 0a 20 20 20 20  | inst.current.region".ediff)..... | 
| 91780 |  20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61    67 20 22 41 63 63 65 70 74 20 72 65 77 72 69 74  | ......(const.:tag."Accept.rewrit | 
| 917a0 |  65 22 20 61 63 63 65 70 74 29 0a 20 20 20 20 20    20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67  | e".accept)...........(const.:tag | 
| 917c0 |  20 22 44 69 73 70 61 74 63 68 22 20 64 69 73 70    61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20  | ."Dispatch".dispatch)........... | 
| 917e0 |  28 66 75 6e 63 74 69 6f 6e 20 3a 74 61 67 20 22    43 75 73 74 6f 6d 20 61 63 74 69 6f 6e 22 29 29  | (function.:tag."Custom.action")) | 
| 91800 |  29 0a 0a 28 64 65 66 66 61 63 65 20 67 70 74 65    6c 2d 72 65 77 72 69 74 65 2d 68 69 67 68 6c 69  | )..(defface.gptel-rewrite-highli | 
| 91820 |  67 68 74 2d 66 61 63 65 0a 20 20 27 28 28 28 28    63 6c 61 73 73 20 63 6f 6c 6f 72 29 20 28 6d 69  | ght-face...'((((class.color).(mi | 
| 91840 |  6e 2d 63 6f 6c 6f 72 73 20 38 38 29 20 28 62 61    63 6b 67 72 6f 75 6e 64 20 64 61 72 6b 29 29 0a  | n-colors.88).(background.dark)). | 
| 91860 |  20 20 20 20 20 3a 62 61 63 6b 67 72 6f 75 6e 64    20 22 23 30 34 31 37 31 34 22 20 3a 65 78 74 65  | .....:background."#041714".:exte | 
| 91880 |  6e 64 20 74 20 3a 69 6e 68 65 72 69 74 20 64 65    66 61 75 6c 74 29 0a 20 20 20 20 28 28 28 63 6c  | nd.t.:inherit.default).....(((cl | 
| 918a0 |  61 73 73 20 63 6f 6c 6f 72 29 20 28 6d 69 6e 2d    63 6f 6c 6f 72 73 20 38 38 29 20 28 62 61 63 6b  | ass.color).(min-colors.88).(back | 
| 918c0 |  67 72 6f 75 6e 64 20 6c 69 67 68 74 29 29 0a 20    20 20 20 20 3a 62 61 63 6b 67 72 6f 75 6e 64 20  | ground.light))......:background. | 
| 918e0 |  22 6c 69 67 68 74 20 67 6f 6c 64 65 6e 72 6f 64    20 79 65 6c 6c 6f 77 22 20 3a 65 78 74 65 6e 64  | "light.goldenrod.yellow".:extend | 
| 91900 |  20 74 20 3a 69 6e 68 65 72 69 74 20 64 65 66 61    75 6c 74 29 0a 20 20 20 20 28 74 20 3a 69 6e 68  | .t.:inherit.default).....(t.:inh | 
| 91920 |  65 72 69 74 20 73 65 63 6f 6e 64 61 72 79 2d 73    65 6c 65 63 74 69 6f 6e 29 29 0a 20 20 22 46 61  | erit.secondary-selection))..."Fa | 
| 91940 |  63 65 20 66 6f 72 20 68 69 67 68 6c 69 67 68 74    69 6e 67 20 72 65 67 69 6f 6e 73 20 77 69 74 68  | ce.for.highlighting.regions.with | 
| 91960 |  20 70 65 6e 64 69 6e 67 20 72 65 77 72 69 74 65    73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70  | .pending.rewrites."...:group.'gp | 
| 91980 |  74 65 6c 29 0a 0a 3b 3b 20 2a 20 56 61 72 69 61    62 6c 65 73 0a 0a 28 64 65 66 76 61 72 2d 6b 65  | tel)..;;.*.Variables..(defvar-ke | 
| 919a0 |  79 6d 61 70 20 67 70 74 65 6c 2d 72 65 77 72 69    74 65 2d 61 63 74 69 6f 6e 73 2d 6d 61 70 0a 20  | ymap.gptel-rewrite-actions-map.. | 
| 919c0 |  20 3a 64 6f 63 20 22 4b 65 79 6d 61 70 20 66 6f    72 20 67 70 74 65 6c 20 72 65 77 72 69 74 65 20  | .:doc."Keymap.for.gptel.rewrite. | 
| 919e0 |  61 63 74 69 6f 6e 73 20 61 74 20 70 6f 69 6e 74    2e 22 0a 20 20 22 52 45 54 22 20 23 27 67 70 74  | actions.at.point."..."RET".#'gpt | 
| 91a00 |  65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 73 70    61 74 63 68 0a 20 20 22 3c 6d 6f 75 73 65 2d 31  | el--rewrite-dispatch..."<mouse-1 | 
| 91a20 |  3e 22 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72    69 74 65 2d 64 69 73 70 61 74 63 68 0a 20 20 22  | >".#'gptel--rewrite-dispatch..." | 
| 91a40 |  43 2d 63 20 43 2d 61 22 20 23 27 67 70 74 65 6c    2d 2d 72 65 77 72 69 74 65 2d 61 63 63 65 70 74  | C-c.C-a".#'gptel--rewrite-accept | 
| 91a60 |  0a 20 20 22 43 2d 63 20 43 2d 72 22 20 23 27 67    70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 69 74  | ..."C-c.C-r".#'gptel--rewrite-it | 
| 91a80 |  65 72 61 74 65 0a 20 20 22 43 2d 63 20 43 2d 6b    22 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72 69  | erate..."C-c.C-k".#'gptel--rewri | 
| 91aa0 |  74 65 2d 72 65 6a 65 63 74 0a 20 20 22 43 2d 63    20 43 2d 64 22 20 23 27 67 70 74 65 6c 2d 2d 72  | te-reject..."C-c.C-d".#'gptel--r | 
| 91ac0 |  65 77 72 69 74 65 2d 64 69 66 66 0a 20 20 22 43    2d 63 20 43 2d 65 22 20 23 27 67 70 74 65 6c 2d  | ewrite-diff..."C-c.C-e".#'gptel- | 
| 91ae0 |  2d 72 65 77 72 69 74 65 2d 65 64 69 66 66 0a 20    20 22 43 2d 63 20 43 2d 6e 22 20 23 27 67 70 74  | -rewrite-ediff..."C-c.C-n".#'gpt | 
| 91b00 |  65 6c 2d 2d 72 65 77 72 69 74 65 2d 6e 65 78 74    0a 20 20 22 43 2d 63 20 43 2d 70 22 20 23 27 67  | el--rewrite-next..."C-c.C-p".#'g | 
| 91b20 |  70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 70 72    65 76 69 6f 75 73 0a 20 20 22 43 2d 63 20 43 2d  | ptel--rewrite-previous..."C-c.C- | 
| 91b40 |  6d 22 20 23 27 67 70 74 65 6c 2d 2d 72 65 77 72    69 74 65 2d 6d 65 72 67 65 29 0a 0a 28 64 65 66  | m".#'gptel--rewrite-merge)..(def | 
| 91b60 |  76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d    2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79  | var-local.gptel--rewrite-overlay | 
| 91b80 |  73 20 6e 69 6c 0a 20 20 22 4c 69 73 74 20 6f 66    20 61 63 74 69 76 65 20 72 65 77 72 69 74 65 20  | s.nil..."List.of.active.rewrite. | 
| 91ba0 |  6f 76 65 72 6c 61 79 73 20 69 6e 20 74 68 65 20    62 75 66 66 65 72 2e 22 29 0a 0a 28 64 65 66 76  | overlays.in.the.buffer.")..(defv | 
| 91bc0 |  61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d    72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20  | ar-local.gptel--rewrite-message. | 
| 91be0 |  6e 69 6c 0a 20 20 22 52 65 71 75 65 73 74 2d 73    70 65 63 69 66 69 63 20 69 6e 73 74 72 75 63 74  | nil..."Request-specific.instruct | 
| 91c00 |  69 6f 6e 73 20 66 6f 72 20 61 20 67 70 74 65 6c    2d 72 65 77 72 69 74 65 20 61 63 74 69 6f 6e 2e  | ions.for.a.gptel-rewrite.action. | 
| 91c20 |  22 29 0a 0a 3b 3b 20 41 64 64 20 74 68 65 20 72    65 77 72 69 74 65 20 64 69 72 65 63 74 69 76 65  | ")..;;.Add.the.rewrite.directive | 
| 91c40 |  20 74 6f 20 60 67 70 74 65 6c 2d 64 69 72 65 63    74 69 76 65 73 27 0a 28 75 6e 6c 65 73 73 20 28  | .to.`gptel-directives'.(unless.( | 
| 91c60 |  61 6c 69 73 74 2d 67 65 74 20 27 72 65 77 72 69    74 65 20 67 70 74 65 6c 2d 64 69 72 65 63 74 69  | alist-get.'rewrite.gptel-directi | 
| 91c80 |  76 65 73 29 0a 20 20 28 61 64 64 2d 74 6f 2d 6c    69 73 74 20 27 67 70 74 65 6c 2d 64 69 72 65 63  | ves)...(add-to-list.'gptel-direc | 
| 91ca0 |  74 69 76 65 73 20 60 28 72 65 77 72 69 74 65 20    2e 20 2c 23 27 67 70 74 65 6c 2d 2d 72 65 77 72  | tives.`(rewrite...,#'gptel--rewr | 
| 91cc0 |  69 74 65 2d 64 69 72 65 63 74 69 76 65 2d 64 65    66 61 75 6c 74 29 29 29 0a 0a 28 64 65 66 76 61  | ite-directive-default)))..(defva | 
| 91ce0 |  72 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65    2d 64 69 72 65 63 74 69 76 65 0a 20 20 28 6f 72  | r.gptel--rewrite-directive...(or | 
| 91d00 |  20 28 61 6c 69 73 74 2d 67 65 74 20 27 72 65 77    72 69 74 65 20 67 70 74 65 6c 2d 64 69 72 65 63  | .(alist-get.'rewrite.gptel-direc | 
| 91d20 |  74 69 76 65 73 29 0a 20 20 20 20 20 20 23 27 67    70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69  | tives).......#'gptel--rewrite-di | 
| 91d40 |  72 65 63 74 69 76 65 2d 64 65 66 61 75 6c 74 29    0a 20 20 22 41 63 74 69 76 65 20 73 79 73 74 65  | rective-default)..."Active.syste | 
| 91d60 |  6d 20 6d 65 73 73 61 67 65 20 66 6f 72 20 72 65    77 72 69 74 65 20 61 63 74 69 6f 6e 73 2e 0a 0a  | m.message.for.rewrite.actions... | 
| 91d80 |  54 68 69 73 20 76 61 72 69 61 62 6c 65 20 69 73    20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73  | This.variable.is.for.internal.us | 
| 91da0 |  65 20 6f 6e 6c 79 2e 20 20 54 6f 20 63 75 73 74    6f 6d 69 7a 65 20 74 68 65 20 72 65 77 72 69 74  | e.only...To.customize.the.rewrit | 
| 91dc0 |  65 0a 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65    2c 20 73 65 74 20 61 20 73 79 73 74 65 6d 20 6d  | e.system.message,.set.a.system.m | 
| 91de0 |  65 73 73 61 67 65 20 28 6f 72 20 66 75 6e 63 74    69 6f 6e 20 74 68 61 74 20 67 65 6e 65 72 61 74  | essage.(or.function.that.generat | 
| 91e00 |  65 73 0a 74 68 65 20 73 79 73 74 65 6d 20 6d 65    73 73 61 67 65 29 20 61 73 20 74 68 65 20 76 61  | es.the.system.message).as.the.va | 
| 91e20 |  6c 75 65 20 6f 66 20 74 68 65 20 60 72 65 77 72    69 74 65 27 20 6b 65 79 20 69 6e 0a 60 67 70 74  | lue.of.the.`rewrite'.key.in.`gpt | 
| 91e40 |  65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 3a 0a    0a 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67  | el-directives':...(setf.(alist-g | 
| 91e60 |  65 74 20 5c 5c 3d 27 72 65 77 72 69 74 65 20 67    70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 29  | et.\\='rewrite.gptel-directives) | 
| 91e80 |  0a 20 20 20 20 20 20 20 23 5c 5c 3d 27 6d 79 2d    72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 2d  | ........#\\='my-rewrite-message- | 
| 91ea0 |  67 65 6e 65 72 61 74 6f 72 29 0a 0a 59 6f 75 20    63 61 6e 20 61 6c 73 6f 20 63 75 73 74 6f 6d 69  | generator)..You.can.also.customi | 
| 91ec0 |  7a 65 20 60 67 70 74 65 6c 2d 72 65 77 72 69 74    65 2d 64 69 72 65 63 74 69 76 65 73 2d 68 6f 6f  | ze.`gptel-rewrite-directives-hoo | 
| 91ee0 |  6b 27 20 74 6f 0a 64 79 6e 61 6d 69 63 61 6c 6c    79 20 69 6e 6a 65 63 74 20 61 20 72 65 77 72 69  | k'.to.dynamically.inject.a.rewri | 
| 91f00 |  74 65 2d 73 70 65 63 69 66 69 63 20 73 79 73 74    65 6d 20 6d 65 73 73 61 67 65 2e 22 29 0a 0a 28  | te-specific.system.message.")..( | 
| 91f20 |  64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77    72 69 74 65 2d 64 69 72 65 63 74 69 76 65 2d 64  | defun.gptel--rewrite-directive-d | 
| 91f40 |  65 66 61 75 6c 74 20 28 29 0a 20 20 22 47 65 6e    65 72 69 63 20 64 69 72 65 63 74 69 76 65 20 66  | efault.()..."Generic.directive.f | 
| 91f60 |  6f 72 20 72 65 77 72 69 74 69 6e 67 20 6f 72 20    72 65 66 61 63 74 6f 72 69 6e 67 2e 0a 0a 54 68  | or.rewriting.or.refactoring...Th | 
| 91f80 |  65 73 65 20 61 72 65 20 69 6e 73 74 72 75 63 74    69 6f 6e 73 20 6e 6f 74 20 73 70 65 63 69 66 69  | ese.are.instructions.not.specifi | 
| 91fa0 |  63 20 74 6f 20 61 6e 79 20 70 61 72 74 69 63 75    6c 61 72 20 72 65 71 75 69 72 65 64 0a 63 68 61  | c.to.any.particular.required.cha | 
| 91fc0 |  6e 67 65 2e 0a 0a 54 68 65 20 72 65 74 75 72 6e    65 64 20 73 74 72 69 6e 67 20 69 73 20 69 6e 74  | nge...The.returned.string.is.int | 
| 91fe0 |  65 72 70 72 65 74 65 64 20 61 73 20 74 68 65 20    73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 66  | erpreted.as.the.system.message.f | 
| 92000 |  6f 72 20 74 68 65 0a 72 65 77 72 69 74 65 20 72    65 71 75 65 73 74 2e 20 20 54 6f 20 75 73 65 20  | or.the.rewrite.request...To.use. | 
| 92020 |  79 6f 75 72 20 6f 77 6e 2c 20 61 64 64 20 61 20    64 69 66 66 65 72 65 6e 74 20 64 69 72 65 63 74  | your.own,.add.a.different.direct | 
| 92040 |  69 76 65 20 74 6f 0a 60 67 70 74 65 6c 2d 64 69    72 65 63 74 69 76 65 73 27 2c 20 6f 72 20 61 64  | ive.to.`gptel-directives',.or.ad | 
| 92060 |  64 20 74 6f 20 60 67 70 74 65 6c 2d 72 65 77 72    69 74 65 2d 64 69 72 65 63 74 69 76 65 73 2d 68  | d.to.`gptel-rewrite-directives-h | 
| 92080 |  6f 6f 6b 27 2c 0a 77 68 69 63 68 20 73 65 65 2e    22 0a 20 20 28 6f 72 20 28 73 61 76 65 2d 6d 61  | ook',.which.see."...(or.(save-ma | 
| 920a0 |  72 6b 2d 61 6e 64 2d 65 78 63 75 72 73 69 6f 6e    0a 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f  | rk-and-excursion.........(run-ho | 
| 920c0 |  6f 6b 2d 77 69 74 68 2d 61 72 67 73 2d 75 6e 74    69 6c 2d 73 75 63 63 65 73 73 0a 20 20 20 20 20  | ok-with-args-until-success...... | 
| 920e0 |  20 20 20 20 27 67 70 74 65 6c 2d 72 65 77 72 69    74 65 2d 64 69 72 65 63 74 69 76 65 73 2d 68 6f  | ....'gptel-rewrite-directives-ho | 
| 92100 |  6f 6b 29 29 0a 20 20 20 20 20 20 28 6c 65 74 2a    20 28 28 6c 61 6e 67 20 28 64 6f 77 6e 63 61 73  | ok)).......(let*.((lang.(downcas | 
| 92120 |  65 20 28 67 70 74 65 6c 2d 2d 73 74 72 69 70 2d    6d 6f 64 65 2d 73 75 66 66 69 78 20 6d 61 6a 6f  | e.(gptel--strip-mode-suffix.majo | 
| 92140 |  72 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 28 61 72 74 69 63 6c 65 20  | r-mode)))..............(article. | 
| 92160 |  28 69 66 20 28 61 6e 64 20 6c 61 6e 67 20 28 6e    6f 74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79  | (if.(and.lang.(not.(string-empty | 
| 92180 |  2d 70 20 6c 61 6e 67 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -p.lang))....................... | 
| 921a0 |  20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 28    61 72 65 66 20 6c 61 6e 67 20 30 29 20 27 28 3f  | .........(memq.(aref.lang.0).'(? | 
| 921c0 |  61 20 3f 65 20 3f 69 20 3f 6f 20 3f 75 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | a.?e.?i.?o.?u)))................ | 
| 921e0 |  20 20 20 20 20 20 20 20 20 20 20 22 61 6e 22 20    22 61 22 29 29 29 0a 20 20 20 20 20 20 20 20 28  | ..........."an"."a"))).........( | 
| 92200 |  69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65    2d 70 20 27 70 72 6f 67 2d 6d 6f 64 65 29 0a 20  | if.(derived-mode-p.'prog-mode).. | 
| 92220 |  20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d    61 74 20 28 63 6f 6e 63 61 74 20 22 59 6f 75 20  | ...........(format.(concat."You. | 
| 92240 |  61 72 65 20 25 73 20 25 73 20 70 72 6f 67 72 61    6d 6d 65 72 2e 20 20 22 0a 20 20 20 20 20 20 20  | are.%s.%s.programmer..."........ | 
| 92260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 22 46 6f 6c 6c 6f 77 20 6d 79 20  | ....................."Follow.my. | 
| 92280 |  69 6e 73 74 72 75 63 74 69 6f 6e 73 20 61 6e 64    20 72 65 66 61 63 74 6f 72 20 25 73 20 63 6f 64  | instructions.and.refactor.%s.cod | 
| 922a0 |  65 20 49 20 70 72 6f 76 69 64 65 2e 5c 6e 22 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.I.provide.\n"................. | 
| 922c0 |  20 20 20 20 20 20 20 20 20 20 20 20 22 2d 20 47    65 6e 65 72 61 74 65 20 4f 4e 4c 59 20 25 73 20  | ............"-.Generate.ONLY.%s. | 
| 922e0 |  63 6f 64 65 20 61 73 20 6f 75 74 70 75 74 2c 20    77 69 74 68 6f 75 74 20 22 0a 20 20 20 20 20 20  | code.as.output,.without."....... | 
| 92300 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 22 61 6e 79 20 65 78 70 6c 61  | ......................"any.expla | 
| 92320 |  6e 61 74 69 6f 6e 20 6f 72 20 6d 61 72 6b 64 6f    77 6e 20 63 6f 64 65 20 66 65 6e 63 65 73 2e 5c  | nation.or.markdown.code.fences.\ | 
| 92340 |  6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  | n"............................." | 
| 92360 |  2d 20 47 65 6e 65 72 61 74 65 20 63 6f 64 65 20    69 6e 20 66 75 6c 6c 2c 20 64 6f 20 6e 6f 74 20  | -.Generate.code.in.full,.do.not. | 
| 92380 |  61 62 62 72 65 76 69 61 74 65 20 6f 72 20 6f 6d    69 74 20 63 6f 64 65 2e 5c 6e 22 0a 20 20 20 20  | abbreviate.or.omit.code.\n"..... | 
| 923a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 22 2d 20 44 6f 20 6e 6f  | ........................"-.Do.no | 
| 923c0 |  74 20 61 73 6b 20 66 6f 72 20 66 75 72 74 68 65    72 20 63 6c 61 72 69 66 69 63 61 74 69 6f 6e 2c  | t.ask.for.further.clarification, | 
| 923e0 |  20 61 6e 64 20 6d 61 6b 65 20 22 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .and.make."..................... | 
| 92400 |  20 20 20 20 20 20 20 20 22 61 6e 79 20 61 73 73    75 6d 70 74 69 6f 6e 73 20 79 6f 75 20 6e 65 65  | ........"any.assumptions.you.nee | 
| 92420 |  64 20 74 6f 20 66 6f 6c 6c 6f 77 20 69 6e 73 74    72 75 63 74 69 6f 6e 73 2e 22 29 0a 20 20 20 20  | d.to.follow.instructions.")..... | 
| 92440 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    61 72 74 69 63 6c 65 20 6c 61 6e 67 20 6c 61 6e  | ................article.lang.lan | 
| 92460 |  67 20 6c 61 6e 67 29 0a 20 20 20 20 20 20 20 20    20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20  | g.lang)...........(concat....... | 
| 92480 |  20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67    2d 65 6d 70 74 79 2d 70 20 6c 61 6e 67 29 0a 20  | .....(if.(string-empty-p.lang).. | 
| 924a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 59    6f 75 20 61 72 65 20 61 6e 20 65 64 69 74 6f 72  | .............."You.are.an.editor | 
| 924c0 |  2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 66 6f 72 6d 61 74 20 22 59 6f 75 20 61 72 65  | ."..............(format."You.are | 
| 924e0 |  20 25 73 20 25 73 20 65 64 69 74 6f 72 2e 22 20    61 72 74 69 63 6c 65 20 6c 61 6e 67 29 29 0a 20  | .%s.%s.editor.".article.lang)).. | 
| 92500 |  20 20 20 20 20 20 20 20 20 20 22 20 20 46 6f 6c    6c 6f 77 20 6d 79 20 69 6e 73 74 72 75 63 74 69  | .........."..Follow.my.instructi | 
| 92520 |  6f 6e 73 20 61 6e 64 20 69 6d 70 72 6f 76 65 20    6f 72 20 72 65 77 72 69 74 65 20 74 68 65 20 74  | ons.and.improve.or.rewrite.the.t | 
| 92540 |  65 78 74 20 49 20 70 72 6f 76 69 64 65 2e 22 0a    20 20 20 20 20 20 20 20 20 20 20 22 20 20 47 65  | ext.I.provide."............"..Ge | 
| 92560 |  6e 65 72 61 74 65 20 4f 4e 4c 59 20 74 68 65 20    72 65 70 6c 61 63 65 6d 65 6e 74 20 74 65 78 74  | nerate.ONLY.the.replacement.text | 
| 92580 |  2c 22 0a 20 20 20 20 20 20 20 20 20 20 20 22 20    77 69 74 68 6f 75 74 20 61 6e 79 20 65 78 70 6c  | ,"............".without.any.expl | 
| 925a0 |  61 6e 61 74 69 6f 6e 20 6f 72 20 6d 61 72 6b 64    6f 77 6e 20 63 6f 64 65 20 66 65 6e 63 65 73 2e  | anation.or.markdown.code.fences. | 
| 925c0 |  22 29 29 29 29 29 0a 0a 3b 3b 20 2a 20 48 65 6c    70 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 28  | ")))))..;;.*.Helper.functions..( | 
| 925e0 |  64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77    72 69 74 65 2d 6b 65 79 2d 68 65 6c 70 20 28 63  | defun.gptel--rewrite-key-help.(c | 
| 92600 |  61 6c 6c 62 61 63 6b 29 0a 20 20 22 45 6c 64 6f    63 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  | allback)..."Eldoc.documentation. | 
| 92620 |  66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 67 70 74    65 6c 20 72 65 77 72 69 74 65 20 61 63 74 69 6f  | function.for.gptel.rewrite.actio | 
| 92640 |  6e 73 2e 0a 0a 43 41 4c 4c 42 41 43 4b 20 69 73    20 73 75 70 70 6c 69 65 64 20 62 79 20 45 6c 64  | ns...CALLBACK.is.supplied.by.Eld | 
| 92660 |  6f 63 2c 20 73 65 65 0a 60 65 6c 64 6f 63 2d 64    6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2d 66 75 6e  | oc,.see.`eldoc-documentation-fun | 
| 92680 |  63 74 69 6f 6e 73 27 2e 22 0a 20 20 28 77 68 65    6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 2d 72 65  | ctions'."...(when.(and.gptel--re | 
| 926a0 |  77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74  | write-overlays..............(get | 
| 926c0 |  2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28    70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65  | -char-property.(point).'gptel-re | 
| 926e0 |  77 72 69 74 65 29 29 0a 20 20 20 20 20 20 28 66    75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 0a  | write)).......(funcall.callback. | 
| 92700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    66 6f 72 6d 61 74 20 28 73 75 62 73 74 69 74 75  | ...............(format.(substitu | 
| 92720 |  74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 20    22 25 73 20 72 65 77 72 69 74 65 20 61 76 61 69  | te-command-keys."%s.rewrite.avai | 
| 92740 |  6c 61 62 6c 65 3a 20 61 63 63 65 70 74 20 5c 5c    5b 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d  | lable:.accept.\\[gptel--rewrite- | 
| 92760 |  61 63 63 65 70 74 5d 2c 20 69 74 65 72 61 74 65    20 5c 5c 5b 67 70 74 65 6c 2d 2d 72 65 77 72 69  | accept],.iterate.\\[gptel--rewri | 
| 92780 |  74 65 2d 69 74 65 72 61 74 65 5d 2c 20 63 6c 65    61 72 20 5c 5c 5b 67 70 74 65 6c 2d 2d 72 65 77  | te-iterate],.clear.\\[gptel--rew | 
| 927a0 |  72 69 74 65 2d 72 65 6a 65 63 74 5d 2c 20 6d 65    72 67 65 20 5c 5c 5b 67 70 74 65 6c 2d 2d 72 65  | rite-reject],.merge.\\[gptel--re | 
| 927c0 |  77 72 69 74 65 2d 6d 65 72 67 65 5d 2c 20 64 69    66 66 20 5c 5c 5b 67 70 74 65 6c 2d 2d 72 65 77  | write-merge],.diff.\\[gptel--rew | 
| 927e0 |  72 69 74 65 2d 64 69 66 66 5d 20 6f 72 20 65 64    69 66 66 20 5c 5c 5b 67 70 74 65 6c 2d 2d 72 65  | rite-diff].or.ediff.\\[gptel--re | 
| 92800 |  77 72 69 74 65 2d 65 64 69 66 66 5d 22 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | write-ediff]").................. | 
| 92820 |  20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a    65 20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d  | ......(propertize.(gptel--model- | 
| 92840 |  6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c    29 20 27 66 61 63 65 20 27 6d 6f 64 65 2d 6c 69  | name.gptel-model).'face.'mode-li | 
| 92860 |  6e 65 2d 65 6d 70 68 61 73 69 73 29 29 29 29 29    0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d  | ne-emphasis)))))..(defun.gptel-- | 
| 92880 |  72 65 77 72 69 74 65 2d 6d 6f 76 65 20 28 73 65    61 72 63 68 2d 66 75 6e 63 29 0a 20 20 22 4d 6f  | rewrite-move.(search-func)..."Mo | 
| 928a0 |  76 65 20 64 69 72 65 63 74 69 6f 6e 61 6c 6c 79    20 74 6f 20 61 20 67 70 74 65 6c 20 72 65 77 72  | ve.directionally.to.a.gptel.rewr | 
| 928c0 |  69 74 65 20 6c 6f 63 61 74 69 6f 6e 20 75 73 69    6e 67 20 53 45 41 52 43 48 2d 46 55 4e 43 2e 22  | ite.location.using.SEARCH-FUNC." | 
| 928e0 |  0a 20 20 28 6c 65 74 2a 20 28 28 6f 76 20 28 63    64 72 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f  | ...(let*.((ov.(cdr.(get-char-pro | 
| 92900 |  70 65 72 74 79 2d 61 6e 64 2d 6f 76 65 72 6c 61    79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c  | perty-and-overlay.(point).'gptel | 
| 92920 |  2d 72 65 77 72 69 74 65 29 29 29 0a 20 20 20 20    20 20 20 20 20 28 70 74 20 28 73 61 76 65 2d 65  | -rewrite)))..........(pt.(save-e | 
| 92940 |  78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 69 66 20 6f 76 0a 20  | xcursion................(if.ov.. | 
| 92960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 6f 74 6f 2d 63 68 61 72 0a 20 20 20  | ..................(goto-char.... | 
| 92980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 66 75 6e 63 61 6c 6c 20 73 65 61 72 63 68  | .................(funcall.search | 
| 929a0 |  2d 66 75 6e 63 20 28 6f 76 65 72 6c 61 79 2d 73    74 61 72 74 20 6f 76 29 20 27 67 70 74 65 6c 2d  | -func.(overlay-start.ov).'gptel- | 
| 929c0 |  72 65 77 72 69 74 65 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f  | rewrite))..................(goto | 
| 929e0 |  2d 63 68 61 72 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6d 61 78 20 28 31 2d  | -char...................(max.(1- | 
| 92a00 |  20 28 66 75 6e 63 61 6c 6c 20 73 65 61 72 63 68    2d 66 75 6e 63 20 28 70 6f 69 6e 74 29 20 27 67  | .(funcall.search-func.(point).'g | 
| 92a20 |  70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ptel-rewrite)).................. | 
| 92a40 |  20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e    29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ......(point-min))))............ | 
| 92a60 |  20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 61    72 63 68 2d 66 75 6e 63 20 28 70 6f 69 6e 74 29  | ....(funcall.search-func.(point) | 
| 92a80 |  20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29    29 29 29 0a 20 20 20 20 28 69 66 20 28 67 65 74  | .'gptel-rewrite)))).....(if.(get | 
| 92aa0 |  2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 70    74 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65  | -char-property.pt.'gptel-rewrite | 
| 92ac0 |  29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d    63 68 61 72 20 70 74 29 0a 20 20 20 20 20 20 28  | ).........(goto-char.pt).......( | 
| 92ae0 |  75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 66    75 72 74 68 65 72 20 72 65 77 72 69 74 65 20 72  | user-error."No.further.rewrite.r | 
| 92b00 |  65 67 69 6f 6e 73 21 22 29 29 29 29 0a 0a 28 64    65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72  | egions!"))))..(defun.gptel--rewr | 
| 92b20 |  69 74 65 2d 6e 65 78 74 20 28 29 0a 20 20 22 47    6f 20 74 6f 20 6e 65 78 74 20 70 65 6e 64 69 6e  | ite-next.()..."Go.to.next.pendin | 
| 92b40 |  67 20 4c 4c 4d 20 72 65 77 72 69 74 65 20 69 6e    20 62 75 66 66 65 72 2c 20 69 66 20 6f 6e 65 20  | g.LLM.rewrite.in.buffer,.if.one. | 
| 92b60 |  65 78 69 73 74 73 2e 22 0a 20 20 28 69 6e 74 65    72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65  | exists."...(interactive)...(gpte | 
| 92b80 |  6c 2d 2d 72 65 77 72 69 74 65 2d 6d 6f 76 65 20    23 27 6e 65 78 74 2d 73 69 6e 67 6c 65 2d 63 68  | l--rewrite-move.#'next-single-ch | 
| 92ba0 |  61 72 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e    67 65 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74  | ar-property-change))..(defun.gpt | 
| 92bc0 |  65 6c 2d 2d 72 65 77 72 69 74 65 2d 70 72 65 76    69 6f 75 73 20 28 29 0a 20 20 22 47 6f 20 74 6f  | el--rewrite-previous.()..."Go.to | 
| 92be0 |  20 70 72 65 76 69 6f 75 73 20 70 65 6e 64 69 6e    67 20 4c 4c 4d 20 72 65 77 72 69 74 65 20 69 6e  | .previous.pending.LLM.rewrite.in | 
| 92c00 |  20 62 75 66 66 65 72 2c 20 69 66 20 6f 6e 65 20    65 78 69 73 74 73 2e 22 0a 20 20 28 69 6e 74 65  | .buffer,.if.one.exists."...(inte | 
| 92c20 |  72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65    6c 2d 2d 72 65 77 72 69 74 65 2d 6d 6f 76 65 20  | ractive)...(gptel--rewrite-move. | 
| 92c40 |  23 27 70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c    65 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d  | #'previous-single-char-property- | 
| 92c60 |  63 68 61 6e 67 65 29 29 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d  | change))..(defun.gptel--rewrite- | 
| 92c80 |  6f 76 65 72 6c 61 79 2d 61 74 20 28 26 6f 70 74    69 6f 6e 61 6c 20 70 74 29 0a 20 20 22 43 68 65  | overlay-at.(&optional.pt)..."Che | 
| 92ca0 |  63 6b 20 66 6f 72 20 61 20 67 70 74 65 6c 20 72    65 77 72 69 74 65 20 6f 76 65 72 6c 61 79 20 61  | ck.for.a.gptel.rewrite.overlay.a | 
| 92cc0 |  74 20 50 54 20 61 6e 64 20 72 65 74 75 72 6e 20    69 74 2e 0a 0a 49 66 20 6e 6f 20 73 75 69 74 61  | t.PT.and.return.it...If.no.suita | 
| 92ce0 |  62 6c 65 20 6f 76 65 72 6c 61 79 20 69 73 20 66    6f 75 6e 64 2c 20 72 61 69 73 65 20 61 6e 20 65  | ble.overlay.is.found,.raise.an.e | 
| 92d00 |  72 72 6f 72 2e 22 0a 20 20 28 70 63 61 73 65 2d    6c 65 74 20 28 28 60 28 2c 72 65 73 70 6f 6e 73  | rror."...(pcase-let.((`(,respons | 
| 92d20 |  65 20 2e 20 2c 6f 76 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61  | e...,ov)................(get-cha | 
| 92d40 |  72 2d 70 72 6f 70 65 72 74 79 2d 61 6e 64 2d 6f    76 65 72 6c 61 79 20 28 6f 72 20 70 74 20 28 70  | r-property-and-overlay.(or.pt.(p | 
| 92d60 |  6f 69 6e 74 29 29 20 27 67 70 74 65 6c 2d 72 65    77 72 69 74 65 29 29 0a 20 20 20 20 20 20 20 20  | oint)).'gptel-rewrite))......... | 
| 92d80 |  20 20 20 20 20 20 28 64 69 66 66 2d 65 6e 74 69    72 65 2d 62 75 66 66 65 72 73 20 6e 69 6c 29 29  | ......(diff-entire-buffers.nil)) | 
| 92da0 |  0a 20 20 20 20 28 75 6e 6c 65 73 73 20 6f 76 20    28 75 73 65 72 2d 65 72 72 6f 72 20 22 43 6f 75  | .....(unless.ov.(user-error."Cou | 
| 92dc0 |  6c 64 20 6e 6f 74 20 66 69 6e 64 20 72 65 67 69    6f 6e 20 62 65 69 6e 67 20 72 65 77 72 69 74 74  | ld.not.find.region.being.rewritt | 
| 92de0 |  65 6e 2e 22 29 29 0a 20 20 20 20 28 75 6e 6c 65    73 73 20 72 65 73 70 6f 6e 73 65 20 28 75 73 65  | en.")).....(unless.response.(use | 
| 92e00 |  72 2d 65 72 72 6f 72 20 22 4e 6f 20 4c 4c 4d 20    6f 75 74 70 75 74 20 61 76 61 69 6c 61 62 6c 65  | r-error."No.LLM.output.available | 
| 92e20 |  20 66 6f 72 20 74 68 69 73 20 72 65 77 72 69 74    65 2e 22 29 29 0a 20 20 20 20 6f 76 29 29 0a 0a  | .for.this.rewrite.")).....ov)).. | 
| 92e40 |  28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65    77 72 69 74 65 2d 70 72 65 70 61 72 65 2d 62 75  | (defun.gptel--rewrite-prepare-bu | 
| 92e60 |  66 66 65 72 20 28 6f 76 73 20 26 6f 70 74 69 6f    6e 61 6c 20 62 75 66 29 0a 20 20 22 50 72 65 70  | ffer.(ovs.&optional.buf)..."Prep | 
| 92e80 |  61 72 65 20 6e 65 77 20 62 75 66 66 65 72 20 77    69 74 68 20 4c 4c 4d 20 63 68 61 6e 67 65 73 20  | are.new.buffer.with.LLM.changes. | 
| 92ea0 |  61 70 70 6c 69 65 64 20 61 6e 64 20 72 65 74 75    72 6e 20 69 74 2e 0a 0a 54 68 69 73 20 69 73 20  | applied.and.return.it...This.is. | 
| 92ec0 |  75 73 65 64 20 66 6f 72 20 28 65 29 64 69 66 66    20 70 75 72 70 6f 73 65 73 2e 0a 0a 52 45 53 50  | used.for.(e)diff.purposes...RESP | 
| 92ee0 |  4f 4e 53 45 20 69 73 20 74 68 65 20 4c 4c 4d 20    72 65 73 70 6f 6e 73 65 2e 20 20 4f 56 53 20 61  | ONSE.is.the.LLM.response...OVS.a | 
| 92f00 |  72 65 20 74 68 65 20 6f 76 65 72 6c 61 79 73 20    73 70 65 63 69 66 79 69 6e 67 0a 74 68 65 20 63  | re.the.overlays.specifying.the.c | 
| 92f20 |  68 61 6e 67 65 64 20 72 65 67 69 6f 6e 73 2e 20    42 55 46 20 69 73 20 74 68 65 20 28 63 75 72 72  | hanged.regions..BUF.is.the.(curr | 
| 92f40 |  65 6e 74 29 20 62 75 66 66 65 72 2e 22 0a 20 20    28 73 65 74 71 20 62 75 66 20 28 6f 72 20 62 75  | ent).buffer."...(setq.buf.(or.bu | 
| 92f60 |  66 20 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 65    72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20  | f.(overlay-buffer.(or.(car-safe. | 
| 92f80 |  6f 76 73 29 20 6f 76 73 29 29 29 29 0a 20 20 28    77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66  | ovs).ovs))))...(with-current-buf | 
| 92fa0 |  66 65 72 20 62 75 66 0a 20 20 20 20 28 6c 65 74    20 28 28 70 6d 69 6e 20 28 70 6f 69 6e 74 2d 6d  | fer.buf.....(let.((pmin.(point-m | 
| 92fc0 |  69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    70 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 61 78 29  | in))...........(pmax.(point-max) | 
| 92fe0 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 70 74 20    20 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20  | )...........(pt...(point))...... | 
| 93000 |  20 20 20 20 20 3b 3b 20 28 6d 6f 64 65 20 6d 61    6a 6f 72 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20  | .....;;.(mode.major-mode)....... | 
| 93020 |  20 20 20 20 28 6e 65 77 62 75 66 20 28 67 65 74    2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22  | ....(newbuf.(get-buffer-create." | 
| 93040 |  2a 67 70 74 65 6c 2d 64 69 66 66 2a 22 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62  | *gptel-diff*"))...........(inhib | 
| 93060 |  69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 0a    20 20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62  | it-read-only.t)...........(inhib | 
| 93080 |  69 74 2d 6d 65 73 73 61 67 65 20 74 29 29 0a 20    20 20 20 20 20 28 73 61 76 65 2d 72 65 73 74 72  | it-message.t)).......(save-restr | 
| 930a0 |  69 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 28    77 69 64 65 6e 29 0a 20 20 20 20 20 20 20 20 28  | iction.........(widen).........( | 
| 930c0 |  77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66    66 65 72 20 6e 65 77 62 75 66 0a 20 20 20 20 20  | with-current-buffer.newbuf...... | 
| 930e0 |  20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66    65 72 29 0a 20 20 20 20 20 20 20 20 20 20 28 69  | .....(erase-buffer)...........(i | 
| 93100 |  6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 75 62    73 74 72 69 6e 67 20 62 75 66 29 29 29 0a 20 20  | nsert-buffer-substring.buf)))... | 
| 93120 |  20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e    74 2d 62 75 66 66 65 72 20 6e 65 77 62 75 66 0a  | ....(with-current-buffer.newbuf. | 
| 93140 |  20 20 20 20 20 20 20 20 28 6e 61 72 72 6f 77 2d    74 6f 2d 72 65 67 69 6f 6e 20 70 6d 69 6e 20 70  | ........(narrow-to-region.pmin.p | 
| 93160 |  6d 61 78 29 0a 20 20 20 20 20 20 20 20 28 67 6f    74 6f 2d 63 68 61 72 20 70 74 29 0a 20 20 20 20  | max).........(goto-char.pt)..... | 
| 93180 |  20 20 20 20 3b 3b 20 57 65 20 6d 6f 73 74 6c 79    20 6a 75 73 74 20 77 61 6e 74 20 66 6f 6e 74 2d  | ....;;.We.mostly.just.want.font- | 
| 931a0 |  6c 6f 63 6b 69 6e 67 0a 20 20 20 20 20 20 20 20    3b 3b 20 28 64 65 6c 61 79 2d 6d 6f 64 65 2d 68  | locking.........;;.(delay-mode-h | 
| 931c0 |  6f 6f 6b 73 20 28 66 75 6e 63 61 6c 6c 20 6d 6f    64 65 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20  | ooks.(funcall.mode)).........;;. | 
| 931e0 |  41 70 70 6c 79 20 74 68 65 20 63 68 61 6e 67 65    73 20 74 6f 20 74 68 65 20 6e 65 77 20 62 75 66  | Apply.the.changes.to.the.new.buf | 
| 93200 |  66 65 72 0a 20 20 20 20 20 20 20 20 28 73 61 76    65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20  | fer.........(save-excursion..... | 
| 93220 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65    77 72 69 74 65 2d 61 63 63 65 70 74 20 6f 76 73  | ......(gptel--rewrite-accept.ovs | 
| 93240 |  20 6e 65 77 62 75 66 29 29 29 0a 20 20 20 20 20    20 6e 65 77 62 75 66 29 29 29 0a 0a 3b 3b 20 2a  | .newbuf))).......newbuf)))..;;.* | 
| 93260 |  20 52 65 77 72 69 74 65 20 61 63 74 69 6f 6e 20    66 75 6e 63 74 69 6f 6e 73 0a 0a 28 64 65 66 75  | .Rewrite.action.functions..(defu | 
| 93280 |  6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65    2d 72 65 6a 65 63 74 20 28 26 6f 70 74 69 6f 6e  | n.gptel--rewrite-reject.(&option | 
| 932a0 |  61 6c 20 6f 76 73 29 0a 20 20 22 43 6c 65 61 72    20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73  | al.ovs)..."Clear.pending.LLM.res | 
| 932c0 |  70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 6f 72    20 61 74 20 70 6f 69 6e 74 2e 22 0a 20 20 28 69  | ponses.in.OVS.or.at.point."...(i | 
| 932e0 |  6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74    20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65  | nteractive.(list.(gptel--rewrite | 
| 93300 |  2d 6f 76 65 72 6c 61 79 2d 61 74 29 29 29 0a 20    20 28 64 6f 6c 69 73 74 20 28 6f 76 20 28 65 6e  | -overlay-at)))...(dolist.(ov.(en | 
| 93320 |  73 75 72 65 2d 6c 69 73 74 20 6f 76 73 29 29 0a    20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d  | sure-list.ovs)).....(setq.gptel- | 
| 93340 |  2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79    73 20 28 64 65 6c 71 20 6f 76 20 67 70 74 65 6c  | -rewrite-overlays.(delq.ov.gptel | 
| 93360 |  2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61    79 73 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65  | --rewrite-overlays)).....(delete | 
| 93380 |  2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 0a 20 20    28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 2d 72  | -overlay.ov))...(unless.gptel--r | 
| 933a0 |  65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 0a    20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b  | ewrite-overlays.....(remove-hook | 
| 933c0 |  20 27 65 6c 64 6f 63 2d 64 6f 63 75 6d 65 6e 74    61 74 69 6f 6e 2d 66 75 6e 63 74 69 6f 6e 73 20  | .'eldoc-documentation-functions. | 
| 933e0 |  27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d    6b 65 79 2d 68 65 6c 70 20 27 6c 6f 63 61 6c 29  | 'gptel--rewrite-key-help.'local) | 
| 93400 |  29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 43 6c    65 61 72 65 64 20 70 65 6e 64 69 6e 67 20 4c 4c  | )...(message."Cleared.pending.LL | 
| 93420 |  4d 20 72 65 73 70 6f 6e 73 65 28 73 29 2e 22 29    29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d  | M.response(s)."))..(defun.gptel- | 
| 93440 |  2d 72 65 77 72 69 74 65 2d 61 63 63 65 70 74 20    28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 20 62  | -rewrite-accept.(&optional.ovs.b | 
| 93460 |  75 66 29 0a 20 20 22 41 70 70 6c 79 20 70 65 6e    64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e 73  | uf)..."Apply.pending.LLM.respons | 
| 93480 |  65 73 20 69 6e 20 4f 56 53 20 6f 72 20 61 74 20    70 6f 69 6e 74 2e 0a 0a 42 55 46 20 69 73 20 74  | es.in.OVS.or.at.point...BUF.is.t | 
| 934a0 |  68 65 20 62 75 66 66 65 72 20 74 6f 20 6d 6f 64    69 66 79 2c 20 64 65 66 61 75 6c 74 73 20 74 6f  | he.buffer.to.modify,.defaults.to | 
| 934c0 |  20 74 68 65 20 6f 76 65 72 6c 61 79 20 62 75 66    66 65 72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63  | .the.overlay.buffer."...(interac | 
| 934e0 |  74 69 76 65 20 28 6c 69 73 74 20 28 67 70 74 65    6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c  | tive.(list.(gptel--rewrite-overl | 
| 93500 |  61 79 2d 61 74 29 29 29 0a 20 20 28 77 68 65 6e    2d 6c 65 74 2a 20 28 28 6f 76 2d 62 75 66 20 28  | ay-at)))...(when-let*.((ov-buf.( | 
| 93520 |  6f 76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 28    6f 72 20 28 63 61 72 2d 73 61 66 65 20 6f 76 73  | overlay-buffer.(or.(car-safe.ovs | 
| 93540 |  29 20 6f 76 73 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 62 75 66 20 28 6f 72 20  | ).ovs)))...............(buf.(or. | 
| 93560 |  62 75 66 20 6f 76 2d 62 75 66 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 28 62 75 66  | buf.ov-buf))...............((buf | 
| 93580 |  66 65 72 2d 6c 69 76 65 2d 70 20 62 75 66 29 29    29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72  | fer-live-p.buf))).....(with-curr | 
| 935a0 |  65 6e 74 2d 62 75 66 66 65 72 20 6f 76 2d 62 75    66 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70  | ent-buffer.ov-buf.......(cl-loop | 
| 935c0 |  20 66 6f 72 20 6f 76 20 69 6e 20 28 65 6e 73 75    72 65 2d 6c 69 73 74 20 6f 76 73 29 0a 20 20 20  | .for.ov.in.(ensure-list.ovs).... | 
| 935e0 |  20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20    6f 76 2d 62 65 67 20 3d 20 28 6f 76 65 72 6c 61  | ............for.ov-beg.=.(overla | 
| 93600 |  79 2d 73 74 61 72 74 20 6f 76 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6f  | y-start.ov)................for.o | 
| 93620 |  76 2d 65 6e 64 20 3d 20 28 6f 76 65 72 6c 61 79    2d 65 6e 64 20 6f 76 29 0a 20 20 20 20 20 20 20  | v-end.=.(overlay-end.ov)........ | 
| 93640 |  20 20 20 20 20 20 20 20 66 6f 72 20 72 65 73 70    6f 6e 73 65 20 3d 20 28 6f 76 65 72 6c 61 79 2d  | ........for.response.=.(overlay- | 
| 93660 |  67 65 74 20 6f 76 20 27 67 70 74 65 6c 2d 72 65    77 72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20  | get.ov.'gptel-rewrite).......... | 
| 93680 |  20 20 20 20 20 20 64 6f 20 28 6f 76 65 72 6c 61    79 2d 70 75 74 20 6f 76 20 27 62 65 66 6f 72 65  | ......do.(overlay-put.ov.'before | 
| 936a0 |  2d 73 74 72 69 6e 67 20 6e 69 6c 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74  | -string.nil)................(wit | 
| 936c0 |  68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72    20 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20  | h-current-buffer.buf............ | 
| 936e0 |  20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72    20 6f 76 2d 62 65 67 29 0a 20 20 20 20 20 20 20  | ......(goto-char.ov-beg)........ | 
| 93700 |  20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74    65 2d 72 65 67 69 6f 6e 20 6f 76 2d 62 65 67 20  | ..........(delete-region.ov-beg. | 
| 93720 |  6f 76 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74  | ov-end)..................(insert | 
| 93740 |  20 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20    20 20 28 6d 65 73 73 61 67 65 20 22 52 65 70 6c  | .response)))).....(message."Repl | 
| 93760 |  61 63 65 64 20 72 65 67 69 6f 6e 28 73 29 20 77    69 74 68 20 4c 4c 4d 20 6f 75 74 70 75 74 20 69  | aced.region(s).with.LLM.output.i | 
| 93780 |  6e 20 62 75 66 66 65 72 3a 20 25 73 2e 22 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66  | n.buffer:.%s."..............(buf | 
| 937a0 |  66 65 72 2d 6e 61 6d 65 20 6f 76 2d 62 75 66 29    29 29 29 0a 0a 28 64 65 66 61 6c 69 61 73 20 27  | fer-name.ov-buf))))..(defalias.' | 
| 937c0 |  67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 69    74 65 72 61 74 65 20 27 67 70 74 65 6c 2d 72 65  | gptel--rewrite-iterate.'gptel-re | 
| 937e0 |  77 72 69 74 65 0a 20 20 22 49 74 65 72 61 74 65    20 6f 6e 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20  | write..."Iterate.on.pending.LLM. | 
| 93800 |  72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e    74 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74  | response.at.point.")..(defun.gpt | 
| 93820 |  65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 66 66    20 28 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 73 20  | el--rewrite-diff.(&optional.ovs. | 
| 93840 |  73 77 69 74 63 68 65 73 29 0a 20 20 22 44 69 66    66 20 70 65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65  | switches)..."Diff.pending.LLM.re | 
| 93860 |  73 70 6f 6e 73 65 73 20 69 6e 20 4f 56 53 20 6f    72 20 61 74 20 70 6f 69 6e 74 2e 22 0a 20 20 28  | sponses.in.OVS.or.at.point."...( | 
| 93880 |  69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73    74 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74  | interactive.(list.(gptel--rewrit | 
| 938a0 |  65 2d 6f 76 65 72 6c 61 79 2d 61 74 29 29 29 0a    20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f  | e-overlay-at)))...(when-let*.((o | 
| 938c0 |  76 2d 62 75 66 20 28 6f 76 65 72 6c 61 79 2d 62    75 66 66 65 72 20 28 6f 72 20 28 63 61 72 2d 73  | v-buf.(overlay-buffer.(or.(car-s | 
| 938e0 |  61 66 65 20 6f 76 73 29 20 6f 76 73 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28  | afe.ovs).ovs)))...............(( | 
| 93900 |  62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 6f 76    2d 62 75 66 29 29 29 0a 20 20 20 20 28 72 65 71  | buffer-live-p.ov-buf))).....(req | 
| 93920 |  75 69 72 65 20 27 64 69 66 66 29 0a 20 20 20 20    28 6c 65 74 2a 20 28 28 6e 65 77 62 75 66 20 28  | uire.'diff).....(let*.((newbuf.( | 
| 93940 |  67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 70    72 65 70 61 72 65 2d 62 75 66 66 65 72 20 6f 76  | gptel--rewrite-prepare-buffer.ov | 
| 93960 |  73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28    64 69 66 66 2d 62 75 66 20 28 64 69 66 66 2d 6e  | s))............(diff-buf.(diff-n | 
| 93980 |  6f 2d 73 65 6c 65 63 74 20 6f 76 2d 62 75 66 20    6e 65 77 62 75 66 20 73 77 69 74 63 68 65 73 29  | o-select.ov-buf.newbuf.switches) | 
| 939a0 |  29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63    75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 64 69  | )).......(with-current-buffer.di | 
| 939c0 |  66 66 2d 62 75 66 0a 20 20 20 20 20 20 20 20 28    73 65 74 71 2d 6c 6f 63 61 6c 20 64 69 66 66 2d  | ff-buf.........(setq-local.diff- | 
| 939e0 |  6a 75 6d 70 2d 74 6f 2d 6f 6c 64 2d 66 69 6c 65    20 74 29 29 0a 20 20 20 20 20 20 28 64 69 73 70  | jump-to-old-file.t)).......(disp | 
| 93a00 |  6c 61 79 2d 62 75 66 66 65 72 20 64 69 66 66 2d    62 75 66 29 29 29 29 0a 0a 28 64 65 66 75 6e 20  | lay-buffer.diff-buf))))..(defun. | 
| 93a20 |  67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 65    64 69 66 66 20 28 26 6f 70 74 69 6f 6e 61 6c 20  | gptel--rewrite-ediff.(&optional. | 
| 93a40 |  6f 76 73 29 0a 20 20 22 45 64 69 66 66 20 70 65    6e 64 69 6e 67 20 4c 4c 4d 20 72 65 73 70 6f 6e  | ovs)..."Ediff.pending.LLM.respon | 
| 93a60 |  73 65 73 20 69 6e 20 4f 56 53 20 6f 72 20 61 74    20 70 6f 69 6e 74 2e 22 0a 20 20 28 69 6e 74 65  | ses.in.OVS.or.at.point."...(inte | 
| 93a80 |  72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 67    70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76  | ractive.(list.(gptel--rewrite-ov | 
| 93aa0 |  65 72 6c 61 79 2d 61 74 29 29 29 0a 20 20 28 77    68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 62 75  | erlay-at)))...(when-let*.((ov-bu | 
| 93ac0 |  66 20 28 6f 76 65 72 6c 61 79 2d 62 75 66 66 65    72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20  | f.(overlay-buffer.(or.(car-safe. | 
| 93ae0 |  6f 76 73 29 20 6f 76 73 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 28 62 75 66 66  | ovs).ovs)))...............((buff | 
| 93b00 |  65 72 2d 6c 69 76 65 2d 70 20 6f 76 2d 62 75 66    29 29 29 0a 20 20 20 20 28 6c 65 74 72 65 63 20  | er-live-p.ov-buf))).....(letrec. | 
| 93b20 |  28 28 6e 65 77 62 75 66 20 28 67 70 74 65 6c 2d    2d 72 65 77 72 69 74 65 2d 70 72 65 70 61 72 65  | ((newbuf.(gptel--rewrite-prepare | 
| 93b40 |  2d 62 75 66 66 65 72 20 6f 76 73 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 63 77 63 20  | -buffer.ovs))..............(cwc. | 
| 93b60 |  28 63 75 72 72 65 6e 74 2d 77 69 6e 64 6f 77 2d    63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 29 0a  | (current-window-configuration)). | 
| 93b80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 69    64 65 73 68 6f 77 0a 20 20 20 20 20 20 20 20 20  | .............(hideshow.......... | 
| 93ba0 |  20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 6f    70 74 69 6f 6e 61 6c 20 72 65 73 74 6f 72 65 29  | .....(lambda.(&optional.restore) | 
| 93bc0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 64 6f 6c 69 73 74 20 28 6f 76 20 28 65 6e  | .................(dolist.(ov.(en | 
| 93be0 |  73 75 72 65 2d 6c 69 73 74 20 6f 76 73 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | sure-list.ovs))................. | 
| 93c00 |  20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f    76 65 72 6c 61 79 2d 62 75 66 66 65 72 20 6f 76  | ..(when-let*.((overlay-buffer.ov | 
| 93c20 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 69  | )).....................(let.((di | 
| 93c40 |  73 70 20 28 6f 76 65 72 6c 61 79 2d 67 65 74 20    6f 76 20 27 64 69 73 70 6c 61 79 29 29 0a 20 20  | sp.(overlay-get.ov.'display))... | 
| 93c60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 73 74 6f 72 65 64 20  | ........................(stored. | 
| 93c80 |  28 6f 76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20    27 67 70 74 65 6c 2d 2d 65 64 69 66 66 29 29 29  | (overlay-get.ov.'gptel--ediff))) | 
| 93ca0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d  | .......................(overlay- | 
| 93cc0 |  70 75 74 20 6f 76 20 27 64 69 73 70 6c 61 79 20    28 61 6e 64 20 72 65 73 74 6f 72 65 20 73 74 6f  | put.ov.'display.(and.restore.sto | 
| 93ce0 |  72 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65  | red)).......................(ove | 
| 93d00 |  72 6c 61 79 2d 70 75 74 20 6f 76 20 27 67 70 74    65 6c 2d 2d 65 64 69 66 66 20 28 75 6e 6c 65 73  | rlay-put.ov.'gptel--ediff.(unles | 
| 93d20 |  73 20 72 65 73 74 6f 72 65 20 64 69 73 70 29 29    29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | s.restore.disp)))))))........... | 
| 93d40 |  20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 66 66    2d 72 65 73 74 6f 72 65 0a 20 20 20 20 20 20 20  | ...(gptel--ediff-restore........ | 
| 93d60 |  20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .......(lambda.()............... | 
| 93d80 |  20 20 28 77 68 65 6e 20 28 77 69 6e 64 6f 77 2d    63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2d 70 20  | ..(when.(window-configuration-p. | 
| 93da0 |  63 77 63 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 73 65 74 2d 77 69 6e 64  | cwc)...................(set-wind | 
| 93dc0 |  6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e    20 63 77 63 29 29 0a 20 20 20 20 20 20 20 20 20  | ow-configuration.cwc)).......... | 
| 93de0 |  20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20    68 69 64 65 73 68 6f 77 20 27 72 65 73 74 6f 72  | .......(funcall.hideshow.'restor | 
| 93e00 |  65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20  | e).................(remove-hook. | 
| 93e20 |  27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b    20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65  | 'ediff-quit-hook.gptel--ediff-re | 
| 93e40 |  73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 20 20    28 66 75 6e 63 61 6c 6c 20 68 69 64 65 73 68 6f  | store)))).......(funcall.hidesho | 
| 93e60 |  77 29 0a 20 20 20 20 20 20 28 61 64 64 2d 68 6f    6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68  | w).......(add-hook.'ediff-quit-h | 
| 93e80 |  6f 6f 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 66    2d 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20  | ook.gptel--ediff-restore)....... | 
| 93ea0 |  28 65 64 69 66 66 2d 62 75 66 66 65 72 73 20 6f    76 2d 62 75 66 20 6e 65 77 62 75 66 29 29 29 29  | (ediff-buffers.ov-buf.newbuf)))) | 
| 93ec0 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d    72 65 77 72 69 74 65 2d 6d 65 72 67 65 20 28 26  | ..(defun.gptel--rewrite-merge.(& | 
| 93ee0 |  6f 70 74 69 6f 6e 61 6c 20 6f 76 73 29 0a 20 20    22 49 6e 73 65 72 74 20 70 65 6e 64 69 6e 67 20  | optional.ovs)..."Insert.pending. | 
| 93f00 |  4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 69 6e    20 4f 56 53 20 61 73 20 6d 65 72 67 65 20 63 6f  | LLM.responses.in.OVS.as.merge.co | 
| 93f20 |  6e 66 6c 69 63 74 73 2e 22 0a 20 20 28 69 6e 74    65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28  | nflicts."...(interactive.(list.( | 
| 93f40 |  67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6f    76 65 72 6c 61 79 2d 61 74 29 29 29 0a 20 20 28  | gptel--rewrite-overlay-at)))...( | 
| 93f60 |  77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 62    75 66 20 28 6f 76 65 72 6c 61 79 2d 62 75 66 66  | when-let*.((ov-buf.(overlay-buff | 
| 93f80 |  65 72 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65    20 6f 76 73 29 20 6f 76 73 29 29 29 0a 20 20 20  | er.(or.(car-safe.ovs).ovs))).... | 
| 93fa0 |  20 20 20 20 20 20 20 20 20 20 20 28 28 62 75 66    66 65 72 2d 6c 69 76 65 2d 70 20 6f 76 2d 62 75  | ...........((buffer-live-p.ov-bu | 
| 93fc0 |  66 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63    75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 6f 76  | f))).....(with-current-buffer.ov | 
| 93fe0 |  2d 62 75 66 0a 20 20 20 20 20 20 28 6c 65 74 20    28 28 63 68 61 6e 67 65 64 29 29 0a 20 20 20 20  | -buf.......(let.((changed))..... | 
| 94000 |  20 20 20 20 28 64 6f 6c 69 73 74 20 28 6f 76 20    28 65 6e 73 75 72 65 2d 6c 69 73 74 20 6f 76 73  | ....(dolist.(ov.(ensure-list.ovs | 
| 94020 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61    76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20  | ))...........(save-excursion.... | 
| 94040 |  20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c    65 74 2a 20 28 28 6e 65 77 2d 73 74 72 20 28 6f  | .........(when-let*.((new-str.(o | 
| 94060 |  76 65 72 6c 61 79 2d 67 65 74 20 6f 76 20 27 67    70 74 65 6c 2d 72 65 77 72 69 74 65 29 29 29 0a  | verlay-get.ov.'gptel-rewrite))). | 
| 94080 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 49 6e 73 65 72 74 20 6d 65 72 67 65 0a 20 20  | ..............;;.Insert.merge... | 
| 940a0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74    6f 2d 63 68 61 72 20 28 6f 76 65 72 6c 61 79 2d  | ............(goto-char.(overlay- | 
| 940c0 |  73 74 61 72 74 20 6f 76 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73  | start.ov))...............(unless | 
| 940e0 |  20 28 62 6f 6c 70 29 20 28 69 6e 73 65 72 74 20    22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20  | .(bolp).(insert."\n")).......... | 
| 94100 |  20 20 20 20 20 28 69 6e 73 65 72 74 2d 62 65 66    6f 72 65 2d 6d 61 72 6b 65 72 73 20 22 3c 3c 3c  | .....(insert-before-markers."<<< | 
| 94120 |  3c 3c 3c 3c 20 6f 72 69 67 69 6e 61 6c 5c 6e 22    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | <<<<.original\n")............... | 
| 94140 |  28 67 6f 74 6f 2d 63 68 61 72 20 28 6f 76 65 72    6c 61 79 2d 65 6e 64 20 6f 76 29 29 0a 20 20 20  | (goto-char.(overlay-end.ov)).... | 
| 94160 |  20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65    73 73 20 28 62 6f 6c 70 29 20 28 69 6e 73 65 72  | ...........(unless.(bolp).(inser | 
| 94180 |  74 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 69 6e 73 65 72 74 0a 20  | t."\n"))...............(insert.. | 
| 941a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3d    3d 3d 3d 3d 3d 3d 5c 6e 22 20 6e 65 77 2d 73 74  | .............."=======\n".new-st | 
| 941c0 |  72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 5c 6e 3e 3e 3e 3e 3e 3e 3e 20 22 20 28 67  | r................"\n>>>>>>>.".(g | 
| 941e0 |  70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d    65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29  | ptel-backend-name.gptel-backend) | 
| 94200 |  20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 73 65 74 71 20 63 68 61 6e 67  | ."\n")...............(setq.chang | 
| 94220 |  65 64 20 74 29 29 29 29 0a 20 20 20 20 20 20 20    20 28 77 68 65 6e 20 63 68 61 6e 67 65 64 20 28  | ed.t)))).........(when.changed.( | 
| 94240 |  73 6d 65 72 67 65 2d 6d 6f 64 65 20 31 29 29 29    0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72  | smerge-mode.1))).......(gptel--r | 
| 94260 |  65 77 72 69 74 65 2d 72 65 6a 65 63 74 20 6f 76    73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | ewrite-reject.ovs))))..(defun.gp | 
| 94280 |  74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 73    70 61 74 63 68 20 28 26 6f 70 74 69 6f 6e 61 6c  | tel--rewrite-dispatch.(&optional | 
| 942a0 |  20 6f 76 20 63 69 29 0a 20 20 22 44 69 73 70 61    74 63 68 20 61 63 74 69 6f 6e 73 20 66 6f 72 20  | .ov.ci)..."Dispatch.actions.for. | 
| 942c0 |  67 70 74 65 6c 20 72 65 77 72 69 74 65 73 2e 0a    0a 4f 56 20 69 73 20 74 68 65 20 72 65 77 72 69  | gptel.rewrites...OV.is.the.rewri | 
| 942e0 |  74 65 20 6f 76 65 72 6c 61 79 2c 20 43 49 20 69    73 20 74 72 75 65 20 66 6f 72 20 69 6e 74 65 72  | te.overlay,.CI.is.true.for.inter | 
| 94300 |  61 63 74 69 76 65 20 63 61 6c 6c 73 2e 22 0a 20    20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c  | active.calls."...(interactive.(l | 
| 94320 |  69 73 74 20 28 67 70 74 65 6c 2d 2d 72 65 77 72    69 74 65 2d 6f 76 65 72 6c 61 79 2d 61 74 29 20  | ist.(gptel--rewrite-overlay-at). | 
| 94340 |  74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 68 6f    69 63 65 29 29 0a 20 20 20 20 28 75 6e 77 69 6e  | t))...(let.((choice)).....(unwin | 
| 94360 |  64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20    20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 63  | d-protect.........(pcase-let.((c | 
| 94380 |  68 6f 69 63 65 73 20 27 28 28 3f 61 20 22 61 63    63 65 70 74 22 29 20 28 3f 6b 20 22 72 65 6a 65  | hoices.'((?a."accept").(?k."reje | 
| 943a0 |  63 74 22 29 20 28 3f 72 20 22 69 74 65 72 61 74    65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ct").(?r."iterate")............. | 
| 943c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 3f 6d 20 22 6d 65 72 67 65 22 29 20  | ...................(?m."merge"). | 
| 943e0 |  28 3f 64 20 22 64 69 66 66 22 29 20 28 3f 65 20    22 65 64 69 66 66 22 29 29 29 0a 20 20 20 20 20  | (?d."diff").(?e."ediff")))...... | 
| 94400 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    68 69 6e 74 2d 73 74 72 20 28 63 6f 6e 63 61 74  | ...............(hint-str.(concat | 
| 94420 |  20 22 5b 22 20 28 67 70 74 65 6c 2d 2d 6d 6f 64    65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 6d 6f  | ."[".(gptel--model-name.gptel-mo | 
| 94440 |  64 65 6c 29 20 22 5d 5c 6e 22 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61 79  | del)."]\n")))...........(overlay | 
| 94460 |  2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20    6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e  | -put............ov.'before-strin | 
| 94480 |  67 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20  | g............(concat............ | 
| 944a0 |  20 28 75 6e 6c 65 73 73 20 28 65 71 20 28 63 68    61 72 2d 62 65 66 6f 72 65 20 28 6f 76 65 72 6c  | .(unless.(eq.(char-before.(overl | 
| 944c0 |  61 79 2d 73 74 61 72 74 20 6f 76 29 29 20 3f 5c    6e 29 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20  | ay-start.ov)).?\n)."\n")........ | 
| 944e0 |  20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65    20 22 52 45 57 52 49 54 45 20 52 45 41 44 59 3a  | .....(propertize."REWRITE.READY: | 
| 94500 |  20 22 20 27 66 61 63 65 20 27 73 75 63 63 65 73    73 29 0a 09 20 20 20 20 28 77 68 65 6e 20 28 66  | .".'face.'success)......(when.(f | 
| 94520 |  62 6f 75 6e 64 70 20 23 27 72 6d 63 2d 2d 61 64    64 2d 6b 65 79 2d 64 65 73 63 72 69 70 74 69 6f  | boundp.#'rmc--add-key-descriptio | 
| 94540 |  6e 29 20 20 3b 20 69 6e 74 72 6f 64 75 63 65 64    20 69 6e 20 45 6d 61 63 73 20 32 39 0a 20 20 20  | n)..;.introduced.in.Emacs.29.... | 
| 94560 |  20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63    6f 6e 63 61 74 20 28 6c 61 6d 62 64 61 20 28 65  | ...........(mapconcat.(lambda.(e | 
| 94580 |  29 20 28 63 64 72 20 65 29 29 20 28 6d 61 70 63    61 72 20 23 27 72 6d 63 2d 2d 61 64 64 2d 6b 65  | ).(cdr.e)).(mapcar.#'rmc--add-ke | 
| 945a0 |  79 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 63 68    6f 69 63 65 73 29 20 22 2c 20 22 29 29 0a 20 20  | y-description.choices).",."))... | 
| 945c0 |  20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65    72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20  | ..........(propertize........... | 
| 945e0 |  20 20 20 22 20 22 20 27 64 69 73 70 6c 61 79 20    60 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74  | ...".".'display.`(space.:align-t | 
| 94600 |  6f 20 28 2d 20 72 69 67 68 74 20 2c 28 31 2b 20    28 6c 65 6e 67 74 68 20 68 69 6e 74 2d 73 74 72  | o.(-.right.,(1+.(length.hint-str | 
| 94620 |  29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 68 69  | ))))).............(propertize.hi | 
| 94640 |  6e 74 2d 73 74 72 20 27 66 61 63 65 20 27 73 75    63 63 65 73 73 29 29 29 0a 20 20 20 20 20 20 20  | nt-str.'face.'success)))........ | 
| 94660 |  20 20 20 28 73 65 74 71 20 63 68 6f 69 63 65 20    28 72 65 61 64 2d 6d 75 6c 74 69 70 6c 65 2d 63  | ...(setq.choice.(read-multiple-c | 
| 94680 |  68 6f 69 63 65 20 22 41 63 74 69 6f 6e 3a 20 22    20 63 68 6f 69 63 65 73 29 29 29 0a 20 20 20 20  | hoice."Action:.".choices)))..... | 
| 946a0 |  20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f    76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e 67  | ..(overlay-put.ov.'before-string | 
| 946c0 |  20 6e 69 6c 29 29 0a 20 20 20 20 28 69 66 20 63    69 0a 20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d  | .nil)).....(if.ci.........(call- | 
| 946e0 |  69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 28 69    6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 20 22 67  | interactively.(intern.(concat."g | 
| 94700 |  70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 22 20    28 63 61 64 72 20 63 68 6f 69 63 65 29 29 29 29  | ptel--rewrite-".(cadr.choice)))) | 
| 94720 |  0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20    28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 20  | .......(funcall.(intern.(concat. | 
| 94740 |  22 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d    22 20 28 63 61 64 72 20 63 68 6f 69 63 65 29 29  | "gptel--rewrite-".(cadr.choice)) | 
| 94760 |  29 20 6f 76 29 29 29 29 0a 0a 28 64 65 66 75 6e    20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d  | ).ov))))..(defun.gptel--rewrite- | 
| 94780 |  63 61 6c 6c 62 61 63 6b 20 28 72 65 73 70 6f 6e    73 65 20 69 6e 66 6f 29 0a 20 20 22 43 61 6c 6c  | callback.(response.info)..."Call | 
| 947a0 |  62 61 63 6b 20 66 6f 72 20 67 70 74 65 6c 20 72    65 77 72 69 74 65 20 61 63 74 69 6f 6e 73 2e 0a  | back.for.gptel.rewrite.actions.. | 
| 947c0 |  0a 53 68 6f 77 20 74 68 65 20 72 65 77 72 69 74    65 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 6f  | .Show.the.rewrite.result.in.an.o | 
| 947e0 |  76 65 72 6c 61 79 20 6f 76 65 72 20 74 68 65 20    6f 72 69 67 69 6e 61 6c 20 74 65 78 74 2c 20 61  | verlay.over.the.original.text,.a | 
| 94800 |  6e 64 0a 73 65 74 20 75 70 20 64 69 73 70 61 74    63 68 20 61 63 74 69 6f 6e 73 2e 0a 0a 52 45 53  | nd.set.up.dispatch.actions...RES | 
| 94820 |  50 4f 4e 53 45 20 69 73 20 74 68 65 20 72 65 73    70 6f 6e 73 65 20 72 65 63 65 69 76 65 64 2e 20  | PONSE.is.the.response.received.. | 
| 94840 |  20 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20    74 20 28 74 6f 20 69 6e 64 69 63 61 74 65 0a 73  | .It.may.also.be.t.(to.indicate.s | 
| 94860 |  75 63 63 65 73 73 29 20 6e 69 6c 20 28 74 6f 20    69 6e 64 69 63 61 74 65 20 66 61 69 6c 75 72 65  | uccess).nil.(to.indicate.failure | 
| 94880 |  29 2c 20 6f 72 20 74 68 65 20 73 79 6d 62 6f 6c    20 60 61 62 6f 72 74 27 2e 0a 0a 49 4e 46 4f 20  | ),.or.the.symbol.`abort'...INFO. | 
| 948a0 |  69 73 20 74 68 65 20 61 73 79 6e 63 20 63 6f 6d    6d 75 6e 69 63 61 74 69 6f 6e 20 63 68 61 6e 6e  | is.the.async.communication.chann | 
| 948c0 |  65 6c 20 66 6f 72 20 74 68 65 20 72 65 77 72 69    74 65 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28  | el.for.the.rewrite.request."...( | 
| 948e0 |  77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f 76 2d 61    6e 64 2d 62 75 66 20 28 70 6c 69 73 74 2d 67 65  | when-let*.((ov-and-buf.(plist-ge | 
| 94900 |  74 20 69 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.info.:context))............... | 
| 94920 |  28 6f 76 20 28 63 61 72 20 6f 76 2d 61 6e 64 2d    62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20  | (ov.(car.ov-and-buf))........... | 
| 94940 |  20 20 20 20 28 70 72 6f 63 2d 62 75 66 20 28 63    64 72 20 6f 76 2d 61 6e 64 2d 62 75 66 29 29 0a  | ....(proc-buf.(cdr.ov-and-buf)). | 
| 94960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62    75 66 20 28 6f 76 65 72 6c 61 79 2d 62 75 66 66  | ..............(buf.(overlay-buff | 
| 94980 |  65 72 20 6f 76 29 29 29 0a 20 20 20 20 28 63 6f    6e 64 0a 20 20 20 20 20 28 28 73 74 72 69 6e 67  | er.ov))).....(cond......((string | 
| 949a0 |  70 20 72 65 73 70 6f 6e 73 65 29 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3b 70 61 72 74  | p.response)................;part | 
| 949c0 |  69 61 6c 20 6f 72 20 66 75 6c 6c 79 20 73 75 63    63 65 73 73 66 75 6c 20 72 65 73 75 6c 74 0a 20  | ial.or.fully.successful.result.. | 
| 949e0 |  20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65    6e 74 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62  | .....(with-current-buffer.proc-b | 
| 94a00 |  75 66 20 20 20 20 20 3b 61 75 78 69 6c 69 61 72    79 20 62 75 66 66 65 72 2c 20 69 6e 73 65 72 74  | uf.....;auxiliary.buffer,.insert | 
| 94a20 |  20 74 65 78 74 20 68 65 72 65 20 61 6e 64 20 63    6f 70 79 20 74 6f 20 6f 76 65 72 6c 61 79 0a 20  | .text.here.and.copy.to.overlay.. | 
| 94a40 |  20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e    68 69 62 69 74 2d 6d 6f 64 69 66 69 63 61 74 69  | .......(let.((inhibit-modificati | 
| 94a60 |  6f 6e 2d 68 6f 6f 6b 73 20 6e 69 6c 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 68  | on-hooks.nil)...............(inh | 
| 94a80 |  69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74    29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68  | ibit-read-only.t))...........(wh | 
| 94aa0 |  65 6e 20 28 3d 20 28 62 75 66 66 65 72 2d 73 69    7a 65 29 20 30 29 0a 20 20 20 20 20 20 20 20 20  | en.(=.(buffer-size).0).......... | 
| 94ac0 |  20 20 20 28 62 75 66 66 65 72 2d 64 69 73 61 62    6c 65 2d 75 6e 64 6f 29 0a 20 20 20 20 20 20 20  | ...(buffer-disable-undo)........ | 
| 94ae0 |  20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75    74 20 6f 76 20 27 67 70 74 65 6c 2d 72 65 77 72  | .....(overlay-put.ov.'gptel-rewr | 
| 94b00 |  69 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 28 69 6e 73 65 72 74 2d 62 75 66  | ite.nil).............(insert-buf | 
| 94b20 |  66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 62 75    66 20 28 6f 76 65 72 6c 61 79 2d 73 74 61 72 74  | fer-substring.buf.(overlay-start | 
| 94b40 |  20 6f 76 29 20 28 6f 76 65 72 6c 61 79 2d 65 6e    64 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 20  | .ov).(overlay-end.ov)).......... | 
| 94b60 |  20 20 20 28 77 68 65 6e 20 28 65 71 20 28 63 68    61 72 2d 62 65 66 6f 72 65 20 28 70 6f 69 6e 74  | ...(when.(eq.(char-before.(point | 
| 94b80 |  2d 6d 61 78 29 29 20 3f 5c 6e 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | -max)).?\n)...............(plist | 
| 94ba0 |  2d 70 75 74 20 69 6e 66 6f 20 3a 6e 65 77 6c 69    6e 65 20 74 29 29 0a 20 20 20 20 20 20 20 20 20  | -put.info.:newline.t)).......... | 
| 94bc0 |  20 20 20 28 73 65 74 71 20 6d 61 6a 6f 72 2d 6d    6f 64 65 20 28 62 75 66 66 65 72 2d 6c 6f 63 61  | ...(setq.major-mode.(buffer-loca | 
| 94be0 |  6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72 2d 6d    6f 64 65 20 62 75 66 29 29 20 3b 44 6f 6e 27 74  | l-value.'major-mode.buf)).;Don't | 
| 94c00 |  20 74 75 72 6e 20 6f 6e 20 6d 61 6a 6f 72 2d 6d    6f 64 65 20 28 23 37 33 30 2c 20 23 37 32 32 29  | .turn.on.major-mode.(#730,.#722) | 
| 94c20 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64    64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65  | .............(add-text-propertie | 
| 94c40 |  73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70    6f 69 6e 74 2d 6d 61 78 29 20 27 28 66 61 63 65  | s.(point-min).(point-max).'(face | 
| 94c60 |  20 73 68 61 64 6f 77 20 66 6f 6e 74 2d 6c 6f 63    6b 2d 66 61 63 65 20 73 68 61 64 6f 77 29 29 0a  | .shadow.font-lock-face.shadow)). | 
| 94c80 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74    6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69  | ............(goto-char.(point-mi | 
| 94ca0 |  6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 29  | n)))...........(insert.response) | 
| 94cc0 |  0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65    73 73 20 28 65 6f 62 70 29 20 28 69 67 6e 6f 72  | ...........(unless.(eobp).(ignor | 
| 94ce0 |  65 2d 65 72 72 6f 72 73 20 28 64 65 6c 65 74 65    2d 63 68 61 72 20 28 6c 65 6e 67 74 68 20 72 65  | e-errors.(delete-char.(length.re | 
| 94d00 |  73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d  | sponse))))...........(font-lock- | 
| 94d20 |  65 6e 73 75 72 65 29 0a 20 20 20 20 20 20 20 20    20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f  | ensure)...........(overlay-put.o | 
| 94d40 |  76 20 27 64 69 73 70 6c 61 79 20 28 62 75 66 66    65 72 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20  | v.'display.(buffer-string))))... | 
| 94d60 |  20 20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c 69    73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 72  | ....(unless.(plist-get.info.:str | 
| 94d80 |  65 61 6d 29 20 28 67 70 74 65 6c 2d 2d 72 65 77    72 69 74 65 2d 63 61 6c 6c 62 61 63 6b 20 74 20  | eam).(gptel--rewrite-callback.t. | 
| 94da0 |  69 6e 66 6f 29 29 29 0a 20 20 20 20 20 28 28 65    71 20 72 65 73 70 6f 6e 73 65 20 27 61 62 6f 72  | info)))......((eq.response.'abor | 
| 94dc0 |  74 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 72 65 71 75 65 73 74 20 61 62 6f 72 74 65 64  | t)..............;request.aborted | 
| 94de0 |  0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74    2a 20 28 28 70 72 6f 63 2d 62 75 66 20 28 63 64  | .......(when-let*.((proc-buf.(cd | 
| 94e00 |  72 2d 73 61 66 65 20 28 70 6c 69 73 74 2d 67 65    74 20 69 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 29  | r-safe.(plist-get.info.:context) | 
| 94e20 |  29 29 29 0a 20 20 20 20 20 20 20 20 28 6b 69 6c    6c 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75  | ))).........(kill-buffer.proc-bu | 
| 94e40 |  66 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74    65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 0a 20  | f)).......(delete-overlay.ov)).. | 
| 94e60 |  20 20 20 20 28 28 6e 75 6c 6c 20 72 65 73 70 6f    6e 73 65 29 20 20 20 20 20 20 20 20 20 20 20 20  | ....((null.response)............ | 
| 94e80 |  20 20 20 20 20 20 20 3b 66 69 6e 69 73 68 65 64    20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20  | .......;finished.with.error..... | 
| 94ea0 |  20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63    61 74 20 22 4c 4c 4d 20 72 65 73 70 6f 6e 73 65  | ..(message.(concat."LLM.response | 
| 94ec0 |  20 65 72 72 6f 72 3a 20 25 73 2e 20 52 65 77 72    69 74 65 20 69 6e 20 62 75 66 66 65 72 20 25 73  | .error:.%s..Rewrite.in.buffer.%s | 
| 94ee0 |  20 63 61 6e 63 65 6c 65 64 2e 22 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69  | .canceled.")................(pli | 
| 94f00 |  73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61    74 75 73 29 20 28 70 6c 69 73 74 2d 67 65 74 20  | st-get.info.:status).(plist-get. | 
| 94f20 |  69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20    20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 77  | info.:buffer)).......(gptel--rew | 
| 94f40 |  72 69 74 65 2d 63 61 6c 6c 62 61 63 6b 20 27 61    62 6f 72 74 20 69 6e 66 6f 29 29 0a 20 20 20 20  | rite-callback.'abort.info))..... | 
| 94f60 |  20 28 28 63 6f 6e 73 70 20 72 65 73 70 6f 6e 73    65 29 29 20 3b 72 65 61 73 6f 6e 69 6e 67 20 6f  | .((consp.response)).;reasoning.o | 
| 94f80 |  72 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 2d 2d 20    64 6f 6e 27 74 20 63 61 72 65 20 61 6e 64 20 6e  | r.tool.calls.--.don't.care.and.n | 
| 94fa0 |  6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20    72 65 73 70 65 63 74 69 76 65 6c 79 0a 20 20 20  | ot.implemented,.respectively.... | 
| 94fc0 |  20 20 28 74 20 28 6c 65 74 20 28 28 70 72 6f 63    2d 62 75 66 20 28 63 64 72 2d 73 61 66 65 20 28  | ..(t.(let.((proc-buf.(cdr-safe.( | 
| 94fe0 |  70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a    63 6f 6e 74 65 78 74 29 29 29 20 3b 66 69 6e 69  | plist-get.info.:context))).;fini | 
| 95000 |  73 68 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c    79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | shed.successfully............... | 
| 95020 |  28 6d 6b 62 20 28 70 72 6f 70 65 72 74 69 7a 65    20 22 3c 6d 6f 75 73 65 2d 31 3e 22 20 27 66 61  | (mkb.(propertize."<mouse-1>".'fa | 
| 95040 |  63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e    64 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20  | ce.'help-key-binding)))......... | 
| 95060 |  20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d    62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 0a  | ..(with-current-buffer.proc-buf. | 
| 95080 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74    20 28 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d  | ............(let.((inhibit-read- | 
| 950a0 |  6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72  | only.t))...............(delete-r | 
| 950c0 |  65 67 69 6f 6e 20 28 70 6f 69 6e 74 29 20 28 70    6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20  | egion.(point).(point-max))...... | 
| 950e0 |  20 20 20 20 20 20 20 20 20 3b 3b 20 52 75 6e 20    70 6f 73 74 2d 72 65 77 72 69 74 65 2d 66 75 6e  | .........;;.Run.post-rewrite-fun | 
| 95100 |  63 74 69 6f 6e 73 20 6f 6e 20 72 65 77 72 69 74    74 65 6e 20 74 65 78 74 20 69 6e 20 69 74 73 20  | ctions.on.rewritten.text.in.its. | 
| 95120 |  62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 77 69 74 68 2d 64 65 6d 6f 74  | buffer...............(with-demot | 
| 95140 |  65 64 2d 65 72 72 6f 72 73 20 22 67 70 74 65 6c    2d 70 6f 73 74 2d 72 65 77 72 69 74 65 2d 66 75  | ed-errors."gptel-post-rewrite-fu | 
| 95160 |  6e 63 74 69 6f 6e 73 3a 20 25 53 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75  | nctions:.%S".................(ru | 
| 95180 |  6e 2d 68 6f 6f 6b 2d 77 69 74 68 2d 61 72 67 73    20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 77  | n-hook-with-args.'gptel-post-rew | 
| 951a0 |  72 69 74 65 2d 66 75 6e 63 74 69 6f 6e 73 20 28    70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e  | rite-functions.(point-min).(poin | 
| 951c0 |  74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e  | t-max)))...............(when.(an | 
| 951e0 |  64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66    6f 20 3a 6e 65 77 6c 69 6e 65 29 0a 20 20 20 20  | d.(plist-get.info.:newline)..... | 
| 95200 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6e 6f 74 20 28 65 71 20 28 63  | .....................(not.(eq.(c | 
| 95220 |  68 61 72 2d 62 65 66 6f 72 65 20 28 70 6f 69 6e    74 2d 6d 61 78 29 29 20 3f 5c 6e 29 29 29 0a 20  | har-before.(point-max)).?\n))).. | 
| 95240 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    69 6e 73 65 72 74 20 22 5c 6e 22 29 29 0a 20 20  | ...............(insert."\n"))... | 
| 95260 |  20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 6e    74 2d 6c 6f 63 6b 2d 65 6e 73 75 72 65 29 29 0a  | ............(font-lock-ensure)). | 
| 95280 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6f 76 65    72 6c 61 79 2d 70 75 74 20 6f 76 20 27 64 69 73  | ............(overlay-put.ov.'dis | 
| 952a0 |  70 6c 61 79 20 28 62 75 66 66 65 72 2d 73 74 72    69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20  | play.(buffer-string))........... | 
| 952c0 |  20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f    76 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65  | ..(overlay-put.ov.'gptel-rewrite | 
| 952e0 |  20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6b  | .(buffer-string)).............(k | 
| 95300 |  69 6c 6c 2d 62 75 66 66 65 72 20 70 72 6f 63 2d    62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20  | ill-buffer.proc-buf))........... | 
| 95320 |  28 77 68 65 6e 20 28 62 75 66 66 65 72 2d 6c 69    76 65 2d 70 20 62 75 66 29 0a 20 20 20 20 20 20  | (when.(buffer-live-p.buf)....... | 
| 95340 |  20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72    65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 0a 20  | ......(with-current-buffer.buf.. | 
| 95360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75    6c 73 65 2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 69  | .............(pulse-momentary-hi | 
| 95380 |  67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 28    6f 76 65 72 6c 61 79 2d 73 74 61 72 74 20 6f 76  | ghlight-region.(overlay-start.ov | 
| 953a0 |  29 20 28 6f 76 65 72 6c 61 79 2d 65 6e 64 20 6f    76 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ).(overlay-end.ov))............. | 
| 953c0 |  20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 65 6c 64    6f 63 2d 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  | ..(add-hook.'eldoc-documentation | 
| 953e0 |  2d 66 75 6e 63 74 69 6f 6e 73 20 23 27 67 70 74    65 6c 2d 2d 72 65 77 72 69 74 65 2d 6b 65 79 2d  | -functions.#'gptel--rewrite-key- | 
| 95400 |  68 65 6c 70 20 6e 69 6c 20 27 6c 6f 63 61 6c 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b  | help.nil.'local)...............; | 
| 95420 |  3b 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f    76 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65  | ;.(overlay-put.ov.'gptel-rewrite | 
| 95440 |  20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c 61  | .response)...............(overla | 
| 95460 |  79 2d 70 75 74 20 6f 76 20 27 66 61 63 65 20 27    67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 68 69  | y-put.ov.'face.'gptel-rewrite-hi | 
| 95480 |  67 68 6c 69 67 68 74 2d 66 61 63 65 29 0a 09 20    20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75  | ghlight-face)........(overlay-pu | 
| 954a0 |  74 20 6f 76 20 27 70 72 69 6f 72 69 74 79 20 32    30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 20  | t.ov.'priority.2000)............ | 
| 954c0 |  20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20    6f 76 20 27 6b 65 79 6d 61 70 20 67 70 74 65 6c  | ...(overlay-put.ov.'keymap.gptel | 
| 954e0 |  2d 72 65 77 72 69 74 65 2d 61 63 74 69 6f 6e 73    2d 6d 61 70 29 0a 20 20 20 20 20 20 20 20 20 20  | -rewrite-actions-map)........... | 
| 95500 |  20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74    20 6f 76 20 27 6d 6f 75 73 65 2d 66 61 63 65 20  | ....(overlay-put.ov.'mouse-face. | 
| 95520 |  27 68 69 67 68 6c 69 67 68 74 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 6c  | 'highlight)...............(overl | 
| 95540 |  61 79 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 6f 76 20 27 68 65 6c 70 2d 65  | ay-put................ov.'help-e | 
| 95560 |  63 68 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 66 6f 72 6d 61 74 20 28 63 6f 6e 63  | cho................(format.(conc | 
| 95580 |  61 74 20 22 25 73 20 72 65 77 72 69 74 65 20 61    76 61 69 6c 61 62 6c 65 3a 20 25 73 20 6f 72 20  | at."%s.rewrite.available:.%s.or. | 
| 955a0 |  5c 5c 5b 67 70 74 65 6c 2d 2d 72 65 77 72 69 74    65 2d 64 69 73 70 61 74 63 68 5d 20 66 6f 72 20  | \\[gptel--rewrite-dispatch].for. | 
| 955c0 |  6f 70 74 69 6f 6e 73 22 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | options")....................... | 
| 955e0 |  20 28 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d    62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74  | .(concat.(gptel-backend-name.gpt | 
| 95600 |  65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 3a 22 20    28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61  | el-backend).":".(gptel--model-na | 
| 95620 |  6d 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | me.gptel-model))................ | 
| 95640 |  20 20 20 20 20 20 20 20 6d 6b 62 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73  | ........mkb))...............(pus | 
| 95660 |  68 20 6f 76 20 67 70 74 65 6c 2d 2d 72 65 77 72    69 74 65 2d 6f 76 65 72 6c 61 79 73 29 29 0a 20  | h.ov.gptel--rewrite-overlays)).. | 
| 95680 |  20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c    65 74 2a 20 28 28 73 79 6d 20 67 70 74 65 6c 2d  | ...........(if-let*.((sym.gptel- | 
| 956a0 |  72 65 77 72 69 74 65 2d 64 65 66 61 75 6c 74 2d    61 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20  | rewrite-default-action))........ | 
| 956c0 |  20 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74    2a 20 28 28 61 63 74 69 6f 6e 20 28 69 6e 74 65  | .........(if-let*.((action.(inte | 
| 956e0 |  72 6e 20 28 63 6f 6e 63 61 74 20 22 67 70 74 65    6c 2d 2d 72 65 77 72 69 74 65 2d 22 20 28 73 79  | rn.(concat."gptel--rewrite-".(sy | 
| 95700 |  6d 62 6f 6c 2d 6e 61 6d 65 20 73 79 6d 29 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | mbol-name.sym))))............... | 
| 95720 |  20 20 20 20 20 20 20 20 20 20 20 20 28 28 66 75    6e 63 74 69 6f 6e 70 20 61 63 74 69 6f 6e 29 29  | ............((functionp.action)) | 
| 95740 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 61  | ).....................(funcall.a | 
| 95760 |  63 74 69 6f 6e 20 6f 76 29 20 28 66 75 6e 63 61    6c 6c 20 73 79 6d 20 6f 76 29 29 0a 20 20 20 20  | ction.ov).(funcall.sym.ov))..... | 
| 95780 |  20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61    67 65 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20  | ..........(message.(concat...... | 
| 957a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 22 4c 4c 4d 20 72 65 77 72 69 74 65 20  | ..................."LLM.rewrite. | 
| 957c0 |  6f 75 74 70 75 74 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | output"......................... | 
| 957e0 |  28 75 6e 6c 65 73 73 20 28 65 71 20 28 63 75 72    72 65 6e 74 2d 62 75 66 66 65 72 29 20 62 75 66  | (unless.(eq.(current-buffer).buf | 
| 95800 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72  | )...........................(for | 
| 95820 |  6d 61 74 20 22 20 69 6e 20 62 75 66 66 65 72 20    25 73 20 22 20 28 62 75 66 66 65 72 2d 6e 61 6d  | mat.".in.buffer.%s.".(buffer-nam | 
| 95840 |  65 20 62 75 66 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.buf)))........................ | 
| 95860 |  20 28 63 6f 6e 63 61 74 20 22 20 72 65 61 64 79    3a 20 22 20 6d 6b 62 20 22 2c 20 22 20 28 70 72  | .(concat.".ready:.".mkb.",.".(pr | 
| 95880 |  6f 70 65 72 74 69 7a 65 20 22 52 45 54 22 20 27    66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62  | opertize."RET".'face.'help-key-b | 
| 958a0 |  69 6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | inding)......................... | 
| 958c0 |  20 20 20 20 20 20 20 20 22 20 6f 72 20 22 20 28    73 75 62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61  | ........".or.".(substitute-comma | 
| 958e0 |  6e 64 2d 6b 65 79 73 20 22 5c 5c 5b 67 70 74 65    6c 2d 72 65 77 72 69 74 65 5d 20 74 6f 20 63 6f  | nd-keys."\\[gptel-rewrite].to.co | 
| 95900 |  6e 74 69 6e 75 65 2e 22 29 29 29 29 29 29 29 29    29 29 29 0a 0a 3b 3b 20 2a 20 54 72 61 6e 73 69  | ntinue.")))))))))))..;;.*.Transi | 
| 95920 |  65 6e 74 20 50 72 65 66 69 78 65 73 20 66 6f 72    20 72 65 77 72 69 74 69 6e 67 0a 0a 28 74 72 61  | ent.Prefixes.for.rewriting..(tra | 
| 95940 |  6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 70 72    65 66 69 78 20 67 70 74 65 6c 2d 2d 72 65 77 72  | nsient-define-prefix.gptel--rewr | 
| 95960 |  69 74 65 2d 64 69 72 65 63 74 69 76 65 2d 6d 65    6e 75 20 28 29 0a 20 20 22 53 65 74 20 74 68 65  | ite-directive-menu.()..."Set.the | 
| 95980 |  20 64 69 72 65 63 74 69 76 65 20 28 73 79 73 74    65 6d 20 6d 65 73 73 61 67 65 29 20 66 6f 72 20  | .directive.(system.message).for. | 
| 959a0 |  72 65 77 72 69 74 65 20 61 63 74 69 6f 6e 73 2e    0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 67 70  | rewrite.actions...By.default,.gp | 
| 959c0 |  74 65 6c 20 75 73 65 73 20 74 68 65 20 64 69 72    65 63 74 69 76 65 20 61 73 73 6f 63 69 61 74 65  | tel.uses.the.directive.associate | 
| 959e0 |  64 20 77 69 74 68 20 74 68 65 20 60 72 65 77 72    69 74 65 27 0a 20 6b 65 79 20 69 6e 20 60 67 70  | d.with.the.`rewrite'..key.in.`gp | 
| 95a00 |  74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 27 2e    20 20 59 6f 75 20 63 61 6e 20 61 64 64 20 6d 6f  | tel-directives'...You.can.add.mo | 
| 95a20 |  72 65 20 72 65 77 72 69 74 65 2d 73 70 65 63 69    66 69 63 0a 20 64 69 72 65 63 74 69 76 65 73 20  | re.rewrite-specific..directives. | 
| 95a40 |  74 6f 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74    69 76 65 73 27 20 61 6e 64 20 70 69 63 6b 20 6f  | to.`gptel-directives'.and.pick.o | 
| 95a60 |  6e 65 20 66 72 6f 6d 20 68 65 72 65 2e 22 0a 20    20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 67  | ne.from.here."...[:description.g | 
| 95a80 |  70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d    70 74 2d 2d 66 6f 72 6d 61 74 0a 20 20 20 5b 28  | ptel-system-prompt--format....[( | 
| 95aa0 |  67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65    77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65 29  | gptel--suffix-rewrite-directive) | 
| 95ac0 |  5d 0a 20 20 20 5b 28 67 70 74 65 6c 2d 2d 69 6e    66 69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f  | ]....[(gptel--infix-variable-sco | 
| 95ae0 |  70 65 29 5d 5d 0a 20 20 20 5b 3a 63 6c 61 73 73    20 74 72 61 6e 73 69 65 6e 74 2d 63 6f 6c 75 6d  | pe)]]....[:class.transient-colum | 
| 95b00 |  6e 0a 20 20 20 20 3a 73 65 74 75 70 2d 63 68 69    6c 64 72 65 6e 0a 20 20 20 20 28 6c 61 6d 62 64  | n.....:setup-children.....(lambd | 
| 95b20 |  61 20 28 5f 29 20 28 74 72 61 6e 73 69 65 6e 74    2d 70 61 72 73 65 2d 73 75 66 66 69 78 65 73 0a  | a.(_).(transient-parse-suffixes. | 
| 95b40 |  20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74    65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65  | ............'gptel--rewrite-dire | 
| 95b60 |  63 74 69 76 65 2d 6d 65 6e 75 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73  | ctive-menu.............(gptel--s | 
| 95b80 |  65 74 75 70 2d 64 69 72 65 63 74 69 76 65 2d 6d    65 6e 75 0a 20 20 20 20 20 20 20 20 20 20 20 20  | etup-directive-menu............. | 
| 95ba0 |  20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65    2d 64 69 72 65 63 74 69 76 65 20 22 52 65 77 72  | .'gptel--rewrite-directive."Rewr | 
| 95bc0 |  69 74 65 20 64 69 72 65 63 74 69 76 65 22 29 29    29 0a 20 20 20 20 3a 70 61 64 2d 6b 65 79 73 20  | ite.directive"))).....:pad-keys. | 
| 95be0 |  74 5d 29 0a 0a 28 64 65 66 69 6e 65 2d 6f 62 73    6f 6c 65 74 65 2d 66 75 6e 63 74 69 6f 6e 2d 61  | t])..(define-obsolete-function-a | 
| 95c00 |  6c 69 61 73 20 27 67 70 74 65 6c 2d 72 65 77 72    69 74 65 2d 6d 65 6e 75 20 27 67 70 74 65 6c 2d  | lias.'gptel-rewrite-menu.'gptel- | 
| 95c20 |  72 65 77 72 69 74 65 20 22 30 2e 39 2e 36 22 29    0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64  | rewrite."0.9.6")..;;;###autoload | 
| 95c40 |  20 28 61 75 74 6f 6c 6f 61 64 20 27 67 70 74 65    6c 2d 72 65 77 72 69 74 65 20 22 67 70 74 65 6c  | .(autoload.'gptel-rewrite."gptel | 
| 95c60 |  2d 72 65 77 72 69 74 65 22 20 6e 69 6c 20 74 29    0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69  | -rewrite".nil.t).(transient-defi | 
| 95c80 |  6e 65 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d    72 65 77 72 69 74 65 20 28 29 0a 20 20 22 52 65  | ne-prefix.gptel-rewrite.()..."Re | 
| 95ca0 |  77 72 69 74 65 20 6f 72 20 72 65 66 61 63 74 6f    72 20 74 65 78 74 20 72 65 67 69 6f 6e 20 75 73  | write.or.refactor.text.region.us | 
| 95cc0 |  69 6e 67 20 61 6e 20 4c 4c 4d 2e 22 0a 20 20 5b    3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20  | ing.an.LLM."...[:description.... | 
| 95ce0 |  28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20    28 67 70 74 65 6c 2d 2d 64 65 73 63 72 69 62 65  | (lambda.()......(gptel--describe | 
| 95d00 |  2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20 20    20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d  | -directive.......gptel--rewrite- | 
| 95d20 |  64 69 72 65 63 74 69 76 65 20 28 6d 61 78 20 28    2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29  | directive.(max.(-.(window-width) | 
| 95d40 |  20 31 34 29 20 32 30 29 20 22 20 22 29 29 0a 20    20 20 5b 22 22 0a 20 20 20 20 28 67 70 74 65 6c  | .14).20)."."))....["".....(gptel | 
| 95d60 |  2d 2d 70 72 65 73 65 74 0a 20 20 20 20 20 3a 69    66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f 72  | --preset......:if.(lambda.().(or | 
| 95d80 |  20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65    72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74  | .(get-char-property.(point).'gpt | 
| 95da0 |  65 6c 2d 72 65 77 72 69 74 65 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | el-rewrite)....................( | 
| 95dc0 |  75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 29 29 0a    20 20 20 20 20 3a 6b 65 79 20 22 40 22 20 3a 66  | use-region-p)))......:key."@".:f | 
| 95de0 |  6f 72 6d 61 74 20 22 25 64 22 0a 20 20 20 20 20    3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20  | ormat."%d"......:description.... | 
| 95e00 |  20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20    20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f  | ..(lambda.()........(concat.(pro | 
| 95e20 |  70 65 72 74 69 7a 65 20 22 49 6e 73 74 72 75 63    74 69 6f 6e 73 22 20 27 66 61 63 65 20 27 74 72  | pertize."Instructions".'face.'tr | 
| 95e40 |  61 6e 73 69 65 6e 74 2d 68 65 61 64 69 6e 67 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ansient-heading)................ | 
| 95e60 |  28 67 70 74 65 6c 2d 2d 66 6f 72 6d 61 74 2d 70    72 65 73 65 74 2d 73 74 72 69 6e 67 29 29 29 29  | (gptel--format-preset-string)))) | 
| 95e80 |  0a 20 20 20 20 28 22 73 22 20 22 53 65 74 20 66    75 6c 6c 20 64 69 72 65 63 74 69 76 65 22 20 67  | .....("s"."Set.full.directive".g | 
| 95ea0 |  70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69    72 65 63 74 69 76 65 2d 6d 65 6e 75 29 0a 20 20  | ptel--rewrite-directive-menu)... | 
| 95ec0 |  20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d    72 65 77 72 69 74 65 2d 65 78 74 72 61 29 5d 5d  | ..(gptel--infix-rewrite-extra)]] | 
| 95ee0 |  0a 20 20 3b 3b 20 46 49 58 4d 45 3a 20 57 65 20    61 72 65 20 72 65 71 75 69 72 69 6e 67 20 60 67  | ...;;.FIXME:.We.are.requiring.`g | 
| 95f00 |  70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 27 20    62 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 20  | ptel-transient'.because.of.this. | 
| 95f20 |  73 75 66 66 69 78 2c 20 70 65 72 68 61 70 73 0a    20 20 3b 3b 20 77 65 20 63 61 6e 20 67 65 74 20  | suffix,.perhaps...;;.we.can.get. | 
| 95f40 |  66 69 6e 64 20 73 6f 6d 65 20 77 61 79 20 61 72    6f 75 6e 64 20 74 68 61 74 3f 0a 20 20 5b 3a 64  | find.some.way.around.that?...[:d | 
| 95f60 |  65 73 63 72 69 70 74 69 6f 6e 20 22 43 6f 6e 74    65 78 74 20 66 6f 72 20 72 65 77 72 69 74 65 22  | escription."Context.for.rewrite" | 
| 95f80 |  0a 20 20 20 3a 69 66 20 75 73 65 2d 72 65 67 69    6f 6e 2d 70 0a 20 20 20 28 67 70 74 65 6c 2d 2d  | ....:if.use-region-p....(gptel-- | 
| 95fa0 |  69 6e 66 69 78 2d 63 6f 6e 74 65 78 74 2d 72 65    6d 6f 76 65 2d 61 6c 6c 20 3a 6b 65 79 20 22 2d  | infix-context-remove-all.:key."- | 
| 95fc0 |  64 22 29 0a 20 20 20 28 67 70 74 65 6c 2d 2d 73    75 66 66 69 78 2d 63 6f 6e 74 65 78 74 2d 62 75  | d")....(gptel--suffix-context-bu | 
| 95fe0 |  66 66 65 72 20 3a 6b 65 79 20 22 43 22 20 3a 66    6f 72 6d 61 74 20 22 20 20 25 6b 20 25 64 22 29  | ffer.:key."C".:format."..%k.%d") | 
| 96000 |  5d 0a 20 20 5b 5b 3a 64 65 73 63 72 69 70 74 69    6f 6e 20 22 44 69 66 66 20 4f 70 74 69 6f 6e 73  | ]...[[:description."Diff.Options | 
| 96020 |  22 0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64    61 20 28 29 20 67 70 74 65 6c 2d 2d 72 65 77 72  | ".....:if.(lambda.().gptel--rewr | 
| 96040 |  69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20    20 20 28 22 2d 62 22 20 22 49 67 6e 6f 72 65 20  | ite-overlays).....("-b"."Ignore. | 
| 96060 |  77 68 69 74 65 73 70 61 63 65 20 63 68 61 6e 67    65 73 22 20 20 20 20 20 20 28 22 2d 62 22 20 22  | whitespace.changes"......("-b"." | 
| 96080 |  2d 2d 69 67 6e 6f 72 65 2d 73 70 61 63 65 2d 63    68 61 6e 67 65 22 29 29 0a 20 20 20 20 28 22 2d  | --ignore-space-change")).....("- | 
| 960a0 |  77 22 20 22 49 67 6e 6f 72 65 20 61 6c 6c 20 77    68 69 74 65 73 70 61 63 65 22 20 20 20 20 20 20  | w"."Ignore.all.whitespace"...... | 
| 960c0 |  20 20 20 20 28 22 2d 77 22 20 22 2d 2d 69 67 6e    6f 72 65 2d 61 6c 6c 2d 73 70 61 63 65 22 29 29  | ....("-w"."--ignore-all-space")) | 
| 960e0 |  0a 20 20 20 20 28 22 2d 69 22 20 22 49 67 6e 6f    72 65 20 63 61 73 65 22 20 20 20 20 20 20 20 20  | .....("-i"."Ignore.case"........ | 
| 96100 |  20 20 20 20 20 20 20 20 20 20 20 20 28 22 2d 69    22 20 22 2d 2d 69 67 6e 6f 72 65 2d 63 61 73 65  | ............("-i"."--ignore-case | 
| 96120 |  22 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d    69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 64 69  | ")).....(gptel--infix-rewrite-di | 
| 96140 |  66 66 3a 2d 55 29 5d 0a 20 20 20 5b 3a 64 65 73    63 72 69 70 74 69 6f 6e 20 22 41 63 63 65 70 74  | ff:-U)]....[:description."Accept | 
| 96160 |  20 61 6c 6c 22 0a 20 20 20 20 3a 69 66 20 28 6c    61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d  | .all".....:if.(lambda.().gptel-- | 
| 96180 |  72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73    29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75  | rewrite-overlays).....(gptel--su | 
| 961a0 |  66 66 69 78 2d 72 65 77 72 69 74 65 2d 6d 65 72    67 65 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d  | ffix-rewrite-merge).....(gptel-- | 
| 961c0 |  73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 61    63 63 65 70 74 29 0a 20 20 20 20 22 52 65 6a 65  | suffix-rewrite-accept)....."Reje | 
| 961e0 |  63 74 20 61 6c 6c 22 0a 20 20 20 20 28 67 70 74    65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69  | ct.all".....(gptel--suffix-rewri | 
| 96200 |  74 65 2d 72 65 6a 65 63 74 29 5d 5d 0a 20 20 5b    5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 44  | te-reject)]]...[[:description."D | 
| 96220 |  69 66 66 20 72 65 77 72 69 74 65 20 72 65 67 69    6f 6e 73 22 0a 20 20 20 20 3a 69 66 20 28 6c 61  | iff.rewrite.regions".....:if.(la | 
| 96240 |  6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72    65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29  | mbda.().gptel--rewrite-overlays) | 
| 96260 |  0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66    66 69 78 2d 72 65 77 72 69 74 65 2d 64 69 66 66  | .....(gptel--suffix-rewrite-diff | 
| 96280 |  29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75    66 66 69 78 2d 72 65 77 72 69 74 65 2d 65 64 69  | ).....(gptel--suffix-rewrite-edi | 
| 962a0 |  66 66 29 5d 5d 0a 20 20 5b 5b 3a 64 65 73 63 72    69 70 74 69 6f 6e 20 22 52 65 77 72 69 74 65 22  | ff)]]...[[:description."Rewrite" | 
| 962c0 |  0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61    20 28 29 20 28 6f 72 20 28 67 65 74 2d 63 68 61  | .....:if.(lambda.().(or.(get-cha | 
| 962e0 |  72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e    74 29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74  | r-property.(point).'gptel-rewrit | 
| 96300 |  65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 75 73 65 2d 72 65 67 69 6f 6e  | e)...................(use-region | 
| 96320 |  2d 70 29 29 29 0a 20 20 20 20 28 67 70 74 65 6c    2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65  | -p))).....(gptel--suffix-rewrite | 
| 96340 |  29 5d 0a 20 20 20 5b 22 44 72 79 20 52 75 6e 22    0a 20 20 20 20 3a 69 66 20 28 6c 61 6d 62 64 61  | )]....["Dry.Run".....:if.(lambda | 
| 96360 |  20 28 29 20 28 61 6e 64 20 28 6f 72 20 67 70 74    65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 67 70 74  | .().(and.(or.gptel-log-level.gpt | 
| 96380 |  65 6c 2d 65 78 70 65 72 74 2d 63 6f 6d 6d 61 6e    64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | el-expert-commands)............. | 
| 963a0 |  20 20 20 20 20 20 20 28 6f 72 20 28 67 65 74 2d    63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70  | .......(or.(get-char-property.(p | 
| 963c0 |  6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77    72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20 20  | oint).'gptel-rewrite)........... | 
| 963e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73    65 2d 72 65 67 69 6f 6e 2d 70 29 29 29 29 0a 20  | .............(use-region-p)))).. | 
| 96400 |  20 20 20 28 22 49 22 20 22 49 6e 73 70 65 63 74    20 71 75 65 72 79 20 28 4c 69 73 70 29 22 0a 20  | ...("I"."Inspect.query.(Lisp)".. | 
| 96420 |  20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20    20 20 20 20 20 20 22 49 6e 73 70 65 63 74 20 74  | ....(lambda.()........"Inspect.t | 
| 96440 |  68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69    6c 6c 20 62 65 20 73 65 6e 74 20 61 73 20 61 20  | he.query.that.will.be.sent.as.a. | 
| 96460 |  6c 69 73 70 20 6f 62 6a 65 63 74 2e 22 0a 20 20    20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76  | lisp.object."........(interactiv | 
| 96480 |  65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c    2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c  | e)........(gptel--sanitize-model | 
| 964a0 |  29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    2d 69 6e 73 70 65 63 74 2d 71 75 65 72 79 0a 20  | )........(gptel--inspect-query.. | 
| 964c0 |  20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73    75 66 66 69 78 2d 72 65 77 72 69 74 65 20 67 70  | .......(gptel--suffix-rewrite.gp | 
| 964e0 |  74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73    73 61 67 65 20 74 29 29 29 29 0a 20 20 20 20 28  | tel--rewrite-message.t)))).....( | 
| 96500 |  22 4a 22 20 22 49 6e 73 70 65 63 74 20 71 75 65    72 79 20 28 4a 53 4f 4e 29 22 0a 20 20 20 20 20  | "J"."Inspect.query.(JSON)"...... | 
| 96520 |  28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20    20 20 22 49 6e 73 70 65 63 74 20 74 68 65 20 71  | (lambda.()........"Inspect.the.q | 
| 96540 |  75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62    65 20 73 65 6e 74 20 61 73 20 61 20 4a 53 4f 4e  | uery.that.will.be.sent.as.a.JSON | 
| 96560 |  20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 20    20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20  | .object."........(interactive).. | 
| 96580 |  20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61    6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20  | ......(gptel--sanitize-model)... | 
| 965a0 |  20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73    70 65 63 74 2d 71 75 65 72 79 0a 20 20 20 20 20  | .....(gptel--inspect-query...... | 
| 965c0 |  20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69    78 2d 72 65 77 72 69 74 65 20 67 70 74 65 6c 2d  | ...(gptel--suffix-rewrite.gptel- | 
| 965e0 |  2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65    20 74 29 0a 20 20 20 20 20 20 20 20 27 6a 73 6f  | -rewrite-message.t).........'jso | 
| 96600 |  6e 29 29 29 5d 5d 0a 20 20 28 69 6e 74 65 72 61    63 74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d  | n)))]]...(interactive)...(gptel- | 
| 96620 |  2d 72 65 77 72 69 74 65 2d 73 61 6e 69 74 69 7a    65 2d 6f 76 65 72 6c 61 79 73 29 0a 20 20 28 75  | -rewrite-sanitize-overlays)...(u | 
| 96640 |  6e 6c 65 73 73 20 28 6f 72 20 67 70 74 65 6c 2d    2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79  | nless.(or.gptel--rewrite-overlay | 
| 96660 |  73 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29    29 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f  | s.(use-region-p)).....(user-erro | 
| 96680 |  72 20 22 60 67 70 74 65 6c 2d 72 65 77 72 69 74    65 27 20 72 65 71 75 69 72 65 73 20 61 6e 20 61  | r."`gptel-rewrite'.requires.an.a | 
| 966a0 |  63 74 69 76 65 20 72 65 67 69 6f 6e 20 6f 72 20    72 65 77 72 69 74 65 20 69 6e 20 70 72 6f 67 72  | ctive.region.or.rewrite.in.progr | 
| 966c0 |  65 73 73 2e 22 29 29 0a 20 20 28 75 6e 6c 65 73    73 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65  | ess."))...(unless.gptel--rewrite | 
| 966e0 |  2d 6d 65 73 73 61 67 65 0a 20 20 20 20 28 73 65    74 71 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74  | -message.....(setq.gptel--rewrit | 
| 96700 |  65 2d 6d 65 73 73 61 67 65 20 22 52 65 77 72 69    74 65 3a 20 22 29 29 0a 20 20 28 74 72 61 6e 73  | e-message."Rewrite:."))...(trans | 
| 96720 |  69 65 6e 74 2d 73 65 74 75 70 20 27 67 70 74 65    6c 2d 72 65 77 72 69 74 65 29 29 0a 0a 3b 3b 20  | ient-setup.'gptel-rewrite))..;;. | 
| 96740 |  2a 20 54 72 61 6e 73 69 65 6e 74 20 69 6e 66 69    78 65 73 20 66 6f 72 20 72 65 77 72 69 74 69 6e  | *.Transient.infixes.for.rewritin | 
| 96760 |  67 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65    66 69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c  | g..(transient-define-infix.gptel | 
| 96780 |  2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d    65 78 74 72 61 20 28 29 0a 20 20 22 43 68 61 74  | --infix-rewrite-extra.()..."Chat | 
| 967a0 |  20 64 69 72 65 63 74 69 76 65 20 28 73 79 73 74    65 6d 20 6d 65 73 73 61 67 65 29 20 74 6f 20 75  | .directive.(system.message).to.u | 
| 967c0 |  73 65 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67    20 6f 72 20 72 65 66 61 63 74 6f 72 69 6e 67 2e  | se.for.rewriting.or.refactoring. | 
| 967e0 |  22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e    20 22 52 65 77 72 69 74 65 20 69 6e 73 74 72 75  | "...:description."Rewrite.instru | 
| 96800 |  63 74 69 6f 6e 22 0a 20 20 3a 63 6c 61 73 73 20    27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69  | ction"...:class.'gptel-lisp-vari | 
| 96820 |  61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65    20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65  | able...:variable.'gptel--rewrite | 
| 96840 |  2d 6d 65 73 73 61 67 65 0a 20 20 3a 73 65 74 2d    76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73  | -message...:set-value.#'gptel--s | 
| 96860 |  65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20    3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 22 28 4e  | et-with-scope...:display-nil."(N | 
| 96880 |  6f 6e 65 29 22 0a 20 20 3a 6b 65 79 20 22 64 22    0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20  | one)"...:key."d"...:format.".%k. | 
| 968a0 |  25 64 20 25 76 22 0a 20 20 3a 70 72 6f 6d 70 74    20 28 63 6f 6e 63 61 74 20 22 49 6e 73 74 72 75  | %d.%v"...:prompt.(concat."Instru | 
| 968c0 |  63 74 69 6f 6e 73 20 22 20 67 70 74 65 6c 2d 2d    72 65 61 64 2d 77 69 74 68 2d 70 72 65 66 69 78  | ctions.".gptel--read-with-prefix | 
| 968e0 |  2d 68 65 6c 70 29 0a 20 20 3a 72 65 61 64 65 72    20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74  | -help)...:reader.(lambda.(prompt | 
| 96900 |  20 5f 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28  | ._.history).............(let*.(( | 
| 96920 |  72 65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rewrite-directive............... | 
| 96940 |  20 20 20 20 20 20 28 63 61 72 2d 73 61 66 65 20    28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69  | ......(car-safe.(gptel--parse-di | 
| 96960 |  72 65 63 74 69 76 65 20 67 70 74 65 6c 2d 2d 72    65 77 72 69 74 65 2d 64 69 72 65 63 74 69 76 65  | rective.gptel--rewrite-directive | 
| 96980 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 969a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 27 72 61 77 29 29 29 0a 20  | .......................'raw))).. | 
| 969c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 63 62 20 28 63 75 72 72 65 6e 74 2d 62  | ..................(cb.(current-b | 
| 969e0 |  75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 63 79 63 6c  | uffer))....................(cycl | 
| 96a00 |  65 2d 70 72 65 66 69 78 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61  | e-prefix.....................(la | 
| 96a20 |  6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63    74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20  | mbda.().(interactive)........... | 
| 96a40 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74    65 6c 2d 2d 72 65 61 64 2d 77 69 74 68 2d 70 72  | ............(gptel--read-with-pr | 
| 96a60 |  65 66 69 78 20 72 65 77 72 69 74 65 2d 64 69 72    65 63 74 69 76 65 29 29 29 0a 20 20 20 20 20 20  | efix.rewrite-directive)))....... | 
| 96a80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 64    69 74 2d 69 6e 2d 62 75 66 66 65 72 0a 20 20 20  | .............(edit-in-buffer.... | 
| 96aa0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74  | .................(lambda.().(int | 
| 96ac0 |  65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | eractive)....................... | 
| 96ae0 |  28 6c 65 74 20 28 28 6f 66 66 73 65 74 20 28 2d    20 28 70 6f 69 6e 74 29 20 28 6d 69 6e 69 62 75  | (let.((offset.(-.(point).(minibu | 
| 96b00 |  66 66 65 72 2d 70 72 6f 6d 70 74 2d 65 6e 64 29    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ffer-prompt-end))))............. | 
| 96b20 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74    65 6c 2d 2d 65 64 69 74 2d 64 69 72 65 63 74 69  | ............(gptel--edit-directi | 
| 96b40 |  76 65 20 27 67 70 74 65 6c 2d 2d 72 65 77 72 69    74 65 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20  | ve.'gptel--rewrite-message...... | 
| 96b60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 70 72 6f 6d 70 74 20 72 65 77  | .....................:prompt.rew | 
| 96b80 |  72 69 74 65 2d 64 69 72 65 63 74 69 76 65 20 3a    69 6e 69 74 69 61 6c 20 28 6d 69 6e 69 62 75 66  | rite-directive.:initial.(minibuf | 
| 96ba0 |  66 65 72 2d 63 6f 6e 74 65 6e 74 73 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fer-contents)................... | 
| 96bc0 |  20 20 20 20 20 20 20 20 3a 62 75 66 66 65 72 20    63 62 20 3a 73 65 74 75 70 20 28 6c 61 6d 62 64  | ........:buffer.cb.:setup.(lambd | 
| 96be0 |  61 20 28 29 20 28 69 67 6e 6f 72 65 2d 65 72 72    6f 72 73 20 28 66 6f 72 77 61 72 64 2d 63 68 61  | a.().(ignore-errors.(forward-cha | 
| 96c00 |  72 20 6f 66 66 73 65 74 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | r.offset)))..................... | 
| 96c20 |  20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......:callback................. | 
| 96c40 |  20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64    61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ..........(lambda.()............ | 
| 96c60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 30 20  | .................(run-at-time.0. | 
| 96c80 |  6e 69 6c 20 23 27 74 72 61 6e 73 69 65 6e 74 2d    73 65 74 75 70 20 27 67 70 74 65 6c 2d 72 65 77  | nil.#'transient-setup.'gptel-rew | 
| 96ca0 |  72 69 74 65 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rite)........................... | 
| 96cc0 |  20 20 28 70 75 73 68 20 28 62 75 66 66 65 72 2d    6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74  | ..(push.(buffer-local-value.'gpt | 
| 96ce0 |  65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73    61 67 65 20 63 62 29 0a 20 20 20 20 20 20 20 20  | el--rewrite-message.cb)......... | 
| 96d00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 61 6c 69 73 74  | ..........................(alist | 
| 96d20 |  2d 67 65 74 20 27 67 70 74 65 6c 2d 2d 69 6e 66    69 78 2d 72 65 77 72 69 74 65 2d 65 78 74 72 61  | -get.'gptel--infix-rewrite-extra | 
| 96d40 |  20 74 72 61 6e 73 69 65 6e 74 2d 68 69 73 74 6f    72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .transient-history))............ | 
| 96d60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 77 68 65 6e 20 28 6d 69 6e 69 62 75 66 66  | .................(when.(minibuff | 
| 96d80 |  65 72 70 29 20 28 6d 69 6e 69 62 75 66 66 65 72    2d 71 75 69 74 2d 72 65 63 75 72 73 69 76 65 2d  | erp).(minibuffer-quit-recursive- | 
| 96da0 |  65 64 69 74 29 29 29 29 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | edit)))))))....................( | 
| 96dc0 |  6d 69 6e 69 62 75 66 66 65 72 2d 6c 6f 63 61 6c    2d 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 20  | minibuffer-local-map............ | 
| 96de0 |  20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 63    6f 6d 70 6f 73 65 64 2d 6b 65 79 6d 61 70 20 28  | .........(make-composed-keymap.( | 
| 96e00 |  64 65 66 69 6e 65 2d 6b 65 79 6d 61 70 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | define-keymap................... | 
| 96e20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 22 54 41 42 22 20  | .........................."TAB". | 
| 96e40 |  63 79 63 6c 65 2d 70 72 65 66 69 78 20 22 3c 74    61 62 3e 22 20 63 79 63 6c 65 2d 70 72 65 66 69  | cycle-prefix."<tab>".cycle-prefi | 
| 96e60 |  78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | x............................... | 
| 96e80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43    2d 63 20 43 2d 65 22 20 65 64 69 74 2d 69 6e 2d  | .............."C-c.C-e".edit-in- | 
| 96ea0 |  62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | buffer)......................... | 
| 96ec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 6d 69 6e 69 62 75 66 66 65 72 2d 6c 6f 63  | ..................minibuffer-loc | 
| 96ee0 |  61 6c 2d 6d 61 70 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6d 69 6e 69 62 75 66  | al-map)))...............(minibuf | 
| 96f00 |  66 65 72 2d 77 69 74 68 2d 73 65 74 75 70 2d 68    6f 6f 6b 20 63 79 63 6c 65 2d 70 72 65 66 69 78  | fer-with-setup-hook.cycle-prefix | 
| 96f20 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 72 65 61 64 2d 73 74 72 69 6e 67 0a 20 20  | .................(read-string... | 
| 96f40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70    72 6f 6d 70 74 20 28 6f 72 20 67 70 74 65 6c 2d  | ...............prompt.(or.gptel- | 
| 96f60 |  2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65    20 22 52 65 77 72 69 74 65 3a 20 22 29 0a 20 20  | -rewrite-message."Rewrite:.")... | 
| 96f80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68    69 73 74 6f 72 79 29 29 29 29 29 0a 0a 28 74 72  | ...............history)))))..(tr | 
| 96fa0 |  61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 61    72 67 75 6d 65 6e 74 20 67 70 74 65 6c 2d 2d 69  | ansient-define-argument.gptel--i | 
| 96fc0 |  6e 66 69 78 2d 72 65 77 72 69 74 65 2d 64 69 66    66 3a 2d 55 20 28 29 0a 20 20 3a 64 65 73 63 72  | nfix-rewrite-diff:-U.()...:descr | 
| 96fe0 |  69 70 74 69 6f 6e 20 22 43 6f 6e 74 65 78 74 20    6c 69 6e 65 73 22 0a 20 20 3a 63 6c 61 73 73 20  | iption."Context.lines"...:class. | 
| 97000 |  27 74 72 61 6e 73 69 65 6e 74 2d 6f 70 74 69 6f    6e 0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 2d  | 'transient-option...:argument."- | 
| 97020 |  55 22 0a 20 20 3a 72 65 61 64 65 72 20 23 27 74    72 61 6e 73 69 65 6e 74 2d 72 65 61 64 2d 6e 75  | U"...:reader.#'transient-read-nu | 
| 97040 |  6d 62 65 72 2d 4e 30 29 0a 0a 3b 3b 20 2a 20 54    72 61 6e 73 69 65 6e 74 20 73 75 66 66 69 78 65  | mber-N0)..;;.*.Transient.suffixe | 
| 97060 |  73 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 0a    0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69  | s.for.rewriting..(transient-defi | 
| 97080 |  6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d    2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d  | ne-suffix.gptel--suffix-rewrite- | 
| 970a0 |  64 69 72 65 63 74 69 76 65 20 28 26 6f 70 74 69    6f 6e 61 6c 20 63 61 6e 63 65 6c 29 0a 20 20 22  | directive.(&optional.cancel)..." | 
| 970c0 |  45 64 69 74 20 52 65 77 72 69 74 65 20 64 69 72    65 63 74 69 76 65 2e 0a 0a 43 41 4e 43 45 4c 20  | Edit.Rewrite.directive...CANCEL. | 
| 970e0 |  69 73 20 75 73 65 64 20 74 6f 20 61 76 6f 69 64    20 74 6f 75 63 68 69 6e 67 20 64 79 6e 61 6d 69  | is.used.to.avoid.touching.dynami | 
| 97100 |  63 20 72 65 77 72 69 74 65 20 64 69 72 65 63 74    69 76 65 73 2c 0a 67 65 6e 65 72 61 74 65 64 20  | c.rewrite.directives,.generated. | 
| 97120 |  66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 2e 22    0a 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74  | from.functions."...:transient.'t | 
| 97140 |  72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69    74 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e  | ransient--do-exit...:description | 
| 97160 |  20 22 45 64 69 74 20 66 75 6c 6c 20 72 65 77 72    69 74 65 20 64 69 72 65 63 74 69 76 65 22 0a 20  | ."Edit.full.rewrite.directive".. | 
| 97180 |  20 3a 6b 65 79 20 22 73 22 0a 20 20 28 69 6e 74    65 72 61 63 74 69 76 65 0a 20 20 20 28 6c 69 73  | .:key."s"...(interactive....(lis | 
| 971a0 |  74 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20    20 28 66 75 6e 63 74 69 6f 6e 70 20 67 70 74 65  | t.(and...........(functionp.gpte | 
| 971c0 |  6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65 63    74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20  | l--rewrite-directive)........... | 
| 971e0 |  28 6e 6f 74 20 28 79 2d 6f 72 2d 6e 2d 70 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  | (not.(y-or-n-p................." | 
| 97200 |  52 65 77 72 69 74 65 20 64 69 72 65 63 74 69 76    65 20 69 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79  | Rewrite.directive.is.dynamically | 
| 97220 |  20 67 65 6e 65 72 61 74 65 64 3a 20 45 64 69 74    20 69 74 73 20 63 75 72 72 65 6e 74 20 76 61 6c  | .generated:.Edit.its.current.val | 
| 97240 |  75 65 20 69 6e 73 74 65 61 64 3f 22 29 29 29 29    29 0a 20 20 28 69 66 20 63 61 6e 63 65 6c 20 28  | ue.instead?")))))...(if.cancel.( | 
| 97260 |  70 72 6f 67 6e 20 28 6d 65 73 73 61 67 65 20 22    45 64 69 74 20 63 61 6e 63 65 6c 65 64 22 29 0a  | progn.(message."Edit.canceled"). | 
| 97280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61  | ....................(call-intera | 
| 972a0 |  63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d    72 65 77 72 69 74 65 29 29 0a 20 20 20 20 28 67  | ctively.#'gptel-rewrite)).....(g | 
| 972c0 |  70 74 65 6c 2d 2d 65 64 69 74 2d 64 69 72 65 63    74 69 76 65 20 27 67 70 74 65 6c 2d 2d 72 65 77  | ptel--edit-directive.'gptel--rew | 
| 972e0 |  72 69 74 65 2d 64 69 72 65 63 74 69 76 65 0a 20    20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 23  | rite-directive.......:callback.# | 
| 97300 |  27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 20 3a    73 65 74 75 70 20 23 27 61 63 74 69 76 61 74 65  | 'gptel-rewrite.:setup.#'activate | 
| 97320 |  2d 6d 61 72 6b 29 29 29 0a 0a 28 74 72 61 6e 73    69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66  | -mark)))..(transient-define-suff | 
| 97340 |  69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78    2d 72 65 77 72 69 74 65 20 28 26 6f 70 74 69 6f  | ix.gptel--suffix-rewrite.(&optio | 
| 97360 |  6e 61 6c 20 72 65 77 72 69 74 65 2d 6d 65 73 73    61 67 65 20 64 72 79 2d 72 75 6e 29 0a 20 20 22  | nal.rewrite-message.dry-run)..." | 
| 97380 |  52 65 77 72 69 74 65 20 6f 72 20 72 65 66 61 63    74 6f 72 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65  | Rewrite.or.refactor.region.conte | 
| 973a0 |  6e 74 73 2e 22 0a 20 20 3a 6b 65 79 20 22 72 22    0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20  | nts."...:key."r"...:description. | 
| 973c0 |  28 6c 61 6d 62 64 61 20 28 29 20 28 69 66 20 28    67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74  | (lambda.().(if.(get-char-propert | 
| 973e0 |  79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c    2d 72 65 77 72 69 74 65 29 20 22 49 74 65 72 61  | y.(point).'gptel-rewrite)."Itera | 
| 97400 |  74 65 22 20 22 52 65 77 72 69 74 65 22 29 29 0a    20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28  | te"."Rewrite"))...(interactive.( | 
| 97420 |  6c 69 73 74 20 67 70 74 65 6c 2d 2d 72 65 77 72    69 74 65 2d 6d 65 73 73 61 67 65 29 29 0a 20 20  | list.gptel--rewrite-message))... | 
| 97440 |  28 6c 65 74 2a 20 28 28 6e 6f 73 79 73 74 65 6d    20 28 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63  | (let*.((nosystem.(gptel--model-c | 
| 97460 |  61 70 61 62 6c 65 2d 70 20 27 6e 6f 73 79 73 74    65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b  | apable-p.'nosystem))..........;; | 
| 97480 |  20 54 72 79 20 74 6f 20 73 65 6e 64 20 63 6f 6e    74 65 78 74 20 77 69 74 68 20 73 79 73 74 65 6d  | .Try.to.send.context.with.system | 
| 974a0 |  20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 75 73 65 2d 63 6f 6e  | .message..........(gptel-use-con | 
| 974c0 |  74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 28    61 6e 64 20 67 70 74 65 6c 2d 75 73 65 2d 63 6f  | text...........(and.gptel-use-co | 
| 974e0 |  6e 74 65 78 74 20 28 69 66 20 6e 6f 73 79 73 74    65 6d 20 27 75 73 65 72 20 27 73 79 73 74 65 6d  | ntext.(if.nosystem.'user.'system | 
| 97500 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72    6f 6d 70 74 20 28 6c 69 73 74 20 28 6f 72 20 28  | )))..........(prompt.(list.(or.( | 
| 97520 |  67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74    79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c  | get-char-property.(point).'gptel | 
| 97540 |  2d 72 65 77 72 69 74 65 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -rewrite)....................... | 
| 97560 |  20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62    73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72  | .....(buffer-substring-no-proper | 
| 97580 |  74 69 65 73 20 28 72 65 67 69 6f 6e 2d 62 65 67    69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d  | ties.(region-beginning).(region- | 
| 975a0 |  65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 57  | end)))........................"W | 
| 975c0 |  68 61 74 20 69 73 20 74 68 65 20 72 65 71 75 69    72 65 64 20 63 68 61 6e 67 65 3f 22 0a 20 20 20  | hat.is.the.required.change?".... | 
| 975e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6f 72 20 72 65 77 72 69 74 65 2d  | ....................(or.rewrite- | 
| 97600 |  6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 2d 72    65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 29 29  | message.gptel--rewrite-message)) | 
| 97620 |  29 29 0a 20 20 20 20 28 77 68 65 6e 20 6e 6f 73    79 73 74 65 6d 0a 20 20 20 20 20 20 28 73 65 74  | )).....(when.nosystem.......(set | 
| 97640 |  63 61 72 20 70 72 6f 6d 70 74 20 28 63 6f 6e 63    61 74 20 28 63 61 72 2d 73 61 66 65 20 28 67 70  | car.prompt.(concat.(car-safe.(gp | 
| 97660 |  74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65 63    74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20  | tel--parse-directive............ | 
| 97680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74  | .............................gpt | 
| 976a0 |  65 6c 2d 2d 72 65 77 72 69 74 65 2d 64 69 72 65    63 74 69 76 65 20 27 72 61 77 29 29 0a 20 20 20  | el--rewrite-directive.'raw)).... | 
| 976c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 22 5c 6e 5c 6e 22  | .........................."\n\n" | 
| 976e0 |  20 28 63 61 72 20 70 72 6f 6d 70 74 29 29 29 29    0a 20 20 20 20 28 70 72 6f 67 31 20 28 67 70 74  | .(car.prompt)))).....(prog1.(gpt | 
| 97700 |  65 6c 2d 72 65 71 75 65 73 74 20 70 72 6f 6d 70    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a  | el-request.prompt..............: | 
| 97720 |  64 72 79 2d 72 75 6e 20 64 72 79 2d 72 75 6e 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 79  | dry-run.dry-run..............:sy | 
| 97740 |  73 74 65 6d 20 67 70 74 65 6c 2d 2d 72 65 77 72    69 74 65 2d 64 69 72 65 63 74 69 76 65 0a 20 20  | stem.gptel--rewrite-directive... | 
| 97760 |  20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65    61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 0a  | ...........:stream.gptel-stream. | 
| 97780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f    6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20  | .............:context........... | 
| 977a0 |  20 20 20 28 6c 65 74 20 28 28 6f 76 20 28 6f 72    20 28 63 64 72 2d 73 61 66 65 20 28 67 65 74 2d  | ...(let.((ov.(or.(cdr-safe.(get- | 
| 977c0 |  63 68 61 72 2d 70 72 6f 70 65 72 74 79 2d 61 6e    64 2d 6f 76 65 72 6c 61 79 20 28 70 6f 69 6e 74  | char-property-and-overlay.(point | 
| 977e0 |  29 20 27 67 70 74 65 6c 2d 72 65 77 72 69 74 65    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).'gptel-rewrite)).............. | 
| 97800 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d    61 6b 65 2d 6f 76 65 72 6c 61 79 20 28 72 65 67  | ..............(make-overlay.(reg | 
| 97820 |  69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28    72 65 67 69 6f 6e 2d 65 6e 64 29 20 6e 69 6c 20  | ion-beginning).(region-end).nil. | 
| 97840 |  74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75  | t))))................(overlay-pu | 
| 97860 |  74 20 6f 76 20 27 63 61 74 65 67 6f 72 79 20 27    67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20  | t.ov.'category.'gptel).......... | 
| 97880 |  20 20 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70    75 74 20 6f 76 20 27 65 76 61 70 6f 72 61 74 65  | ......(overlay-put.ov.'evaporate | 
| 978a0 |  20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 4e 4f 54 45 3a 20 53 77 69 74  | .t)................;;.NOTE:.Swit | 
| 978c0 |  63 68 20 74 6f 20 60 67 65 6e 65 72 61 74 65 2d    6e 65 77 2d 62 75 66 66 65 72 27 20 61 66 74 65  | ch.to.`generate-new-buffer'.afte | 
| 978e0 |  72 20 77 65 20 64 72 6f 70 20 45 6d 61 63 73 20    32 37 2e 31 20 28 23 37 32 34 29 0a 20 20 20 20  | r.we.drop.Emacs.27.1.(#724)..... | 
| 97900 |  20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73    20 6f 76 20 28 67 70 74 65 6c 2d 2d 74 65 6d 70  | ...........(cons.ov.(gptel--temp | 
| 97920 |  2d 62 75 66 66 65 72 20 22 20 2a 67 70 74 65 6c    2d 72 65 77 72 69 74 65 2a 22 29 29 29 0a 20 20  | -buffer.".*gptel-rewrite*")))... | 
| 97940 |  20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 6e    73 66 6f 72 6d 73 20 67 70 74 65 6c 2d 70 72 6f  | ...........:transforms.gptel-pro | 
| 97960 |  6d 70 74 2d 74 72 61 6e 73 66 6f 72 6d 2d 66 75    6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20  | mpt-transform-functions......... | 
| 97980 |  20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 23    27 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d  | .....:callback.#'gptel--rewrite- | 
| 979a0 |  63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20    3b 3b 20 4d 6f 76 65 20 62 61 63 6b 20 73 6f 20  | callback).......;;.Move.back.so. | 
| 979c0 |  74 68 61 74 20 74 68 65 20 63 75 72 73 6f 72 20    69 73 20 6f 6e 20 74 68 65 20 6f 76 65 72 6c 61  | that.the.cursor.is.on.the.overla | 
| 979e0 |  79 20 77 68 65 6e 20 64 6f 6e 65 2e 0a 20 20 20    20 20 20 28 75 6e 6c 65 73 73 20 28 67 65 74 2d  | y.when.done........(unless.(get- | 
| 97a00 |  63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70    6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 72 65 77  | char-property.(point).'gptel-rew | 
| 97a20 |  72 69 74 65 29 0a 20 20 20 20 20 20 20 20 28 77    68 65 6e 20 28 3d 20 28 70 6f 69 6e 74 29 20 28  | rite).........(when.(=.(point).( | 
| 97a40 |  72 65 67 69 6f 6e 2d 65 6e 64 29 29 20 28 62 61    63 6b 77 61 72 64 2d 63 68 61 72 20 31 29 29 29  | region-end)).(backward-char.1))) | 
| 97a60 |  0a 20 20 20 20 20 20 28 64 65 61 63 74 69 76 61    74 65 2d 6d 61 72 6b 29 29 29 29 0a 0a 3b 3b 20  | .......(deactivate-mark))))..;;. | 
| 97a80 |  41 6c 6c 6f 77 20 74 68 69 73 20 74 6f 20 62 65    20 63 61 6c 6c 65 64 20 6e 6f 6e 2d 69 6e 74 65  | Allow.this.to.be.called.non-inte | 
| 97aa0 |  72 61 63 74 69 76 65 6c 79 20 66 6f 72 20 64 72    79 20 72 75 6e 73 0a 28 70 75 74 20 27 67 70 74  | ractively.for.dry.runs.(put.'gpt | 
| 97ac0 |  65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69    74 65 20 27 69 6e 74 65 72 61 63 74 69 76 65 2d  | el--suffix-rewrite.'interactive- | 
| 97ae0 |  6f 6e 6c 79 20 6e 69 6c 29 0a 0a 28 74 72 61 6e    73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66  | only.nil)..(transient-define-suf | 
| 97b00 |  66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69    78 2d 72 65 77 72 69 74 65 2d 64 69 66 66 20 28  | fix.gptel--suffix-rewrite-diff.( | 
| 97b20 |  26 6f 70 74 69 6f 6e 61 6c 20 73 77 69 74 63 68    65 73 29 0a 20 20 22 44 69 66 66 20 4c 4c 4d 20  | &optional.switches)..."Diff.LLM. | 
| 97b40 |  6f 75 74 70 75 74 20 61 67 61 69 6e 73 74 20 62    75 66 66 65 72 2e 22 0a 20 20 3a 69 66 20 28 6c  | output.against.buffer."...:if.(l | 
| 97b60 |  61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d    72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73  | ambda.().gptel--rewrite-overlays | 
| 97b80 |  29 0a 20 20 3a 6b 65 79 20 22 44 22 0a 20 20 3a    64 65 73 63 72 69 70 74 69 6f 6e 20 22 44 69 66  | )...:key."D"...:description."Dif | 
| 97ba0 |  66 20 20 4c 4c 4d 20 72 65 77 72 69 74 65 73 22    0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20  | f..LLM.rewrites"...(interactive. | 
| 97bc0 |  28 6c 69 73 74 20 28 74 72 61 6e 73 69 65 6e 74    2d 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d  | (list.(transient-args.transient- | 
| 97be0 |  63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 29    29 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77  | current-command)))...(gptel--rew | 
| 97c00 |  72 69 74 65 2d 64 69 66 66 20 67 70 74 65 6c 2d    2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79  | rite-diff.gptel--rewrite-overlay | 
| 97c20 |  73 20 73 77 69 74 63 68 65 73 29 29 0a 0a 28 74    72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d  | s.switches))..(transient-define- | 
| 97c40 |  73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75    66 66 69 78 2d 72 65 77 72 69 74 65 2d 65 64 69  | suffix.gptel--suffix-rewrite-edi | 
| 97c60 |  66 66 20 28 29 0a 20 20 22 45 64 69 66 66 20 4c    4c 4d 20 6f 75 74 70 75 74 20 61 67 61 69 6e 73  | ff.()..."Ediff.LLM.output.agains | 
| 97c80 |  74 20 62 75 66 66 65 72 2e 22 0a 20 20 3a 69 66    20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65  | t.buffer."...:if.(lambda.().gpte | 
| 97ca0 |  6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c    61 79 73 29 0a 20 20 3a 6b 65 79 20 22 45 22 0a  | l--rewrite-overlays)...:key."E". | 
| 97cc0 |  20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22    45 64 69 66 66 20 4c 4c 4d 20 72 65 77 72 69 74  | ..:description."Ediff.LLM.rewrit | 
| 97ce0 |  65 73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69    76 65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65  | es"...(interactive)...(gptel--re | 
| 97d00 |  77 72 69 74 65 2d 65 64 69 66 66 20 67 70 74 65    6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c  | write-ediff.gptel--rewrite-overl | 
| 97d20 |  61 79 73 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e    74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20  | ays))..(transient-define-suffix. | 
| 97d40 |  67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65    77 72 69 74 65 2d 6d 65 72 67 65 20 28 29 0a 20  | gptel--suffix-rewrite-merge.().. | 
| 97d60 |  20 22 49 6e 73 65 72 74 20 4c 4c 4d 20 6f 75 74    70 75 74 20 61 73 20 6d 65 72 67 65 20 63 6f 6e  | ."Insert.LLM.output.as.merge.con | 
| 97d80 |  66 6c 69 63 74 73 22 0a 20 20 3a 69 66 20 28 6c    61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d  | flicts"...:if.(lambda.().gptel-- | 
| 97da0 |  72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73    29 0a 20 20 3a 6b 65 79 20 22 4d 22 0a 20 20 3a  | rewrite-overlays)...:key."M"...: | 
| 97dc0 |  64 65 73 63 72 69 70 74 69 6f 6e 20 22 4d 65 72    67 65 20 77 69 74 68 20 63 6f 6e 66 6c 69 63 74  | description."Merge.with.conflict | 
| 97de0 |  73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76    65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77  | s"...(interactive)...(gptel--rew | 
| 97e00 |  72 69 74 65 2d 6d 65 72 67 65 20 67 70 74 65 6c    2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c 61  | rite-merge.gptel--rewrite-overla | 
| 97e20 |  79 73 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74    2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67  | ys))..(transient-define-suffix.g | 
| 97e40 |  70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77    72 69 74 65 2d 61 63 63 65 70 74 20 28 29 0a 20  | ptel--suffix-rewrite-accept.().. | 
| 97e60 |  20 22 41 63 63 65 70 74 20 70 65 6e 64 69 6e 67    20 4c 4c 4d 20 72 65 77 72 69 74 65 73 2e 22 0a  | ."Accept.pending.LLM.rewrites.". | 
| 97e80 |  20 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29    20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d  | ..:if.(lambda.().gptel--rewrite- | 
| 97ea0 |  6f 76 65 72 6c 61 79 73 29 0a 20 20 3a 6b 65 79    20 22 41 22 0a 20 20 3a 64 65 73 63 72 69 70 74  | overlays)...:key."A"...:descript | 
| 97ec0 |  69 6f 6e 20 22 41 63 63 65 70 74 20 61 6e 64 20    72 65 70 6c 61 63 65 22 0a 20 20 28 69 6e 74 65  | ion."Accept.and.replace"...(inte | 
| 97ee0 |  72 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65    6c 2d 2d 72 65 77 72 69 74 65 2d 61 63 63 65 70  | ractive)...(gptel--rewrite-accep | 
| 97f00 |  74 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65    2d 6f 76 65 72 6c 61 79 73 29 29 0a 0a 28 74 72  | t.gptel--rewrite-overlays))..(tr | 
| 97f20 |  61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73    75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66  | ansient-define-suffix.gptel--suf | 
| 97f40 |  66 69 78 2d 72 65 77 72 69 74 65 2d 72 65 6a 65    63 74 20 28 29 0a 20 20 22 43 6c 65 61 72 20 70  | fix-rewrite-reject.()..."Clear.p | 
| 97f60 |  65 6e 64 69 6e 67 20 4c 4c 4d 20 72 65 77 72 69    74 65 73 2e 22 0a 20 20 3a 69 66 20 28 6c 61 6d  | ending.LLM.rewrites."...:if.(lam | 
| 97f80 |  62 64 61 20 28 29 20 67 70 74 65 6c 2d 2d 72 65    77 72 69 74 65 2d 6f 76 65 72 6c 61 79 73 29 0a  | bda.().gptel--rewrite-overlays). | 
| 97fa0 |  20 20 3a 6b 65 79 20 22 4b 22 0a 20 20 3a 64 65    73 63 72 69 70 74 69 6f 6e 20 22 43 6c 65 61 72  | ..:key."K"...:description."Clear | 
| 97fc0 |  20 70 65 6e 64 69 6e 67 20 72 65 77 72 69 74 65    73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76  | .pending.rewrites"...(interactiv | 
| 97fe0 |  65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 72 65 77    72 69 74 65 2d 72 65 6a 65 63 74 20 67 70 74 65  | e)...(gptel--rewrite-reject.gpte | 
| 98000 |  6c 2d 2d 72 65 77 72 69 74 65 2d 6f 76 65 72 6c    61 79 73 29 29 0a 0a 28 70 72 6f 76 69 64 65 20  | l--rewrite-overlays))..(provide. | 
| 98020 |  27 67 70 74 65 6c 2d 72 65 77 72 69 74 65 29 0a    3b 3b 3b 20 67 70 74 65 6c 2d 72 65 77 72 69 74  | 'gptel-rewrite).;;;.gptel-rewrit | 
| 98040 |  65 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a    3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c  | e.el.ends.here..;;.Local.Variabl | 
| 98060 |  65 73 3a 0a 3b 3b 20 6f 75 74 6c 69 6e 65 2d 72    65 67 65 78 70 3a 20 22 5e 3b 3b 20 5c 5c 2a 2b  | es:.;;.outline-regexp:."^;;.\\*+ | 
| 98080 |  22 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ".;;.End:....................... | 
| 980a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 980c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 980e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98100 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98120 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 981a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 981c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 981e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98200 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 6f 70 65 6e 61 69 2e 65 6c 00 00 00  | gptel-0.9.8.5/gptel-openai.el... | 
| 98220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98260 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 98280 |  30 30 37 30 34 33 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 33 35 37 00 20 30 00 00 00  | 0070430.00000000000.014357..0... | 
| 982a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 982c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 982e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98300 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 98320 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 98340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 983a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 983c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 983e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 98400 |  3b 3b 3b 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69    2e 65 6c 20 2d 2d 2d 20 20 43 68 61 74 47 50 54  | ;;;.gptel-openai.el.---..ChatGPT | 
| 98420 |  20 73 75 70 70 70 6f 72 74 20 66 6f 72 20 67 70    74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c  | .suppport.for.gptel..-*-.lexical | 
| 98440 |  2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d    0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28  | -binding:.t;.-*-..;;.Copyright.( | 
| 98460 |  43 29 20 32 30 32 33 2d 32 30 32 35 20 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | C).2023-2025..Karthik.Chikmagalu | 
| 98480 |  72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61    72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75  | r..;;.Author:.Karthik.Chikmagalu | 
| 984a0 |  72 20 3c 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61    67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e  | r.<karthikchikmagalur@gmail.com> | 
| 984c0 |  0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61    6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61  | ..;;.This.program.is.free.softwa | 
| 984e0 |  72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69    73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f  | re;.you.can.redistribute.it.and/ | 
| 98500 |  6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20    75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20  | or.modify.;;.it.under.the.terms. | 
| 98520 |  6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72    61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73  | of.the.GNU.General.Public.Licens | 
| 98540 |  65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62    79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f  | e.as.published.by.;;.the.Free.So | 
| 98560 |  66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f    6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f  | ftware.Foundation,.either.versio | 
| 98580 |  6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e    73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f  | n.3.of.the.License,.or.;;.(at.yo | 
| 985a0 |  75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c    61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b  | ur.option).any.later.version...; | 
| 985c0 |  3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69    73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e  | ;.This.program.is.distributed.in | 
| 985e0 |  20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69    74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c  | .the.hope.that.it.will.be.useful | 
| 98600 |  2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54    20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77  | ,.;;.but.WITHOUT.ANY.WARRANTY;.w | 
| 98620 |  69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20    69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79  | ithout.even.the.implied.warranty | 
| 98640 |  20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41    42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53  | .of.;;.MERCHANTABILITY.or.FITNES | 
| 98660 |  53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c    41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65  | S.FOR.A.PARTICULAR.PURPOSE...See | 
| 98680 |  20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65    72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e  | .the.;;.GNU.General.Public.Licen | 
| 986a0 |  73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61    69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f  | se.for.more.details...;;.You.sho | 
| 986c0 |  75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65    64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  | uld.have.received.a.copy.of.the. | 
| 986e0 |  47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c    69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c  | GNU.General.Public.License.;;.al | 
| 98700 |  6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72    6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20  | ong.with.this.program...If.not,. | 
| 98720 |  73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77    2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65  | see.<https://www.gnu.org/license | 
| 98740 |  73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e    74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66  | s/>...;;;.Commentary:..;;.This.f | 
| 98760 |  69 6c 65 20 61 64 64 73 20 73 75 70 70 6f 72 74    20 66 6f 72 20 74 68 65 20 43 68 61 74 47 50 54  | ile.adds.support.for.the.ChatGPT | 
| 98780 |  20 41 50 49 20 74 6f 20 67 70 74 65 6c 0a 0a 3b    3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72  | .API.to.gptel..;;;.Code:.(requir | 
| 987a0 |  65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28    65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c  | e.'cl-generic).(eval-when-compil | 
| 987c0 |  65 0a 20 20 28 72 65 71 75 69 72 65 20 27 63 6c    2d 6c 69 62 29 29 0a 28 72 65 71 75 69 72 65 20  | e...(require.'cl-lib)).(require. | 
| 987e0 |  27 6d 61 70 29 0a 0a 28 64 65 66 76 61 72 20 67    70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 28 64 65 66  | 'map)..(defvar.gptel-model).(def | 
| 98800 |  76 61 72 20 67 70 74 65 6c 2d 73 74 72 65 61 6d    29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d  | var.gptel-stream).(defvar.gptel- | 
| 98820 |  75 73 65 2d 63 75 72 6c 29 0a 28 64 65 66 76 61    72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29  | use-curl).(defvar.gptel-backend) | 
| 98840 |  0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 74    65 6d 70 65 72 61 74 75 72 65 29 0a 28 64 65 66  | .(defvar.gptel-temperature).(def | 
| 98860 |  76 61 72 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f    6b 65 6e 73 29 0a 28 64 65 66 76 61 72 20 67 70  | var.gptel-max-tokens).(defvar.gp | 
| 98880 |  74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73    61 67 65 29 0a 28 64 65 66 76 61 72 20 6a 73 6f  | tel--system-message).(defvar.jso | 
| 988a0 |  6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 28    64 65 66 76 61 72 20 67 70 74 65 6c 2d 6d 6f 64  | n-object-type).(defvar.gptel-mod | 
| 988c0 |  65 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c    2d 74 72 61 63 6b 2d 72 65 73 70 6f 6e 73 65 29  | e).(defvar.gptel-track-response) | 
| 988e0 |  0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 74    72 61 63 6b 2d 6d 65 64 69 61 29 0a 28 64 65 66  | .(defvar.gptel-track-media).(def | 
| 98900 |  76 61 72 20 67 70 74 65 6c 2d 75 73 65 2d 74 6f    6f 6c 73 29 0a 28 64 65 66 76 61 72 20 67 70 74  | var.gptel-use-tools).(defvar.gpt | 
| 98920 |  65 6c 2d 74 6f 6f 6c 73 29 0a 28 64 65 63 6c 61    72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65  | el-tools).(declare-function.gpte | 
| 98940 |  6c 2d 63 6f 6e 74 65 78 74 2d 2d 63 6f 6c 6c 65    63 74 2d 6d 65 64 69 61 20 22 67 70 74 65 6c 2d  | l-context--collect-media."gptel- | 
| 98960 |  63 6f 6e 74 65 78 74 22 29 0a 28 64 65 63 6c 61    72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65  | context").(declare-function.gpte | 
| 98980 |  6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64 65    20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61  | l--base64-encode."gptel").(decla | 
| 989a0 |  72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65    6c 2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73  | re-function.gptel--trim-prefixes | 
| 989c0 |  20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61    72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65  | ."gptel").(declare-function.gpte | 
| 989e0 |  6c 2d 2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c    69 6e 6b 73 20 22 67 70 74 65 6c 22 29 0a 28 64  | l--parse-media-links."gptel").(d | 
| 98a00 |  65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20    67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 63 61 70  | eclare-function.gptel--model-cap | 
| 98a20 |  61 62 6c 65 2d 70 20 22 67 70 74 65 6c 22 29 0a    28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f  | able-p."gptel").(declare-functio | 
| 98a40 |  6e 20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e    61 6d 65 20 22 67 70 74 65 6c 22 29 0a 28 64 65  | n.gptel--model-name."gptel").(de | 
| 98a60 |  63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67    70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65  | clare-function.gptel--get-api-ke | 
| 98a80 |  79 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c    61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 72 6f  | y."gptel").(declare-function.pro | 
| 98aa0 |  70 2d 6d 61 74 63 68 2d 76 61 6c 75 65 20 22 74    65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61  | p-match-value."text-property-sea | 
| 98ac0 |  72 63 68 22 29 0a 28 64 65 63 6c 61 72 65 2d 66    75 6e 63 74 69 6f 6e 20 74 65 78 74 2d 70 72 6f  | rch").(declare-function.text-pro | 
| 98ae0 |  70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63    6b 77 61 72 64 20 22 74 65 78 74 2d 70 72 6f 70  | perty-search-backward."text-prop | 
| 98b00 |  65 72 74 79 2d 73 65 61 72 63 68 22 29 0a 28 64    65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20  | erty-search").(declare-function. | 
| 98b20 |  6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22    29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74  | json-read."json").(declare-funct | 
| 98b40 |  69 6f 6e 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74    2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 20 22  | ion.gptel-prompt-prefix-string." | 
| 98b60 |  67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65    2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d  | gptel").(declare-function.gptel- | 
| 98b80 |  72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d    73 74 72 69 6e 67 20 22 67 70 74 65 6c 22 29 0a  | response-prefix-string."gptel"). | 
| 98ba0 |  28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f    6e 20 67 70 74 65 6c 2d 2d 6d 65 72 67 65 2d 70  | (declare-function.gptel--merge-p | 
| 98bc0 |  6c 69 73 74 73 20 22 67 70 74 65 6c 22 29 0a 28    64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e  | lists."gptel").(declare-function | 
| 98be0 |  20 67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 72 65    71 75 65 73 74 2d 70 61 72 61 6d 73 20 22 67 70  | .gptel--model-request-params."gp | 
| 98c00 |  74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66    75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 63 6f  | tel").(declare-function.gptel-co | 
| 98c20 |  6e 74 65 78 74 2d 2d 77 72 61 70 20 22 67 70 74    65 6c 2d 63 6f 6e 74 65 78 74 22 29 0a 28 64 65  | ntext--wrap."gptel-context").(de | 
| 98c40 |  63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67    70 74 65 6c 2d 2d 69 6e 6a 65 63 74 2d 70 72 6f  | clare-function.gptel--inject-pro | 
| 98c60 |  6d 70 74 20 22 67 70 74 65 6c 22 29 0a 28 64 65    63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67  | mpt."gptel").(declare-function.g | 
| 98c80 |  70 74 65 6c 2d 2d 70 61 72 73 65 2d 74 6f 6f 6c    73 20 22 67 70 74 65 6c 22 29 0a 0a 3b 3b 20 4a  | ptel--parse-tools."gptel")..;;.J | 
| 98ca0 |  53 4f 4e 20 63 6f 6e 76 65 72 73 69 6f 6e 20 73    65 6d 61 6e 74 69 63 73 20 75 73 65 64 20 62 79  | SON.conversion.semantics.used.by | 
| 98cc0 |  20 67 70 74 65 6c 0a 3b 3b 20 65 6d 70 74 79 20    6f 62 6a 65 63 74 20 22 7b 7d 22 20 3d 3e 20 65  | .gptel.;;.empty.object."{}".=>.e | 
| 98ce0 |  6d 70 74 79 20 6c 69 73 74 20 27 28 29 20 3d 3d    20 6e 69 6c 0a 3b 3b 20 6e 75 6c 6c 20 20 20 20  | mpty.list.'().==.nil.;;.null.... | 
| 98d00 |  20 20 20 20 20 20 20 20 20 20 3d 3e 20 3a 6e 75    6c 6c 0a 3b 3b 20 66 61 6c 73 65 20 20 20 20 20  | ..........=>.:null.;;.false..... | 
| 98d20 |  20 20 20 20 20 20 20 20 3d 3e 20 3a 6a 73 6f 6e    2d 66 61 6c 73 65 0a 0a 3b 3b 20 54 4f 44 4f 28  | ........=>.:json-false..;;.TODO( | 
| 98d40 |  74 6f 6f 6c 29 20 45 78 63 65 70 74 20 77 68 65    6e 20 72 65 61 64 69 6e 67 20 4a 53 4f 4e 20 66  | tool).Except.when.reading.JSON.f | 
| 98d60 |  72 6f 6d 20 61 20 73 74 72 69 6e 67 2c 20 77 68    65 72 65 20 6e 75 6c 6c 20 3d 3e 20 6e 69 6c 0a  | rom.a.string,.where.null.=>.nil. | 
| 98d80 |  0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c    2d 2d 6a 73 6f 6e 2d 72 65 61 64 20 28 29 0a 20  | .(defmacro.gptel--json-read.().. | 
| 98da0 |  20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6a    73 6f 6e 2d 70 61 72 73 65 2d 62 75 66 66 65 72  | .(if.(fboundp.'json-parse-buffer | 
| 98dc0 |  29 0a 20 20 20 20 20 20 60 28 6a 73 6f 6e 2d 70    61 72 73 65 2d 62 75 66 66 65 72 0a 20 20 20 20  | ).......`(json-parse-buffer..... | 
| 98de0 |  20 20 20 20 3a 6f 62 6a 65 63 74 2d 74 79 70 65    20 27 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20  | ....:object-type.'plist......... | 
| 98e00 |  3a 6e 75 6c 6c 2d 6f 62 6a 65 63 74 20 3a 6e 75    6c 6c 0a 20 20 20 20 20 20 20 20 3a 66 61 6c 73  | :null-object.:null.........:fals | 
| 98e20 |  65 2d 6f 62 6a 65 63 74 20 3a 6a 73 6f 6e 2d 66    61 6c 73 65 29 0a 20 20 20 20 28 72 65 71 75 69  | e-object.:json-false).....(requi | 
| 98e40 |  72 65 20 27 6a 73 6f 6e 29 0a 20 20 20 20 28 64    65 66 76 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 63  | re.'json).....(defvar.json-objec | 
| 98e60 |  74 2d 74 79 70 65 29 0a 20 20 20 20 28 64 65 66    76 61 72 20 6a 73 6f 6e 2d 6e 75 6c 6c 29 0a 20  | t-type).....(defvar.json-null).. | 
| 98e80 |  20 20 20 28 64 65 63 6c 61 72 65 2d 66 75 6e 63    74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22  | ...(declare-function.json-read." | 
| 98ea0 |  6a 73 6f 6e 22 20 28 29 29 0a 20 20 20 20 60 28    6c 65 74 20 28 28 6a 73 6f 6e 2d 6f 62 6a 65 63  | json".()).....`(let.((json-objec | 
| 98ec0 |  74 2d 74 79 70 65 20 27 70 6c 69 73 74 29 0a 20    20 20 20 20 20 20 20 20 20 20 28 6a 73 6f 6e 2d  | t-type.'plist)............(json- | 
| 98ee0 |  6e 75 6c 6c 20 3a 6e 75 6c 6c 29 29 0a 20 20 20    20 20 20 28 6a 73 6f 6e 2d 72 65 61 64 29 29 29  | null.:null)).......(json-read))) | 
| 98f00 |  29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74    65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 2d 73 74  | )..(defmacro.gptel--json-read-st | 
| 98f20 |  72 69 6e 67 20 28 73 74 72 29 0a 20 20 28 69 66    20 28 66 62 6f 75 6e 64 70 20 27 6a 73 6f 6e 2d  | ring.(str)...(if.(fboundp.'json- | 
| 98f40 |  70 61 72 73 65 2d 73 74 72 69 6e 67 29 0a 20 20    20 20 20 20 60 28 6a 73 6f 6e 2d 70 61 72 73 65  | parse-string).......`(json-parse | 
| 98f60 |  2d 73 74 72 69 6e 67 20 2c 73 74 72 0a 20 20 20    20 20 20 20 20 3a 6f 62 6a 65 63 74 2d 74 79 70  | -string.,str.........:object-typ | 
| 98f80 |  65 20 27 70 6c 69 73 74 0a 20 20 20 20 20 20 20    20 3a 6e 75 6c 6c 2d 6f 62 6a 65 63 74 20 6e 69  | e.'plist.........:null-object.ni | 
| 98fa0 |  6c 0a 20 20 20 20 20 20 20 20 3a 66 61 6c 73 65    2d 6f 62 6a 65 63 74 20 3a 6a 73 6f 6e 2d 66 61  | l.........:false-object.:json-fa | 
| 98fc0 |  6c 73 65 29 0a 20 20 20 20 28 72 65 71 75 69 72    65 20 27 6a 73 6f 6e 29 0a 20 20 20 20 28 64 65  | lse).....(require.'json).....(de | 
| 98fe0 |  66 76 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74    2d 74 79 70 65 29 0a 20 20 20 20 28 64 65 63 6c  | fvar.json-object-type).....(decl | 
| 99000 |  61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f    6e 2d 72 65 61 64 2d 66 72 6f 6d 2d 73 74 72 69  | are-function.json-read-from-stri | 
| 99020 |  6e 67 20 22 6a 73 6f 6e 22 20 28 29 29 0a 20 20    20 20 60 28 6c 65 74 20 28 28 6a 73 6f 6e 2d 6f  | ng."json".()).....`(let.((json-o | 
| 99040 |  62 6a 65 63 74 2d 74 79 70 65 20 27 70 6c 69 73    74 29 29 0a 20 20 20 20 20 20 28 6a 73 6f 6e 2d  | bject-type.'plist)).......(json- | 
| 99060 |  72 65 61 64 2d 66 72 6f 6d 2d 73 74 72 69 6e 67    20 2c 73 74 72 29 29 29 29 0a 0a 28 64 65 66 6d  | read-from-string.,str))))..(defm | 
| 99080 |  61 63 72 6f 20 67 70 74 65 6c 2d 2d 6a 73 6f 6e    2d 65 6e 63 6f 64 65 20 28 6f 62 6a 65 63 74 29  | acro.gptel--json-encode.(object) | 
| 990a0 |  0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20    27 6a 73 6f 6e 2d 73 65 72 69 61 6c 69 7a 65 29  | ...(if.(fboundp.'json-serialize) | 
| 990c0 |  0a 20 20 20 20 20 20 60 28 6a 73 6f 6e 2d 73 65    72 69 61 6c 69 7a 65 20 2c 6f 62 6a 65 63 74 0a  | .......`(json-serialize.,object. | 
| 990e0 |  20 20 20 20 20 20 20 20 3a 6e 75 6c 6c 2d 6f 62    6a 65 63 74 20 3a 6e 75 6c 6c 0a 20 20 20 20 20  | ........:null-object.:null...... | 
| 99100 |  20 20 20 3a 66 61 6c 73 65 2d 6f 62 6a 65 63 74    20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20  | ...:false-object.:json-false)... | 
| 99120 |  20 20 28 72 65 71 75 69 72 65 20 27 6a 73 6f 6e    29 0a 20 20 20 20 28 64 65 66 76 61 72 20 6a 73  | ..(require.'json).....(defvar.js | 
| 99140 |  6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 28 64    65 66 76 61 72 20 6a 73 6f 6e 2d 6e 75 6c 6c 29  | on-false).....(defvar.json-null) | 
| 99160 |  0a 20 20 20 20 28 64 65 63 6c 61 72 65 2d 66 75    6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 65 6e 63 6f  | .....(declare-function.json-enco | 
| 99180 |  64 65 20 22 6a 73 6f 6e 22 20 28 6f 62 6a 65 63    74 29 29 0a 20 20 20 20 60 28 6c 65 74 20 28 28  | de."json".(object)).....`(let.(( | 
| 991a0 |  6a 73 6f 6e 2d 66 61 6c 73 65 20 3a 6a 73 6f 6e    2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20  | json-false.:json-false)......... | 
| 991c0 |  20 20 20 28 6a 73 6f 6e 2d 6e 75 6c 6c 20 20 3a    6e 75 6c 6c 29 29 0a 20 20 20 20 20 20 28 6a 73  | ...(json-null..:null)).......(js | 
| 991e0 |  6f 6e 2d 65 6e 63 6f 64 65 20 2c 6f 62 6a 65 63    74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70  | on-encode.,object))))..(defun.gp | 
| 99200 |  74 65 6c 2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64    65 6c 73 20 28 6d 6f 64 65 6c 73 29 0a 20 20 22  | tel--process-models.(models)..." | 
| 99220 |  43 6f 6e 76 65 72 74 20 69 74 65 6d 73 20 69 6e    20 4d 4f 44 45 4c 53 20 74 6f 20 73 79 6d 62 6f  | Convert.items.in.MODELS.to.symbo | 
| 99240 |  6c 73 20 77 69 74 68 20 61 70 70 72 6f 70 72 69    61 74 65 20 70 72 6f 70 65 72 74 69 65 73 2e 22  | ls.with.appropriate.properties." | 
| 99260 |  0a 20 20 28 6c 65 74 20 28 28 6d 6f 64 65 6c 73    2d 70 72 6f 63 65 73 73 65 64 29 29 0a 20 20 20  | ...(let.((models-processed)).... | 
| 99280 |  20 28 64 6f 6c 69 73 74 20 28 6d 6f 64 65 6c 20    6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 28 63  | .(dolist.(model.models).......(c | 
| 992a0 |  6c 2d 65 74 79 70 65 63 61 73 65 20 6d 6f 64 65    6c 0a 20 20 20 20 20 20 20 20 28 73 74 72 69 6e  | l-etypecase.model.........(strin | 
| 992c0 |  67 20 28 70 75 73 68 20 28 69 6e 74 65 72 6e 20    6d 6f 64 65 6c 29 20 6d 6f 64 65 6c 73 2d 70 72  | g.(push.(intern.model).models-pr | 
| 992e0 |  6f 63 65 73 73 65 64 29 29 0a 20 20 20 20 20 20    20 20 28 73 79 6d 62 6f 6c 20 28 70 75 73 68 20  | ocessed)).........(symbol.(push. | 
| 99300 |  6d 6f 64 65 6c 20 6d 6f 64 65 6c 73 2d 70 72 6f    63 65 73 73 65 64 29 29 0a 20 20 20 20 20 20 20  | model.models-processed))........ | 
| 99320 |  20 28 63 6f 6e 73 0a 20 20 20 20 20 20 20 20 20    28 63 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e  | .(cons..........(cl-destructurin | 
| 99340 |  67 2d 62 69 6e 64 20 28 6e 61 6d 65 20 2e 20 70    72 6f 70 73 29 20 6d 6f 64 65 6c 0a 20 20 20 20  | g-bind.(name...props).model..... | 
| 99360 |  20 20 20 20 20 20 20 28 73 65 74 66 20 28 73 79    6d 62 6f 6c 2d 70 6c 69 73 74 20 6e 61 6d 65 29  | .......(setf.(symbol-plist.name) | 
| 99380 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 4d 41 59 42 45 3a 20 4d 65 72 67  | ..................;;.MAYBE:.Merg | 
| 993a0 |  69 6e 67 20 65 78 69 73 74 69 6e 67 20 73 79 6d    62 6f 6c 20 70 6c 69 73 74 73 20 69 73 20 73 61  | ing.existing.symbol.plists.is.sa | 
| 993c0 |  66 65 72 2c 20 62 75 74 20 6d 61 6b 65 73 20 69    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fer,.but.makes.it............... | 
| 993e0 |  20 20 20 3b 3b 20 64 69 66 66 69 63 75 6c 74 20    74 6f 20 72 65 73 65 74 20 61 20 73 79 6d 62 6f  | ...;;.difficult.to.reset.a.symbo | 
| 99400 |  6c 20 70 6c 69 73 74 2c 20 73 69 6e 63 65 20 72    65 6d 6f 76 69 6e 67 20 6b 65 79 73 20 66 72 6f  | l.plist,.since.removing.keys.fro | 
| 99420 |  6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 69 74 20 28 61 73 20 6f 70 70  | m..................;;.it.(as.opp | 
| 99440 |  6f 73 65 64 20 74 6f 20 73 65 74 74 69 6e 67 20    74 68 65 6d 20 74 6f 20 6e 69 6c 29 20 69 73 20  | osed.to.setting.them.to.nil).is. | 
| 99460 |  6d 6f 72 65 20 77 6f 72 6b 2e 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20  | more.work...................;;.. | 
| 99480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 28 6d 61 70 2d 6d 65 72 67 65 20 27 70  | ................;;.(map-merge.'p | 
| 994a0 |  6c 69 73 74 20 28 73 79 6d 62 6f 6c 2d 70 6c 69    73 74 20 6e 61 6d 65 29 20 70 72 6f 70 73 29 0a  | list.(symbol-plist.name).props). | 
| 994c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 70 72 6f 70 73 29 0a 20 20 20 20 20 20 20 20  | .................props)......... | 
| 994e0 |  20 20 20 28 70 75 73 68 20 6e 61 6d 65 20 6d 6f    64 65 6c 73 2d 70 72 6f 63 65 73 73 65 64 29 29  | ...(push.name.models-processed)) | 
| 99500 |  29 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73    65 20 6d 6f 64 65 6c 73 2d 70 72 6f 63 65 73 73  | ))).....(nreverse.models-process | 
| 99520 |  65 64 29 29 29 0a 0a 3b 3b 3b 20 43 6f 6d 6d 6f    6e 20 62 61 63 6b 65 6e 64 20 73 74 72 75 63 74  | ed)))..;;;.Common.backend.struct | 
| 99540 |  20 66 6f 72 20 4c 4c 4d 20 73 75 70 70 6f 72 74    0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d  | .for.LLM.support.(defvar.gptel-- | 
| 99560 |  6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 20 6e    69 6c 0a 20 20 22 41 6c 69 73 74 20 6f 66 20 4c  | known-backends.nil..."Alist.of.L | 
| 99580 |  4c 4d 20 62 61 63 6b 65 6e 64 73 20 6b 6e 6f 77    6e 20 74 6f 20 67 70 74 65 6c 2e 0a 0a 54 68 69  | LM.backends.known.to.gptel...Thi | 
| 995a0 |  73 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6d 61    70 70 69 6e 67 20 75 73 65 72 2d 70 72 6f 76 69  | s.is.an.alist.mapping.user-provi | 
| 995c0 |  64 65 64 20 6e 61 6d 65 73 20 74 6f 20 62 61 63    6b 65 6e 64 20 73 74 72 75 63 74 73 2c 0a 73 65  | ded.names.to.backend.structs,.se | 
| 995e0 |  65 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64    27 2e 0a 0a 59 6f 75 20 63 61 6e 20 68 61 76 65  | e.`gptel-backend'...You.can.have | 
| 99600 |  20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 62    61 63 6b 65 6e 64 20 70 6f 69 6e 74 69 6e 67 20  | .more.than.one.backend.pointing. | 
| 99620 |  74 6f 20 74 68 65 20 73 61 6d 65 20 72 65 73 6f    75 72 63 65 0a 77 69 74 68 20 64 69 66 66 65 72  | to.the.same.resource.with.differ | 
| 99640 |  69 6e 67 20 73 65 74 74 69 6e 67 73 2e 22 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 67 65  | ing.settings.")..(defun.gptel-ge | 
| 99660 |  74 2d 62 61 63 6b 65 6e 64 20 28 6e 61 6d 65 29    0a 20 20 22 52 65 74 75 72 6e 20 67 70 74 65 6c  | t-backend.(name)..."Return.gptel | 
| 99680 |  20 62 61 63 6b 65 6e 64 20 77 69 74 68 20 4e 41    4d 45 2e 0a 0a 54 68 72 6f 77 20 61 6e 20 65 72  | .backend.with.NAME...Throw.an.er | 
| 996a0 |  72 6f 72 20 69 66 20 74 68 65 72 65 20 69 73 20    6e 6f 20 6d 61 74 63 68 2e 22 0a 20 20 28 6f 72  | ror.if.there.is.no.match."...(or | 
| 996c0 |  20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65    20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61  | .(alist-get.name.gptel--known-ba | 
| 996e0 |  63 6b 65 6e 64 73 20 6e 69 6c 20 6e 69 6c 20 23    27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 28 75  | ckends.nil.nil.#'equal).......(u | 
| 99700 |  73 65 72 2d 65 72 72 6f 72 20 22 42 61 63 6b 65    6e 64 20 25 73 20 69 73 20 6e 6f 74 20 6b 6e 6f  | ser-error."Backend.%s.is.not.kno | 
| 99720 |  77 6e 20 74 6f 20 62 65 20 64 65 66 69 6e 65 64    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | wn.to.be.defined"............... | 
| 99740 |  20 20 20 20 6e 61 6d 65 29 29 29 0a 0a 28 67 76    2d 64 65 66 69 6e 65 2d 73 65 74 74 65 72 20 67  | ....name)))..(gv-define-setter.g | 
| 99760 |  70 74 65 6c 2d 67 65 74 2d 62 61 63 6b 65 6e 64    20 28 76 61 6c 20 6e 61 6d 65 29 0a 20 20 60 28  | ptel-get-backend.(val.name)...`( | 
| 99780 |  73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20    2c 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f  | setf.(alist-get.,name.gptel--kno | 
| 997a0 |  77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20    20 20 20 20 20 20 6e 69 6c 20 74 20 23 27 65 71  | wn-backends...........nil.t.#'eq | 
| 997c0 |  75 61 6c 29 0a 20 20 20 20 2c 76 61 6c 29 29 0a    0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 0a 20  | ual).....,val))..(cl-defstruct.. | 
| 997e0 |  20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e    64 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20  | ...(gptel-backend.(:constructor. | 
| 99800 |  67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 62 61 63 6b    65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  | gptel--make-backend)............ | 
| 99820 |  20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72    20 67 70 74 65 6c 2d 2d 63 6f 70 79 2d 62 61 63  | ........(:copier.gptel--copy-bac | 
| 99840 |  6b 65 6e 64 29 29 0a 20 20 6e 61 6d 65 20 68 6f    73 74 20 68 65 61 64 65 72 20 70 72 6f 74 6f 63  | kend))...name.host.header.protoc | 
| 99860 |  6f 6c 20 73 74 72 65 61 6d 0a 20 20 65 6e 64 70    6f 69 6e 74 20 6b 65 79 20 6d 6f 64 65 6c 73 20  | ol.stream...endpoint.key.models. | 
| 99880 |  75 72 6c 20 72 65 71 75 65 73 74 2d 70 61 72 61    6d 73 0a 20 20 63 75 72 6c 2d 61 72 67 73 0a 20  | url.request-params...curl-args.. | 
| 998a0 |  20 28 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20    6e 69 6c 20 3a 64 6f 63 75 6d 65 6e 74 61 74 69  | .(coding-system.nil.:documentati | 
| 998c0 |  6f 6e 20 22 43 61 6e 20 62 65 20 73 65 74 20 74    6f 20 60 62 69 6e 61 72 79 27 20 69 66 20 74 68  | on."Can.be.set.to.`binary'.if.th | 
| 998e0 |  65 20 62 61 63 6b 65 6e 64 20 65 78 70 65 63 74    73 20 6e 6f 6e 20 55 54 46 2d 38 20 6f 75 74 70  | e.backend.expects.non.UTF-8.outp | 
| 99900 |  75 74 2e 22 29 29 0a 0a 3b 3b 3b 20 4f 70 65 6e    41 49 20 28 43 68 61 74 47 50 54 29 0a 28 63 6c  | ut."))..;;;.OpenAI.(ChatGPT).(cl | 
| 99920 |  2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65    6c 2d 6f 70 65 6e 61 69 20 28 3a 63 6f 6e 73 74  | -defstruct.(gptel-openai.(:const | 
| 99940 |  72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61    6b 65 2d 6f 70 65 6e 61 69 29 0a 20 20 20 20 20  | ructor.gptel--make-openai)...... | 
| 99960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20  | .......................(:copier. | 
| 99980 |  6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nil)............................ | 
| 999a0 |  20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c    2d 62 61 63 6b 65 6e 64 29 29 29 0a 0a 3b 3b 20  | .(:include.gptel-backend)))..;;. | 
| 999c0 |  48 6f 77 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e    67 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73  | How.the.following.function.works | 
| 999e0 |  3a 0a 3b 3b 0a 3b 3b 20 54 68 65 20 4f 70 65 6e    41 49 20 41 50 49 20 72 65 74 75 72 6e 73 20 61  | :.;;.;;.The.OpenAI.API.returns.a | 
| 99a00 |  20 73 74 72 65 61 6d 20 6f 66 20 64 61 74 61 20    63 68 75 6e 6b 73 2e 20 20 45 61 63 68 20 64 61  | .stream.of.data.chunks...Each.da | 
| 99a20 |  74 61 20 63 68 75 6e 6b 20 68 61 73 20 61 0a 3b    3b 20 63 6f 6d 70 6f 6e 65 6e 74 20 74 68 61 74  | ta.chunk.has.a.;;.component.that | 
| 99a40 |  20 63 61 6e 20 62 65 20 70 61 72 73 65 64 20 61    73 20 4a 53 4f 4e 2e 20 20 42 65 73 69 64 65 73  | .can.be.parsed.as.JSON...Besides | 
| 99a60 |  20 6d 65 74 61 64 61 74 61 2c 20 65 61 63 68 20    63 68 75 6e 6b 20 68 61 73 0a 3b 3b 20 65 69 74  | .metadata,.each.chunk.has.;;.eit | 
| 99a80 |  68 65 72 20 73 6f 6d 65 20 74 65 78 74 20 6f 72    20 70 61 72 74 20 6f 66 20 61 20 74 6f 6f 6c 20  | her.some.text.or.part.of.a.tool. | 
| 99aa0 |  63 61 6c 6c 2e 0a 3b 3b 0a 3b 3b 20 49 66 20 77    65 20 66 69 6e 64 20 74 65 78 74 2c 20 77 65 20  | call..;;.;;.If.we.find.text,.we. | 
| 99ac0 |  63 6f 6c 6c 65 63 74 20 69 74 20 69 6e 20 61 20    6c 69 73 74 2c 20 63 6f 6e 63 61 74 20 74 68 65  | collect.it.in.a.list,.concat.the | 
| 99ae0 |  6d 20 61 74 20 74 68 65 20 65 6e 64 20 61 6e 64    20 72 65 74 75 72 6e 0a 3b 3b 20 69 74 2e 0a 3b  | m.at.the.end.and.return.;;.it..; | 
| 99b00 |  3b 0a 3b 3b 20 49 66 20 77 65 20 66 69 6e 64 20    70 61 72 74 20 6f 66 20 61 20 74 6f 6f 6c 20 63  | ;.;;.If.we.find.part.of.a.tool.c | 
| 99b20 |  61 6c 6c 2c 20 77 65 20 62 65 67 69 6e 20 63 6f    6c 6c 65 63 74 69 6e 67 20 74 68 65 20 70 69 65  | all,.we.begin.collecting.the.pie | 
| 99b40 |  63 65 73 20 69 6e 0a 3b 3b 20 49 4e 46 4f 20 2d    3e 20 3a 74 6f 6f 6c 2d 75 73 65 2e 0a 3b 3b 0a  | ces.in.;;.INFO.->.:tool-use..;;. | 
| 99b60 |  3b 3b 20 54 6f 6f 6c 20 63 61 6c 6c 20 61 72 67    75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 6d 73  | ;;.Tool.call.arguments.are.thems | 
| 99b80 |  65 6c 76 65 73 20 4a 53 4f 4e 20 65 6e 63 6f 64    65 64 20 73 74 72 69 6e 67 73 20 63 61 6e 20 62  | elves.JSON.encoded.strings.can.b | 
| 99ba0 |  65 20 73 70 72 65 61 64 20 61 63 72 6f 73 73 0a    3b 3b 20 63 68 75 6e 6b 73 2e 20 20 57 65 20 63  | e.spread.across.;;.chunks...We.c | 
| 99bc0 |  6f 6c 6c 65 63 74 20 74 68 65 6d 20 69 6e 20 49    4e 46 4f 20 2d 3e 20 3a 70 61 72 74 69 61 6c 5f  | ollect.them.in.INFO.->.:partial_ | 
| 99be0 |  6a 73 6f 6e 2e 20 20 54 68 65 20 65 6e 64 20 6f    66 20 61 20 74 6f 6f 6c 20 63 61 6c 6c 0a 3b 3b  | json...The.end.of.a.tool.call.;; | 
| 99c00 |  20 63 68 75 6e 6b 20 69 73 20 6d 61 72 6b 65 64    20 62 79 20 74 68 65 20 62 65 67 69 6e 6e 69 6e  | .chunk.is.marked.by.the.beginnin | 
| 99c20 |  67 20 6f 66 20 61 6e 6f 74 68 65 72 2c 20 6f 72    20 62 79 20 74 68 65 20 65 6e 64 20 6f 66 20 74  | g.of.another,.or.by.the.end.of.t | 
| 99c40 |  68 65 20 73 74 72 65 61 6d 2e 20 20 49 6e 0a 3b    3b 20 65 69 74 68 65 72 20 63 61 73 65 20 77 65  | he.stream...In.;;.either.case.we | 
| 99c60 |  20 66 6c 61 74 65 6e 20 74 68 65 20 3a 70 61 72    74 69 61 6c 5f 6a 73 6f 6e 20 77 65 20 68 61 76  | .flaten.the.:partial_json.we.hav | 
| 99c80 |  65 20 74 68 75 73 20 66 61 72 2c 20 61 64 64 20    69 74 20 74 6f 20 74 68 65 20 74 6f 6f 6c 0a 3b  | e.thus.far,.add.it.to.the.tool.; | 
| 99ca0 |  3b 20 63 61 6c 6c 20 73 70 65 63 20 69 6e 20 3a    74 6f 6f 6c 2d 75 73 65 20 61 6e 64 20 72 65 73  | ;.call.spec.in.:tool-use.and.res | 
| 99cc0 |  65 74 20 69 74 2e 20 20 46 69 6e 61 6c 6c 79 20    77 65 20 61 70 70 65 6e 64 20 74 68 65 20 74 6f  | et.it...Finally.we.append.the.to | 
| 99ce0 |  6f 6c 20 63 61 6c 6c 73 20 74 6f 20 74 68 65 0a    3b 3b 20 28 49 4e 46 4f 20 2d 3e 20 3a 64 61 74  | ol.calls.to.the.;;.(INFO.->.:dat | 
| 99d00 |  61 20 2d 3e 20 3a 6d 65 73 73 61 67 65 73 29 20    6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73 2e  | a.->.:messages).list.of.prompts. | 
| 99d20 |  0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20    67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73  | ..(cl-defmethod.gptel-curl--pars | 
| 99d40 |  65 2d 73 74 72 65 61 6d 20 28 28 5f 62 61 63 6b    65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69  | e-stream.((_backend.gptel-openai | 
| 99d60 |  29 20 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65    20 61 6e 20 4f 70 65 6e 41 49 20 41 50 49 20 64  | ).info)..."Parse.an.OpenAI.API.d | 
| 99d80 |  61 74 61 20 73 74 72 65 61 6d 2e 0a 0a 52 65 74    75 72 6e 20 74 68 65 20 74 65 78 74 20 72 65 73  | ata.stream...Return.the.text.res | 
| 99da0 |  70 6f 6e 73 65 20 61 63 63 75 6d 75 6c 61 74 65    64 20 73 69 6e 63 65 20 74 68 65 20 6c 61 73 74  | ponse.accumulated.since.the.last | 
| 99dc0 |  20 63 61 6c 6c 20 74 6f 20 74 68 69 73 0a 66 75    6e 63 74 69 6f 6e 2e 20 20 41 64 64 69 74 69 6f  | .call.to.this.function...Additio | 
| 99de0 |  6e 61 6c 6c 79 2c 20 6d 75 74 61 74 65 20 73 74    61 74 65 20 49 4e 46 4f 20 74 6f 20 61 64 64 20  | nally,.mutate.state.INFO.to.add. | 
| 99e00 |  74 6f 6f 6c 2d 75 73 65 0a 69 6e 66 6f 72 6d 61    74 69 6f 6e 20 69 66 20 74 68 65 20 73 74 72 65  | tool-use.information.if.the.stre | 
| 99e20 |  61 6d 20 63 6f 6e 74 61 69 6e 73 20 69 74 2e 22    0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65  | am.contains.it."...(let*.((conte | 
| 99e40 |  6e 74 2d 73 74 72 73 29 29 0a 20 20 20 20 28 63    6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69  | nt-strs)).....(condition-case.ni | 
| 99e60 |  6c 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65    20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77  | l.........(while.(re-search-forw | 
| 99e80 |  61 72 64 20 22 5e 64 61 74 61 3a 22 20 6e 69 6c    20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 73  | ard."^data:".nil.t)...........(s | 
| 99ea0 |  61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20    20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28  | ave-match-data.............(if.( | 
| 99ec0 |  6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 20 2a 5c 5c    5b 44 4f 4e 45 5c 5c 5d 22 29 0a 20 20 20 20 20  | looking-at.".*\\[DONE\\]")...... | 
| 99ee0 |  20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68    65 20 73 74 72 65 61 6d 20 68 61 73 20 65 6e 64  | ...........;;.The.stream.has.end | 
| 99f00 |  65 64 2c 20 73 6f 20 77 65 20 64 6f 20 74 68 65    20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 6e 67  | ed,.so.we.do.the.following.thing | 
| 99f20 |  20 28 69 66 20 77 65 20 66 6f 75 6e 64 20 74 6f    6f 6c 20 63 61 6c 6c 73 29 0a 20 20 20 20 20 20  | .(if.we.found.tool.calls)....... | 
| 99f40 |  20 20 20 20 20 20 20 20 20 20 3b 3b 20 2d 20 70    61 63 6b 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 69  | ..........;;.-.pack.tool.calls.i | 
| 99f60 |  6e 74 6f 20 74 68 65 20 6d 65 73 73 61 67 65 73    20 70 72 6f 6d 70 74 73 20 6c 69 73 74 20 74 6f  | nto.the.messages.prompts.list.to | 
| 99f80 |  20 73 65 6e 64 20 28 49 4e 46 4f 20 2d 3e 20 3a    64 61 74 61 20 2d 3e 20 3a 6d 65 73 73 61 67 65  | .send.(INFO.->.:data.->.:message | 
| 99fa0 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 2d 20 63 6f 6c 6c 65 63 74 20  | s).................;;.-.collect. | 
| 99fc0 |  74 6f 6f 6c 20 63 61 6c 6c 73 20 28 66 6f 72 6d    61 74 74 65 64 20 64 69 66 66 65 72 65 6e 74 6c  | tool.calls.(formatted.differentl | 
| 99fe0 |  79 29 20 69 6e 74 6f 20 28 49 4e 46 4f 20 2d 3e    20 3a 74 6f 6f 6c 2d 75 73 65 29 0a 20 20 20 20  | y).into.(INFO.->.:tool-use)..... | 
| 9a000 |  20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65    6e 2d 6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 75 73  | ............(when-let*.((tool-us | 
| 9a020 |  65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66    6f 20 3a 74 6f 6f 6c 2d 75 73 65 29 29 0a 20 20  | e.(plist-get.info.:tool-use))... | 
| 9a040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 61 72 67 73 20  | ..........................(args. | 
| 9a060 |  28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20    28 6e 72 65 76 65 72 73 65 20 28 70 6c 69 73 74  | (apply.#'concat.(nreverse.(plist | 
| 9a080 |  2d 67 65 74 20 69 6e 66 6f 20 3a 70 61 72 74 69    61 6c 5f 6a 73 6f 6e 29 29 29 29 0a 20 20 20 20  | -get.info.:partial_json))))..... | 
| 9a0a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 66 75 6e 63 20 28 70  | ........................(func.(p | 
| 9a0c0 |  6c 69 73 74 2d 67 65 74 20 28 63 61 72 20 74 6f    6f 6c 2d 75 73 65 29 20 3a 66 75 6e 63 74 69 6f  | list-get.(car.tool-use).:functio | 
| 9a0e0 |  6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75  | n)))...................(plist-pu | 
| 9a100 |  74 20 66 75 6e 63 20 3a 61 72 67 75 6d 65 6e 74    73 20 61 72 67 73 29 20 3b 55 70 64 61 74 65 20  | t.func.:arguments.args).;Update. | 
| 9a120 |  61 72 67 75 6d 65 6e 74 73 20 66 6f 72 20 6c 61    73 74 20 72 65 63 6f 72 64 65 64 20 74 6f 6f 6c  | arguments.for.last.recorded.tool | 
| 9a140 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 6a 65 63  | ...................(gptel--injec | 
| 9a160 |  74 2d 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69  | t-prompt....................(pli | 
| 9a180 |  73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 61 63    6b 65 6e 64 29 20 28 70 6c 69 73 74 2d 67 65 74  | st-get.info.:backend).(plist-get | 
| 9a1a0 |  20 69 6e 66 6f 20 3a 64 61 74 61 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .info.:data).................... | 
| 9a1c0 |  60 28 3a 72 6f 6c 65 20 22 61 73 73 69 73 74 61    6e 74 22 20 3a 63 6f 6e 74 65 6e 74 20 3a 6e 75  | `(:role."assistant".:content.:nu | 
| 9a1e0 |  6c 6c 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 20 2c    28 76 63 6f 6e 63 61 74 20 74 6f 6f 6c 2d 75 73  | ll.:tool_calls.,(vconcat.tool-us | 
| 9a200 |  65 29 29 29 20 3b 20 3a 72 65 66 75 73 61 6c 20    3a 6e 75 6c 6c 0a 20 20 20 20 20 20 20 20 20 20  | e))).;.:refusal.:null........... | 
| 9a220 |  20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........(cl-loop................ | 
| 9a240 |  20 20 20 20 66 6f 72 20 74 6f 6f 6c 2d 63 61 6c    6c 20 69 6e 20 74 6f 6f 6c 2d 75 73 65 20 3b 20  | ....for.tool-call.in.tool-use.;. | 
| 9a260 |  43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 63 61    6c 6c 20 73 70 65 63 73 20 66 6f 72 20 72 75 6e  | Construct.the.call.specs.for.run | 
| 9a280 |  6e 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69 6f    6e 20 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20  | ning.the.function.calls......... | 
| 9a2a0 |  20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73    70 65 63 20 3d 20 28 70 6c 69 73 74 2d 67 65 74  | ...........for.spec.=.(plist-get | 
| 9a2c0 |  20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 66 75 6e 63    74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20  | .tool-call.:function)........... | 
| 9a2e0 |  20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74    20 28 6c 69 73 74 20 3a 69 64 20 28 70 6c 69 73  | .........collect.(list.:id.(plis | 
| 9a300 |  74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20    3a 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  | t-get.tool-call.:id)............ | 
| 9a320 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 6e 61 6d 65 20 28 70 6c 69  | ......................:name.(pli | 
| 9a340 |  73 74 2d 67 65 74 20 73 70 65 63 20 3a 6e 61 6d    65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | st-get.spec.:name).............. | 
| 9a360 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 61 72 67 73 20 28 69 67 6e 6f 72  | ....................:args.(ignor | 
| 9a380 |  65 2d 65 72 72 6f 72 73 20 28 67 70 74 65 6c 2d    2d 6a 73 6f 6e 2d 72 65 61 64 2d 73 74 72 69 6e  | e-errors.(gptel--json-read-strin | 
| 9a3a0 |  67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | g............................... | 
| 9a3c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d  | .........................(plist- | 
| 9a3e0 |  67 65 74 20 73 70 65 63 20 3a 61 72 67 75 6d 65    6e 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 20  | get.spec.:arguments))))......... | 
| 9a400 |  20 20 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20    63 61 6c 6c 2d 73 70 65 63 73 0a 20 20 20 20 20  | ...........into.call-specs...... | 
| 9a420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69    6e 61 6c 6c 79 20 28 70 6c 69 73 74 2d 70 75 74  | ..............finally.(plist-put | 
| 9a440 |  20 69 6e 66 6f 20 3a 74 6f 6f 6c 2d 75 73 65 20    63 61 6c 6c 2d 73 70 65 63 73 29 29 29 0a 20 20  | .info.:tool-use.call-specs)))... | 
| 9a460 |  20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65    6e 2d 6c 65 74 2a 20 28 28 72 65 73 70 6f 6e 73  | ............(when-let*.((respons | 
| 9a480 |  65 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72    65 61 64 29 29 0a 20 20 20 20 20 20 20 20 20 20  | e.(gptel--json-read))........... | 
| 9a4a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 64 65 6c 74 61 20 28 6d 61 70 2d 6e 65 73 74  | ................(delta.(map-nest | 
| 9a4c0 |  65 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20    27 28 3a 63 68 6f 69 63 65 73 20 30 20 3a 64 65  | ed-elt.response.'(:choices.0.:de | 
| 9a4e0 |  6c 74 61 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a  | lta)))).................(if-let* | 
| 9a500 |  20 28 28 63 6f 6e 74 65 6e 74 20 28 70 6c 69 73    74 2d 67 65 74 20 64 65 6c 74 61 20 3a 63 6f 6e  | .((content.(plist-get.delta.:con | 
| 9a520 |  74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tent)).......................... | 
| 9a540 |  20 28 28 6e 6f 74 20 28 6f 72 20 28 65 71 20 63    6f 6e 74 65 6e 74 20 3a 6e 75 6c 6c 29 20 28 73  | .((not.(or.(eq.content.:null).(s | 
| 9a560 |  74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 63 6f    6e 74 65 6e 74 29 29 29 29 29 0a 20 20 20 20 20  | tring-empty-p.content)))))...... | 
| 9a580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 75 73 68 20 63 6f 6e 74 65 6e 74 20 63 6f 6e  | ...............(push.content.con | 
| 9a5a0 |  74 65 6e 74 2d 73 74 72 73 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | tent-strs)...................;;. | 
| 9a5c0 |  4e 6f 20 74 65 78 74 20 63 6f 6e 74 65 6e 74 2c    20 73 6f 20 6c 6f 6f 6b 20 66 6f 72 20 74 6f 6f  | No.text.content,.so.look.for.too | 
| 9a5e0 |  6c 20 63 61 6c 6c 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d  | l.calls...................(when- | 
| 9a600 |  6c 65 74 2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c    20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74  | let*.((tool-call.(map-nested-elt | 
| 9a620 |  20 64 65 6c 74 61 20 27 28 3a 74 6f 6f 6c 5f 63    61 6c 6c 73 20 30 29 29 29 0a 20 20 20 20 20 20  | .delta.'(:tool_calls.0)))....... | 
| 9a640 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 66 75 6e 63 20 28 70  | ........................(func.(p | 
| 9a660 |  6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d 63 61    6c 6c 20 3a 66 75 6e 63 74 69 6f 6e 29 29 29 0a  | list-get.tool-call.:function))). | 
| 9a680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 69 66 20 28 70 6c 69 73 74 2d 67  | ....................(if.(plist-g | 
| 9a6a0 |  65 74 20 66 75 6e 63 20 3a 6e 61 6d 65 29 20 3b    6e 65 77 20 74 6f 6f 6c 20 62 6c 6f 63 6b 20 62  | et.func.:name).;new.tool.block.b | 
| 9a6c0 |  65 67 69 6e 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | egins.........................(p | 
| 9a6e0 |  72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | rogn...........................( | 
| 9a700 |  77 68 65 6e 2d 6c 65 74 2a 20 28 28 70 61 72 74    69 61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 69  | when-let*.((partial.(plist-get.i | 
| 9a720 |  6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f 6a 73 6f    6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | nfo.:partial_json)))............ | 
| 9a740 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6c 65 74 2a 20 28 28 70 72 65 76 2d 74 6f  | .................(let*.((prev-to | 
| 9a760 |  6f 6c 2d 63 61 6c 6c 20 28 63 61 72 20 28 70 6c    69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f  | ol-call.(car.(plist-get.info.:to | 
| 9a780 |  6f 6c 2d 75 73 65 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ol-use)))....................... | 
| 9a7a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72    65 76 2d 66 75 6e 63 20 28 70 6c 69 73 74 2d 67  | .............(prev-func.(plist-g | 
| 9a7c0 |  65 74 20 70 72 65 76 2d 74 6f 6f 6c 2d 63 61 6c    6c 20 3a 66 75 6e 63 74 69 6f 6e 29 29 29 0a 20  | et.prev-tool-call.:function))).. | 
| 9a7e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c  | .............................(pl | 
| 9a800 |  69 73 74 2d 70 75 74 20 70 72 65 76 2d 66 75 6e    63 20 3a 61 72 67 75 6d 65 6e 74 73 20 3b 75 70  | ist-put.prev-func.:arguments.;up | 
| 9a820 |  64 61 74 65 20 61 72 67 73 20 66 6f 72 20 6f 6c    64 20 74 6f 6f 6c 20 62 6c 6f 63 6b 0a 20 20 20  | date.args.for.old.tool.block.... | 
| 9a840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 9a860 |  20 20 20 20 20 20 28 61 70 70 6c 79 20 23 27 63    6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20  | ......(apply.#'concat.(nreverse. | 
| 9a880 |  28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20    3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 29 29 29  | (plist-get.info.:partial_json))) | 
| 9a8a0 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | )).............................( | 
| 9a8c0 |  70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a    70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 6e 69 6c  | plist-put.info.:partial_json.nil | 
| 9a8e0 |  29 29 20 3b 63 6c 65 61 72 20 6f 75 74 20 66 69    6e 69 73 68 65 64 20 63 68 61 69 6e 20 6f 66 20  | )).;clear.out.finished.chain.of. | 
| 9a900 |  70 61 72 74 69 61 6c 20 61 72 67 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | partial.args.................... | 
| 9a920 |  20 20 20 20 20 20 20 3b 3b 20 53 74 61 72 74 20    6e 65 77 20 63 68 61 69 6e 20 6f 66 20 70 61 72  | .......;;.Start.new.chain.of.par | 
| 9a940 |  74 69 61 6c 20 61 72 67 75 6d 65 6e 74 20 73 74    72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20  | tial.argument.strings........... | 
| 9a960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20  | ................(plist-put.info. | 
| 9a980 |  3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 28 6c    69 73 74 20 28 70 6c 69 73 74 2d 67 65 74 20 66  | :partial_json.(list.(plist-get.f | 
| 9a9a0 |  75 6e 63 20 3a 61 72 67 75 6d 65 6e 74 73 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | unc.:arguments)))............... | 
| 9a9c0 |  20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e    4f 54 45 3a 20 44 6f 20 4e 4f 54 20 75 73 65 20  | ............;;.NOTE:.Do.NOT.use. | 
| 9a9e0 |  60 70 75 73 68 27 20 66 6f 72 20 74 68 69 73 2c    20 69 74 20 70 72 65 70 65 6e 64 73 20 61 6e 64  | `push'.for.this,.it.prepends.and | 
| 9aa00 |  20 77 65 20 6c 6f 73 65 20 74 68 65 20 72 65 66    65 72 65 6e 63 65 0a 20 20 20 20 20 20 20 20 20  | .we.lose.the.reference.......... | 
| 9aa20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f  | .................(plist-put.info | 
| 9aa40 |  20 3a 74 6f 6f 6c 2d 75 73 65 20 28 63 6f 6e 73    20 74 6f 6f 6c 2d 63 61 6c 6c 20 28 70 6c 69 73  | .:tool-use.(cons.tool-call.(plis | 
| 9aa60 |  74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c    2d 75 73 65 29 29 29 29 0a 20 20 20 20 20 20 20  | t-get.info.:tool-use))))........ | 
| 9aa80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b    3b 20 6f 6c 64 20 74 6f 6f 6c 20 62 6c 6f 63 6b  | ...............;;.old.tool.block | 
| 9aaa0 |  20 63 6f 6e 74 69 6e 75 65 73 2c 20 73 6f 20 63    6f 6e 74 69 6e 75 65 20 63 6f 6c 6c 65 63 74 69  | .continues,.so.continue.collecti | 
| 9aac0 |  6e 67 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20    3a 70 61 72 74 69 61 6c 5f 6a 73 6f 6e 20 0a 20  | ng.arguments.in.:partial_json... | 
| 9aae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 75 73 68 20 28 70 6c 69 73  | .....................(push.(plis | 
| 9ab00 |  74 2d 67 65 74 20 66 75 6e 63 20 3a 61 72 67 75    6d 65 6e 74 73 29 20 28 70 6c 69 73 74 2d 67 65  | t-get.func.:arguments).(plist-ge | 
| 9ab20 |  74 20 69 6e 66 6f 20 3a 70 61 72 74 69 61 6c 5f    6a 73 6f 6e 29 29 29 29 29 0a 20 20 20 20 20 20  | t.info.:partial_json)))))....... | 
| 9ab40 |  20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65    63 6b 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67  | ..........;;.Check.for.reasoning | 
| 9ab60 |  20 62 6c 6f 63 6b 73 2c 20 63 75 72 72 65 6e 74    6c 79 20 6f 6e 6c 79 20 75 73 65 64 20 62 79 20  | .blocks,.currently.only.used.by. | 
| 9ab80 |  4f 70 65 6e 72 6f 75 74 65 72 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 41  | Openrouter.................;;.MA | 
| 9aba0 |  59 42 45 3a 20 53 68 6f 75 6c 64 20 74 68 69 73    20 62 65 20 6d 6f 76 65 64 20 74 6f 20 61 20 64  | YBE:.Should.this.be.moved.to.a.d | 
| 9abc0 |  65 64 69 63 61 74 65 64 20 4f 70 65 6e 72 6f 75    74 65 72 20 62 61 63 6b 65 6e 64 3f 0a 20 20 20  | edicated.Openrouter.backend?.... | 
| 9abe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e    6c 65 73 73 20 28 6f 72 20 28 65 71 20 28 70 6c  | .............(unless.(or.(eq.(pl | 
| 9ac00 |  69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72 65    61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 29 20 27  | ist-get.info.:reasoning-block).' | 
| 9ac20 |  64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | done)........................... | 
| 9ac40 |  20 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 6d 65    6d 62 65 72 20 64 65 6c 74 61 20 3a 72 65 61 73  | ..(not.(plist-member.delta.:reas | 
| 9ac60 |  6f 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 69 66 2d 6c  | oning)))...................(if-l | 
| 9ac80 |  65 74 2a 20 28 28 72 65 61 73 6f 6e 69 6e 67 2d    63 68 75 6e 6b 20 28 70 6c 69 73 74 2d 67 65 74  | et*.((reasoning-chunk.(plist-get | 
| 9aca0 |  20 64 65 6c 74 61 20 3a 72 65 61 73 6f 6e 69 6e    67 29 29 20 3b 66 6f 72 20 6f 70 65 6e 72 6f 75  | .delta.:reasoning)).;for.openrou | 
| 9acc0 |  74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ter............................. | 
| 9ace0 |  28 28 6e 6f 74 20 28 65 71 20 72 65 61 73 6f 6e    69 6e 67 2d 63 68 75 6e 6b 20 3a 6e 75 6c 6c 29  | ((not.(eq.reasoning-chunk.:null) | 
| 9ad00 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | ))).......................(plist | 
| 9ad20 |  2d 70 75 74 20 69 6e 66 6f 20 3a 72 65 61 73 6f    6e 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20  | -put.info.:reasoning............ | 
| 9ad40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70  | ......................(concat.(p | 
| 9ad60 |  6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 72    65 61 73 6f 6e 69 6e 67 29 20 72 65 61 73 6f 6e  | list-get.info.:reasoning).reason | 
| 9ad80 |  69 6e 67 2d 63 68 75 6e 6b 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ing-chunk))..................... | 
| 9ada0 |  3b 3b 20 44 6f 6e 65 20 77 69 74 68 20 72 65 61    73 6f 6e 69 6e 67 20 69 66 20 77 65 20 67 65 74  | ;;.Done.with.reasoning.if.we.get | 
| 9adc0 |  20 6e 6f 6e 2d 65 6d 70 74 79 20 63 6f 6e 74 65    6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .non-empty.content.............. | 
| 9ade0 |  20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20    28 28 63 20 28 70 6c 69 73 74 2d 67 65 74 20 64  | .......(if-let*.((c.(plist-get.d | 
| 9ae00 |  65 6c 74 61 20 3a 63 6f 6e 74 65 6e 74 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | elta.:content))................. | 
| 9ae20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28    6e 6f 74 20 28 6f 72 20 28 65 71 20 63 20 3a 6e  | ..............((not.(or.(eq.c.:n | 
| 9ae40 |  75 6c 6c 29 20 28 73 74 72 69 6e 67 2d 65 6d 70    74 79 2d 70 20 63 29 29 29 29 29 0a 20 20 20 20  | ull).(string-empty-p.c)))))..... | 
| 9ae60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 69 66 20 28 70 6c 69 73 74 2d 6d  | ....................(if.(plist-m | 
| 9ae80 |  65 6d 62 65 72 20 69 6e 66 6f 20 3a 72 65 61 73    6f 6e 69 6e 67 29 20 3b 49 73 20 74 68 69 73 20  | ember.info.:reasoning).;Is.this. | 
| 9aea0 |  61 20 72 65 61 73 6f 6e 69 6e 67 20 6d 6f 64 65    6c 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | a.reasoning.model?.............. | 
| 9aec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a  | ...............(plist-put.info.: | 
| 9aee0 |  72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20    74 29 20 3b 45 6e 64 20 6f 66 20 73 74 72 65 61  | reasoning-block.t).;End.of.strea | 
| 9af00 |  6d 69 6e 67 20 72 65 61 73 6f 6e 69 6e 67 20 62    6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20  | ming.reasoning.block............ | 
| 9af20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a  | ...............(plist-put.info.: | 
| 9af40 |  72 65 61 73 6f 6e 69 6e 67 2d 62 6c 6f 63 6b 20    27 64 6f 6e 65 29 29 29 29 29 29 29 29 29 20 3b  | reasoning-block.'done))))))))).; | 
| 9af60 |  4e 6f 74 20 75 73 69 6e 67 20 61 20 72 65 61 73    6f 6e 69 6e 67 20 6d 6f 64 65 6c 0a 20 20 20 20  | Not.using.a.reasoning.model..... | 
| 9af80 |  20 20 28 65 72 72 6f 72 20 28 67 6f 74 6f 2d 63    68 61 72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e  | ..(error.(goto-char.(match-begin | 
| 9afa0 |  6e 69 6e 67 20 30 29 29 29 29 0a 20 20 20 20 28    61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28  | ning.0)))).....(apply.#'concat.( | 
| 9afc0 |  6e 72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e 74    2d 73 74 72 73 29 29 29 29 0a 0a 28 63 6c 2d 64  | nreverse.content-strs))))..(cl-d | 
| 9afe0 |  65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d    70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28  | efmethod.gptel--parse-response.( | 
| 9b000 |  28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d    6f 70 65 6e 61 69 29 20 72 65 73 70 6f 6e 73 65  | (_backend.gptel-openai).response | 
| 9b020 |  20 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20    61 6e 20 4f 70 65 6e 41 49 20 28 6e 6f 6e 2d 73  | .info)..."Parse.an.OpenAI.(non-s | 
| 9b040 |  74 72 65 61 6d 69 6e 67 29 20 52 45 53 50 4f 4e    53 45 20 61 6e 64 20 72 65 74 75 72 6e 20 72 65  | treaming).RESPONSE.and.return.re | 
| 9b060 |  73 70 6f 6e 73 65 20 74 65 78 74 2e 0a 0a 4d 75    74 61 74 65 20 73 74 61 74 65 20 49 4e 46 4f 20  | sponse.text...Mutate.state.INFO. | 
| 9b080 |  77 69 74 68 20 72 65 73 70 6f 6e 73 65 20 6d 65    74 61 64 61 74 61 2e 22 0a 20 20 28 6c 65 74 2a  | with.response.metadata."...(let* | 
| 9b0a0 |  20 28 28 63 68 6f 69 63 65 30 20 28 6d 61 70 2d    6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f  | .((choice0.(map-nested-elt.respo | 
| 9b0c0 |  6e 73 65 20 27 28 3a 63 68 6f 69 63 65 73 20 30    29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 65  | nse.'(:choices.0)))..........(me | 
| 9b0e0 |  73 73 61 67 65 20 28 70 6c 69 73 74 2d 67 65 74    20 63 68 6f 69 63 65 30 20 3a 6d 65 73 73 61 67  | ssage.(plist-get.choice0.:messag | 
| 9b100 |  65 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f    6e 74 65 6e 74 20 28 70 6c 69 73 74 2d 67 65 74  | e))..........(content.(plist-get | 
| 9b120 |  20 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e    74 29 29 29 0a 20 20 20 20 28 70 6c 69 73 74 2d  | .message.:content))).....(plist- | 
| 9b140 |  70 75 74 20 69 6e 66 6f 20 3a 73 74 6f 70 2d 72    65 61 73 6f 6e 0a 20 20 20 20 20 20 20 20 20 20  | put.info.:stop-reason........... | 
| 9b160 |  20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20    63 68 6f 69 63 65 30 20 3a 66 69 6e 69 73 68 5f  | .....(plist-get.choice0.:finish_ | 
| 9b180 |  72 65 61 73 6f 6e 29 29 0a 20 20 20 20 28 70 6c    69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 6f 75  | reason)).....(plist-put.info.:ou | 
| 9b1a0 |  74 70 75 74 2d 74 6f 6b 65 6e 73 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 2d  | tput-tokens................(map- | 
| 9b1c0 |  6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f    6e 73 65 20 27 28 3a 75 73 61 67 65 20 3a 63 6f  | nested-elt.response.'(:usage.:co | 
| 9b1e0 |  6d 70 6c 65 74 69 6f 6e 5f 74 6f 6b 65 6e 73 29    29 29 0a 20 20 20 20 3b 3b 20 4f 70 65 6e 41 49  | mpletion_tokens))).....;;.OpenAI | 
| 9b200 |  20 72 65 74 75 72 6e 73 20 65 69 74 68 65 72 20    6e 6f 6e 2d 62 6c 61 6e 6b 20 74 65 78 74 20 63  | .returns.either.non-blank.text.c | 
| 9b220 |  6f 6e 74 65 6e 74 20 6f 72 20 61 20 74 6f 6f 6c    20 63 61 6c 6c 2c 20 6e 6f 74 20 62 6f 74 68 2e  | ontent.or.a.tool.call,.not.both. | 
| 9b240 |  0a 20 20 20 20 3b 3b 20 48 6f 77 65 76 65 72 20    4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c  | .....;;.However.OpenAI-compatibl | 
| 9b260 |  65 20 41 50 49 73 20 6c 69 6b 65 20 6c 6c 61 6d    61 2e 63 70 70 20 63 61 6e 20 69 6e 63 6c 75 64  | e.APIs.like.llama.cpp.can.includ | 
| 9b280 |  65 20 62 6f 74 68 20 28 23 38 31 39 29 2c 20 73    6f 0a 20 20 20 20 3b 3b 20 77 65 20 63 68 65 63  | e.both.(#819),.so.....;;.we.chec | 
| 9b2a0 |  6b 20 66 6f 72 20 62 6f 74 68 20 74 6f 6f 6c 20    63 61 6c 6c 73 20 61 6e 64 20 72 65 73 70 6f 6e  | k.for.both.tool.calls.and.respon | 
| 9b2c0 |  73 65 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 6c    79 2e 0a 20 20 20 20 28 77 68 65 6e 2d 6c 65 74  | ses.independently......(when-let | 
| 9b2e0 |  2a 20 28 28 74 6f 6f 6c 2d 63 61 6c 6c 73 20 28    70 6c 69 73 74 2d 67 65 74 20 6d 65 73 73 61 67  | *.((tool-calls.(plist-get.messag | 
| 9b300 |  65 20 3a 74 6f 6f 6c 5f 63 61 6c 6c 73 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.:tool_calls))................. | 
| 9b320 |  28 28 6e 6f 74 20 28 65 71 20 74 6f 6f 6c 2d 63    61 6c 6c 73 20 3a 6e 75 6c 6c 29 29 29 29 0a 20  | ((not.(eq.tool-calls.:null)))).. | 
| 9b340 |  20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 6a    65 63 74 2d 70 72 6f 6d 70 74 20 20 20 20 20 20  | .....(gptel--inject-prompt...... | 
| 9b360 |  20 20 3b 20 46 69 72 73 74 20 61 64 64 20 74 68    65 20 74 6f 6f 6c 20 63 61 6c 6c 20 74 6f 20 74  | ..;.First.add.the.tool.call.to.t | 
| 9b380 |  68 65 20 70 72 6f 6d 70 74 73 20 6c 69 73 74 0a    20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65  | he.prompts.list........(plist-ge | 
| 9b3a0 |  74 20 69 6e 66 6f 20 3a 62 61 63 6b 65 6e 64 29    20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f  | t.info.:backend).(plist-get.info | 
| 9b3c0 |  20 3a 64 61 74 61 29 20 6d 65 73 73 61 67 65 29    0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20  | .:data).message).......(cl-loop. | 
| 9b3e0 |  20 20 20 20 20 20 20 20 20 20 20 20 3b 54 68 65    6e 20 63 61 70 74 75 72 65 20 74 68 65 20 74 6f  | ............;Then.capture.the.to | 
| 9b400 |  6f 6c 20 63 61 6c 6c 20 64 61 74 61 20 66 6f 72    20 72 75 6e 6e 69 6e 67 20 74 68 65 20 74 6f 6f  | ol.call.data.for.running.the.too | 
| 9b420 |  6c 0a 20 20 20 20 20 20 20 66 6f 72 20 74 6f 6f    6c 2d 63 61 6c 6c 20 61 63 72 6f 73 73 20 74 6f  | l........for.tool-call.across.to | 
| 9b440 |  6f 6c 2d 63 61 6c 6c 73 20 20 3b 72 65 70 6c 61    63 65 20 22 3a 61 72 67 75 6d 65 6e 74 73 22 20  | ol-calls..;replace.":arguments". | 
| 9b460 |  77 69 74 68 20 22 3a 61 72 67 73 22 0a 20 20 20    20 20 20 20 66 6f 72 20 63 61 6c 6c 2d 73 70 65  | with.":args"........for.call-spe | 
| 9b480 |  63 20 3d 20 28 63 6f 70 79 2d 73 65 71 75 65 6e    63 65 20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f  | c.=.(copy-sequence.(plist-get.to | 
| 9b4a0 |  6f 6c 2d 63 61 6c 6c 20 3a 66 75 6e 63 74 69 6f    6e 29 29 0a 20 20 20 20 20 20 20 64 6f 20 28 69  | ol-call.:function))........do.(i | 
| 9b4c0 |  67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 70 6c    69 73 74 2d 70 75 74 20 63 61 6c 6c 2d 73 70 65  | gnore-errors.(plist-put.call-spe | 
| 9b4e0 |  63 20 3a 61 72 67 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | c.:args......................... | 
| 9b500 |  20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74    65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 2d 73 74  | ............(gptel--json-read-st | 
| 9b520 |  72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ring............................ | 
| 9b540 |  20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74    2d 67 65 74 20 63 61 6c 6c 2d 73 70 65 63 20 3a  | ..........(plist-get.call-spec.: | 
| 9b560 |  61 72 67 75 6d 65 6e 74 73 29 29 29 29 0a 20 20    20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20  | arguments))))........(plist-put. | 
| 9b580 |  63 61 6c 6c 2d 73 70 65 63 20 3a 61 72 67 75 6d    65 6e 74 73 20 6e 69 6c 29 0a 20 20 20 20 20 20  | call-spec.:arguments.nil)....... | 
| 9b5a0 |  20 28 70 6c 69 73 74 2d 70 75 74 20 63 61 6c 6c    2d 73 70 65 63 20 3a 69 64 20 28 70 6c 69 73 74  | .(plist-put.call-spec.:id.(plist | 
| 9b5c0 |  2d 67 65 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a    69 64 29 29 0a 20 20 20 20 20 20 20 63 6f 6c 6c  | -get.tool-call.:id))........coll | 
| 9b5e0 |  65 63 74 20 63 61 6c 6c 2d 73 70 65 63 20 69 6e    74 6f 20 74 6f 6f 6c 2d 75 73 65 0a 20 20 20 20  | ect.call-spec.into.tool-use..... | 
| 9b600 |  20 20 20 66 69 6e 61 6c 6c 79 20 28 70 6c 69 73    74 2d 70 75 74 20 69 6e 66 6f 20 3a 74 6f 6f 6c  | ...finally.(plist-put.info.:tool | 
| 9b620 |  2d 75 73 65 20 74 6f 6f 6c 2d 75 73 65 29 29 29    0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20  | -use.tool-use))).....(when.(and. | 
| 9b640 |  63 6f 6e 74 65 6e 74 20 28 6e 6f 74 20 28 6f 72    20 28 65 71 20 63 6f 6e 74 65 6e 74 20 3a 6e 75  | content.(not.(or.(eq.content.:nu | 
| 9b660 |  6c 6c 29 20 28 73 74 72 69 6e 67 2d 65 6d 70 74    79 2d 70 20 63 6f 6e 74 65 6e 74 29 29 29 29 0a  | ll).(string-empty-p.content)))). | 
| 9b680 |  20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a    20 28 28 72 65 61 73 6f 6e 69 6e 67 20 28 70 6c  | ......(when-let*.((reasoning.(pl | 
| 9b6a0 |  69 73 74 2d 67 65 74 20 6d 65 73 73 61 67 65 20    3a 72 65 61 73 6f 6e 69 6e 67 29 29 20 3b 6c 6f  | ist-get.message.:reasoning)).;lo | 
| 9b6c0 |  6f 6b 20 66 6f 72 20 72 65 61 73 6f 6e 69 6e 67    20 62 6c 6f 63 6b 73 0a 20 20 20 20 20 20 20 20  | ok.for.reasoning.blocks......... | 
| 9b6e0 |  20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20    28 73 74 72 69 6e 67 70 20 72 65 61 73 6f 6e 69  | ..........((and.(stringp.reasoni | 
| 9b700 |  6e 67 29 20 28 6e 6f 74 20 28 73 74 72 69 6e 67    2d 65 6d 70 74 79 2d 70 20 72 65 61 73 6f 6e 69  | ng).(not.(string-empty-p.reasoni | 
| 9b720 |  6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20    28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20  | ng))))).........(plist-put.info. | 
| 9b740 |  3a 72 65 61 73 6f 6e 69 6e 67 20 72 65 61 73 6f    6e 69 6e 67 29 29 0a 20 20 20 20 20 20 63 6f 6e  | :reasoning.reasoning)).......con | 
| 9b760 |  74 65 6e 74 29 29 29 0a 0a 28 63 6c 2d 64 65 66    6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65  | tent)))..(cl-defmethod.gptel--re | 
| 9b780 |  71 75 65 73 74 2d 64 61 74 61 20 28 28 62 61 63    6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61  | quest-data.((backend.gptel-opena | 
| 9b7a0 |  69 29 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 4a    53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50  | i).prompts)..."JSON.encode.PROMP | 
| 9b7c0 |  54 53 20 66 6f 72 20 73 65 6e 64 69 6e 67 20 74    6f 20 43 68 61 74 47 50 54 2e 22 0a 20 20 28 77  | TS.for.sending.to.ChatGPT."...(w | 
| 9b7e0 |  68 65 6e 20 67 70 74 65 6c 2d 2d 73 79 73 74 65    6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 28 70  | hen.gptel--system-message.....(p | 
| 9b800 |  75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20    22 73 79 73 74 65 6d 22 0a 20 20 20 20 20 20 20  | ush.(list.:role."system"........ | 
| 9b820 |  20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e    74 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d  | .........:content.gptel--system- | 
| 9b840 |  6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20    20 20 20 70 72 6f 6d 70 74 73 29 29 0a 20 20 28  | message)...........prompts))...( | 
| 9b860 |  6c 65 74 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c    69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a  | let.((prompts-plist..........`(: | 
| 9b880 |  6d 6f 64 65 6c 20 2c 28 67 70 74 65 6c 2d 2d 6d    6f 64 65 6c 2d 6e 61 6d 65 20 67 70 74 65 6c 2d  | model.,(gptel--model-name.gptel- | 
| 9b8a0 |  6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20    20 20 3a 6d 65 73 73 61 67 65 73 20 5b 2c 40 70  | model)............:messages.[,@p | 
| 9b8c0 |  72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20    20 20 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 20  | rompts]............:stream.,(or. | 
| 9b8e0 |  67 70 74 65 6c 2d 73 74 72 65 61 6d 20 3a 6a 73    6f 6e 2d 66 61 6c 73 65 29 29 29 0a 20 20 20 20  | gptel-stream.:json-false)))..... | 
| 9b900 |  20 20 20 20 28 72 65 61 73 6f 6e 69 6e 67 2d 6d    6f 64 65 6c 2d 70 20 3b 20 54 4f 44 4f 3a 20 45  | ....(reasoning-model-p.;.TODO:.E | 
| 9b920 |  6d 62 65 64 20 74 68 69 73 20 63 61 70 61 62 69    6c 69 74 79 20 69 6e 20 74 68 65 20 6d 6f 64 65  | mbed.this.capability.in.the.mode | 
| 9b940 |  6c 27 73 20 70 72 6f 70 65 72 74 69 65 73 0a 20    20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 67 70  | l's.properties..........(memq.gp | 
| 9b960 |  74 65 6c 2d 6d 6f 64 65 6c 20 27 28 6f 31 20 6f    31 2d 70 72 65 76 69 65 77 20 6f 31 2d 6d 69 6e  | tel-model.'(o1.o1-preview.o1-min | 
| 9b980 |  69 20 6f 33 2d 6d 69 6e 69 20 6f 33 20 6f 34 2d    6d 69 6e 69 29 29 29 29 0a 20 20 20 20 28 77 68  | i.o3-mini.o3.o4-mini)))).....(wh | 
| 9b9a0 |  65 6e 20 28 61 6e 64 20 67 70 74 65 6c 2d 74 65    6d 70 65 72 61 74 75 72 65 20 28 6e 6f 74 20 72  | en.(and.gptel-temperature.(not.r | 
| 9b9c0 |  65 61 73 6f 6e 69 6e 67 2d 6d 6f 64 65 6c 2d 70    29 29 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d  | easoning-model-p)).......(plist- | 
| 9b9e0 |  70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73    74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 67  | put.prompts-plist.:temperature.g | 
| 9ba00 |  70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65    29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74  | ptel-temperature)).....(when.gpt | 
| 9ba20 |  65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 0a 20 20 20    20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74  | el-use-tools.......(when.(eq.gpt | 
| 9ba40 |  65 6c 2d 75 73 65 2d 74 6f 6f 6c 73 20 27 66 6f    72 63 65 29 0a 20 20 20 20 20 20 20 20 28 70 6c  | el-use-tools.'force).........(pl | 
| 9ba60 |  69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d    70 6c 69 73 74 20 3a 74 6f 6f 6c 5f 63 68 6f 69  | ist-put.prompts-plist.:tool_choi | 
| 9ba80 |  63 65 20 22 72 65 71 75 69 72 65 64 22 29 29 0a    20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65  | ce."required")).......(when.gpte | 
| 9baa0 |  6c 2d 74 6f 6f 6c 73 0a 20 20 20 20 20 20 20 20    28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70  | l-tools.........(plist-put.promp | 
| 9bac0 |  74 73 2d 70 6c 69 73 74 20 3a 74 6f 6f 6c 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ts-plist.:tools................. | 
| 9bae0 |  20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65    2d 74 6f 6f 6c 73 20 62 61 63 6b 65 6e 64 20 67  | ...(gptel--parse-tools.backend.g | 
| 9bb00 |  70 74 65 6c 2d 74 6f 6f 6c 73 29 29 0a 20 20 20    20 20 20 20 20 28 75 6e 6c 65 73 73 20 72 65 61  | ptel-tools)).........(unless.rea | 
| 9bb20 |  73 6f 6e 69 6e 67 2d 6d 6f 64 65 6c 2d 70 0a 20    20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d  | soning-model-p...........(plist- | 
| 9bb40 |  70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73    74 20 3a 70 61 72 61 6c 6c 65 6c 5f 74 6f 6f 6c  | put.prompts-plist.:parallel_tool | 
| 9bb60 |  5f 63 61 6c 6c 73 20 74 29 29 29 29 0a 20 20 20    20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78  | _calls.t)))).....(when.gptel-max | 
| 9bb80 |  2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 3b 3b    20 48 41 43 4b 3a 20 54 68 65 20 4f 70 65 6e 41  | -tokens.......;;.HACK:.The.OpenA | 
| 9bba0 |  49 20 41 50 49 20 68 61 73 20 64 65 70 72 65 63    61 74 65 64 20 6d 61 78 5f 74 6f 6b 65 6e 73 2c  | I.API.has.deprecated.max_tokens, | 
| 9bbc0 |  20 62 75 74 20 77 65 20 73 74 69 6c 6c 20 6e 65    65 64 20 69 74 0a 20 20 20 20 20 20 3b 3b 20 66  | .but.we.still.need.it.......;;.f | 
| 9bbe0 |  6f 72 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74    69 62 6c 65 20 41 50 49 73 20 6c 69 6b 65 20 47  | or.OpenAI-compatible.APIs.like.G | 
| 9bc00 |  50 54 34 41 6c 6c 20 28 23 34 38 35 29 0a 20 20    20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70  | PT4All.(#485).......(plist-put.p | 
| 9bc20 |  72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69  | rompts-plist..................(i | 
| 9bc40 |  66 20 72 65 61 73 6f 6e 69 6e 67 2d 6d 6f 64 65    6c 2d 70 20 3a 6d 61 78 5f 63 6f 6d 70 6c 65 74  | f.reasoning-model-p.:max_complet | 
| 9bc60 |  69 6f 6e 5f 74 6f 6b 65 6e 73 20 3a 6d 61 78 5f    74 6f 6b 65 6e 73 29 0a 20 20 20 20 20 20 20 20  | ion_tokens.:max_tokens)......... | 
| 9bc80 |  20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6d    61 78 2d 74 6f 6b 65 6e 73 29 29 0a 20 20 20 20  | .........gptel-max-tokens))..... | 
| 9bca0 |  3b 3b 20 4d 65 72 67 65 20 72 65 71 75 65 73 74    20 70 61 72 61 6d 73 20 77 69 74 68 20 6d 6f 64  | ;;.Merge.request.params.with.mod | 
| 9bcc0 |  65 6c 20 61 6e 64 20 62 61 63 6b 65 6e 64 20 70    61 72 61 6d 73 2e 0a 20 20 20 20 28 67 70 74 65  | el.and.backend.params......(gpte | 
| 9bce0 |  6c 2d 2d 6d 65 72 67 65 2d 70 6c 69 73 74 73 0a    20 20 20 20 20 70 72 6f 6d 70 74 73 2d 70 6c 69  | l--merge-plists......prompts-pli | 
| 9bd00 |  73 74 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 62    61 63 6b 65 6e 64 2d 72 65 71 75 65 73 74 2d 70  | st......(gptel-backend-request-p | 
| 9bd20 |  61 72 61 6d 73 20 67 70 74 65 6c 2d 62 61 63 6b    65 6e 64 29 0a 20 20 20 20 20 28 67 70 74 65 6c  | arams.gptel-backend)......(gptel | 
| 9bd40 |  2d 2d 6d 6f 64 65 6c 2d 72 65 71 75 65 73 74 2d    70 61 72 61 6d 73 20 20 67 70 74 65 6c 2d 6d 6f  | --model-request-params..gptel-mo | 
| 9bd60 |  64 65 6c 29 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45    3a 20 4e 6f 20 60 67 70 74 65 6c 2d 2d 70 61 72  | del))))..;;.NOTE:.No.`gptel--par | 
| 9bd80 |  73 65 2d 74 6f 6f 6c 73 27 20 6d 65 74 68 6f 64    20 72 65 71 75 69 72 65 64 20 66 6f 72 20 67 70  | se-tools'.method.required.for.gp | 
| 9bda0 |  74 65 6c 2d 6f 70 65 6e 61 69 2c 20 73 69 6e 63    65 20 74 68 69 73 20 69 73 0a 3b 3b 20 68 61 6e  | tel-openai,.since.this.is.;;.han | 
| 9bdc0 |  64 6c 65 64 20 62 79 20 69 74 73 20 64 65 66 67    65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65 6e 74  | dled.by.its.defgeneric.implement | 
| 9bde0 |  61 74 69 6f 6e 0a 0a 28 63 6c 2d 64 65 66 6d 65    74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73  | ation..(cl-defmethod.gptel--pars | 
| 9be00 |  65 2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 28    28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d  | e-tool-results.((_backend.gptel- | 
| 9be20 |  6f 70 65 6e 61 69 29 20 74 6f 6f 6c 2d 75 73 65    29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 70 72  | openai).tool-use)..."Return.a.pr | 
| 9be40 |  6f 6d 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20    74 6f 6f 6c 20 63 61 6c 6c 20 72 65 73 75 6c 74  | ompt.containing.tool.call.result | 
| 9be60 |  73 20 69 6e 20 54 4f 4f 4c 2d 55 53 45 2e 22 0a    20 20 3b 3b 20 28 64 65 63 6c 61 72 65 20 28 73  | s.in.TOOL-USE."...;;.(declare.(s | 
| 9be80 |  69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20    74 29 29 0a 20 20 28 6d 61 70 63 61 72 0a 20 20  | ide-effect-free.t))...(mapcar... | 
| 9bea0 |  20 28 6c 61 6d 62 64 61 20 28 74 6f 6f 6c 2d 63    61 6c 6c 29 0a 20 20 20 20 20 28 6c 69 73 74 0a  | .(lambda.(tool-call)......(list. | 
| 9bec0 |  20 20 20 20 20 20 3a 72 6f 6c 65 20 22 74 6f 6f    6c 22 0a 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63  | ......:role."tool".......:tool_c | 
| 9bee0 |  61 6c 6c 5f 69 64 20 28 70 6c 69 73 74 2d 67 65    74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 69 64 29  | all_id.(plist-get.tool-call.:id) | 
| 9bf00 |  0a 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20    28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c 2d  | .......:content.(plist-get.tool- | 
| 9bf20 |  63 61 6c 6c 20 3a 72 65 73 75 6c 74 29 29 29 0a    20 20 20 74 6f 6f 6c 2d 75 73 65 29 29 0a 0a 3b  | call.:result)))....tool-use))..; | 
| 9bf40 |  3b 20 54 4f 44 4f 3a 20 52 65 6d 6f 76 65 20 74    68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 28  | ;.TODO:.Remove.these.functions.( | 
| 9bf60 |  23 37 39 32 29 0a 28 64 65 66 75 6e 20 67 70 74    65 6c 2d 2d 6f 70 65 6e 61 69 2d 66 6f 72 6d 61  | #792).(defun.gptel--openai-forma | 
| 9bf80 |  74 2d 74 6f 6f 6c 2d 69 64 20 28 74 6f 6f 6c 2d    69 64 29 0a 20 20 22 46 6f 72 6d 61 74 20 54 4f  | t-tool-id.(tool-id)..."Format.TO | 
| 9bfa0 |  4f 4c 2d 49 44 20 66 6f 72 20 4f 70 65 6e 41 49    2e 0a 0a 49 66 20 74 68 65 20 49 44 20 68 61 73  | OL-ID.for.OpenAI...If.the.ID.has | 
| 9bfc0 |  20 74 68 65 20 66 6f 72 6d 61 74 20 75 73 65 64    20 62 79 20 61 20 64 69 66 66 65 72 65 6e 74 20  | .the.format.used.by.a.different. | 
| 9bfe0 |  62 61 63 6b 65 6e 64 2c 20 75 73 65 20 61 73 2d    69 73 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 74  | backend,.use.as-is."...(unless.t | 
| 9c000 |  6f 6f 6c 2d 69 64 0a 20 20 20 20 28 73 65 74 71    20 74 6f 6f 6c 2d 69 64 20 28 73 75 62 73 74 72  | ool-id.....(setq.tool-id.(substr | 
| 9c020 |  69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6d 64 35 20 28 66 6f 72  | ing....................(md5.(for | 
| 9c040 |  6d 61 74 20 22 25 73 25 73 22 20 28 72 61 6e 64    6f 6d 29 20 28 66 6c 6f 61 74 2d 74 69 6d 65 29  | mat."%s%s".(random).(float-time) | 
| 9c060 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 6e 69 6c 20 32 34 29 29 29 0a  | ))....................nil.24))). | 
| 9c080 |  20 20 28 69 66 20 28 6f 72 20 28 73 74 72 69 6e    67 2d 70 72 65 66 69 78 2d 70 20 22 74 6f 6f 6c  | ..(if.(or.(string-prefix-p."tool | 
| 9c0a0 |  75 5f 22 20 74 6f 6f 6c 2d 69 64 29 20 3b 23 37    34 37 0a 20 20 20 20 20 20 20 20 20 20 28 73 74  | u_".tool-id).;#747...........(st | 
| 9c0c0 |  72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 63    61 6c 6c 5f 22 20 20 74 6f 6f 6c 2d 69 64 29 29  | ring-prefix-p."call_"..tool-id)) | 
| 9c0e0 |  0a 20 20 20 20 20 20 74 6f 6f 6c 2d 69 64 0a 20    20 20 20 28 66 6f 72 6d 61 74 20 22 63 61 6c 6c  | .......tool-id.....(format."call | 
| 9c100 |  5f 25 73 22 20 74 6f 6f 6c 2d 69 64 29 29 29 0a    0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6f  | _%s".tool-id)))..(defun.gptel--o | 
| 9c120 |  70 65 6e 61 69 2d 75 6e 66 6f 72 6d 61 74 2d 74    6f 6f 6c 2d 69 64 20 28 74 6f 6f 6c 2d 69 64 29  | penai-unformat-tool-id.(tool-id) | 
| 9c140 |  0a 20 20 28 6f 72 20 28 61 6e 64 20 28 73 74 72    69 6e 67 2d 6d 61 74 63 68 20 22 63 61 6c 6c 5f  | ...(or.(and.(string-match."call_ | 
| 9c160 |  5c 5c 28 2e 2b 5c 5c 29 22 20 74 6f 6f 6c 2d 69    64 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d  | \\(.+\\)".tool-id)............(m | 
| 9c180 |  61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 74 6f    6f 6c 2d 69 64 29 29 0a 20 20 20 20 20 20 74 6f  | atch-string.1.tool-id)).......to | 
| 9c1a0 |  6f 6c 2d 69 64 29 29 0a 0a 3b 3b 20 4e 4f 54 45    3a 20 4e 6f 20 60 67 70 74 65 6c 2d 2d 69 6e 6a  | ol-id))..;;.NOTE:.No.`gptel--inj | 
| 9c1c0 |  65 63 74 2d 70 72 6f 6d 70 74 27 20 6d 65 74 68    6f 64 20 72 65 71 75 69 72 65 64 20 66 6f 72 20  | ect-prompt'.method.required.for. | 
| 9c1e0 |  67 70 74 65 6c 2d 6f 70 65 6e 61 69 2c 20 73 69    6e 63 65 20 74 68 69 73 0a 3b 3b 20 69 73 20 68  | gptel-openai,.since.this.;;.is.h | 
| 9c200 |  61 6e 64 6c 65 64 20 62 79 20 69 74 73 20 64 65    66 67 65 6e 65 72 69 63 20 69 6d 70 6c 65 6d 65  | andled.by.its.defgeneric.impleme | 
| 9c220 |  6e 74 61 74 69 6f 6e 0a 0a 28 63 6c 2d 64 65 66    6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61  | ntation..(cl-defmethod.gptel--pa | 
| 9c240 |  72 73 65 2d 6c 69 73 74 20 28 28 62 61 63 6b 65    6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29  | rse-list.((backend.gptel-openai) | 
| 9c260 |  20 70 72 6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20    28 69 66 20 28 63 6f 6e 73 70 20 28 63 61 72 20  | .prompt-list)...(if.(consp.(car. | 
| 9c280 |  70 72 6f 6d 70 74 2d 6c 69 73 74 29 29 0a 20 20    20 20 20 20 28 6c 65 74 20 28 28 66 75 6c 6c 2d  | prompt-list)).......(let.((full- | 
| 9c2a0 |  70 72 6f 6d 70 74 29 29 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 20 41 64 76 61 6e 63 65 64  | prompt))..............;.Advanced | 
| 9c2c0 |  20 66 6f 72 6d 61 74 2c 20 6c 69 73 74 20 6f 66    20 6c 69 73 74 73 0a 20 20 20 20 20 20 20 20 28  | .format,.list.of.lists.........( | 
| 9c2e0 |  64 6f 6c 69 73 74 20 28 65 6e 74 72 79 20 70 72    6f 6d 70 74 2d 6c 69 73 74 29 0a 20 20 20 20 20  | dolist.(entry.prompt-list)...... | 
| 9c300 |  20 20 20 20 20 28 70 63 61 73 65 20 65 6e 74 72    79 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60  | .....(pcase.entry.............(` | 
| 9c320 |  28 70 72 6f 6d 70 74 20 2e 20 2c 6d 73 67 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75  | (prompt...,msg)..............(pu | 
| 9c340 |  73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22    75 73 65 72 22 20 3a 63 6f 6e 74 65 6e 74 20 28  | sh.(list.:role."user".:content.( | 
| 9c360 |  6f 72 20 28 63 61 72 2d 73 61 66 65 20 6d 73 67    29 20 6d 73 67 29 29 20 66 75 6c 6c 2d 70 72 6f  | or.(car-safe.msg).msg)).full-pro | 
| 9c380 |  6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 60 28 72 65 73 70 6f 6e 73 65 20 2e 20  | mpt)).............(`(response... | 
| 9c3a0 |  2c 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a  | ,msg)..............(push.(list.: | 
| 9c3c0 |  72 6f 6c 65 20 22 61 73 73 69 73 74 61 6e 74 22    20 3a 63 6f 6e 74 65 6e 74 20 28 6f 72 20 28 63  | role."assistant".:content.(or.(c | 
| 9c3e0 |  61 72 2d 73 61 66 65 20 6d 73 67 29 20 6d 73 67    29 29 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29  | ar-safe.msg).msg)).full-prompt)) | 
| 9c400 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 60 28    74 6f 6f 6c 20 2e 20 2c 63 61 6c 6c 29 0a 20 20  | .............(`(tool...,call)... | 
| 9c420 |  20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65    73 73 20 28 70 6c 69 73 74 2d 67 65 74 20 63 61  | ...........(unless.(plist-get.ca | 
| 9c440 |  6c 6c 20 3a 69 64 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75  | ll.:id)................(plist-pu | 
| 9c460 |  74 20 63 61 6c 6c 20 3a 69 64 20 28 67 70 74 65    6c 2d 2d 6f 70 65 6e 61 69 2d 66 6f 72 6d 61 74  | t.call.:id.(gptel--openai-format | 
| 9c480 |  2d 74 6f 6f 6c 2d 69 64 20 6e 69 6c 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75  | -tool-id.nil)))..............(pu | 
| 9c4a0 |  73 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20  | sh...............(list.......... | 
| 9c4c0 |  20 20 20 20 20 20 3a 72 6f 6c 65 20 22 61 73 73    69 73 74 61 6e 74 22 0a 20 20 20 20 20 20 20 20  | ......:role."assistant"......... | 
| 9c4e0 |  20 20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63 61 6c    6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .......:tool_calls.............. | 
| 9c500 |  20 20 28 76 65 63 74 6f 72 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20  | ..(vector.................(list. | 
| 9c520 |  3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e 22    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :type."function"................ | 
| 9c540 |  20 20 20 20 20 20 20 3a 69 64 20 28 70 6c 69 73    74 2d 67 65 74 20 63 61 6c 6c 20 3a 69 64 29 0a  | .......:id.(plist-get.call.:id). | 
| 9c560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e 20  | ......................:function. | 
| 9c580 |  60 28 20 3a 6e 61 6d 65 20 2c 28 70 6c 69 73 74    2d 67 65 74 20 63 61 6c 6c 20 3a 6e 61 6d 65 29  | `(.:name.,(plist-get.call.:name) | 
| 9c5a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 9c5c0 |  20 20 20 20 3a 61 72 67 75 6d 65 6e 74 73 20 2c    28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63  | ....:arguments.,(gptel--json-enc | 
| 9c5e0 |  6f 64 65 20 28 70 6c 69 73 74 2d 67 65 74 20 63    61 6c 6c 20 3a 61 72 67 73 29 29 29 29 29 29 0a  | ode.(plist-get.call.:args)))))). | 
| 9c600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75    6c 6c 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 20  | ..............full-prompt)...... | 
| 9c620 |  20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63    61 72 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65  | ........(push.(car.(gptel--parse | 
| 9c640 |  2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 62 61    63 6b 65 6e 64 20 28 6c 69 73 74 20 28 63 64 72  | -tool-results.backend.(list.(cdr | 
| 9c660 |  20 65 6e 74 72 79 29 29 29 29 20 66 75 6c 6c 2d    70 72 6f 6d 70 74 29 29 29 29 0a 20 20 20 20 20  | .entry)))).full-prompt))))...... | 
| 9c680 |  20 20 20 28 6e 72 65 76 65 72 73 65 20 66 75 6c    6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 28  | ...(nreverse.full-prompt)).....( | 
| 9c6a0 |  63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 74 65 78 74    20 69 6e 20 70 72 6f 6d 70 74 2d 6c 69 73 74 20  | cl-loop.for.text.in.prompt-list. | 
| 9c6c0 |  20 20 20 3b 20 53 69 6d 70 6c 65 20 66 6f 72 6d    61 74 2c 20 6c 69 73 74 20 6f 66 20 73 74 72 69  | ...;.Simple.format,.list.of.stri | 
| 9c6e0 |  6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 66 6f 72 20 72 6f 6c 65 20 3d 20 74 20 74 68  | ngs..............for.role.=.t.th | 
| 9c700 |  65 6e 20 28 6e 6f 74 20 72 6f 6c 65 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 65  | en.(not.role)..............if.te | 
| 9c720 |  78 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 72  | xt.collect..............(list.:r | 
| 9c740 |  6f 6c 65 20 28 69 66 20 72 6f 6c 65 20 22 75 73    65 72 22 20 22 61 73 73 69 73 74 61 6e 74 22 29  | ole.(if.role."user"."assistant") | 
| 9c760 |  20 3a 63 6f 6e 74 65 6e 74 20 74 65 78 74 29 29    29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f  | .:content.text))))..(cl-defmetho | 
| 9c780 |  64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62    75 66 66 65 72 20 28 28 62 61 63 6b 65 6e 64 20  | d.gptel--parse-buffer.((backend. | 
| 9c7a0 |  67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 26 6f    70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72  | gptel-openai).&optional.max-entr | 
| 9c7c0 |  69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72    6f 6d 70 74 73 29 20 28 70 72 65 76 2d 70 74 20  | ies)...(let.((prompts).(prev-pt. | 
| 9c7e0 |  28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 69    66 20 28 6f 72 20 67 70 74 65 6c 2d 6d 6f 64 65  | (point))).....(if.(or.gptel-mode | 
| 9c800 |  20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 72 65 73    70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 28  | .gptel-track-response).........( | 
| 9c820 |  77 68 69 6c 65 20 28 61 6e 64 20 28 6f 72 20 28    6e 6f 74 20 6d 61 78 2d 65 6e 74 72 69 65 73 29  | while.(and.(or.(not.max-entries) | 
| 9c840 |  20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73    20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .(>=.max-entries.0))............ | 
| 9c860 |  20 20 20 20 20 20 20 20 20 28 2f 3d 20 70 72 65    76 2d 70 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29  | .........(/=.prev-pt.(point-min) | 
| 9c880 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72  | ).....................(goto-char | 
| 9c8a0 |  20 28 70 72 65 76 69 6f 75 73 2d 73 69 6e 67 6c    65 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67  | .(previous-single-property-chang | 
| 9c8c0 |  65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e............................... | 
| 9c8e0 |  20 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c    20 6e 69 6c 20 28 70 6f 69 6e 74 2d 6d 69 6e 29  | ..(point).'gptel.nil.(point-min) | 
| 9c900 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70    63 61 73 65 20 28 67 65 74 2d 63 68 61 72 2d 70  | )))...........(pcase.(get-char-p | 
| 9c920 |  72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20    27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20  | roperty.(point).'gptel)......... | 
| 9c940 |  20 20 20 20 28 27 72 65 73 70 6f 6e 73 65 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65  | ....('response..............(whe | 
| 9c960 |  6e 2d 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74    20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70 72  | n-let*.((content.(gptel--trim-pr | 
| 9c980 |  65 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | efixes.......................... | 
| 9c9a0 |  20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65    72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70  | ..........(buffer-substring-no-p | 
| 9c9c0 |  72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74    29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20 20  | roperties.(point).prev-pt))))... | 
| 9c9e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75    73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22  | .............(push.(list.:role." | 
| 9ca00 |  61 73 73 69 73 74 61 6e 74 22 20 3a 63 6f 6e 74    65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f  | assistant".:content.content).pro | 
| 9ca20 |  6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 28 60 28 74 6f 6f 6c 20 2e 20 2c 69  | mpts))).............(`(tool...,i | 
| 9ca40 |  64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a  | d)..............(save-excursion. | 
| 9ca60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e  | ...............(condition-case.n | 
| 9ca80 |  69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 74 6f  | il....................(let*.((to | 
| 9caa0 |  6f 6c 2d 63 61 6c 6c 20 28 72 65 61 64 20 28 63    75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29  | ol-call.(read.(current-buffer))) | 
| 9cac0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65  | ...........................(name | 
| 9cae0 |  20 28 70 6c 69 73 74 2d 67 65 74 20 74 6f 6f 6c    2d 63 61 6c 6c 20 3a 6e 61 6d 65 29 29 0a 20 20  | .(plist-get.tool-call.:name))... | 
| 9cb00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e  | ........................(argumen | 
| 9cb20 |  74 73 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d    65 6e 63 6f 64 65 20 28 70 6c 69 73 74 2d 67 65  | ts.(gptel--json-encode.(plist-ge | 
| 9cb40 |  74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 3a 61 72 67    73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | t.tool-call.:args))))........... | 
| 9cb60 |  20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73    74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20  | ...........(plist-put.tool-call. | 
| 9cb80 |  3a 69 64 20 69 64 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c  | :id.id)......................(pl | 
| 9cba0 |  69 73 74 2d 70 75 74 20 74 6f 6f 6c 2d 63 61 6c    6c 20 3a 72 65 73 75 6c 74 0a 20 20 20 20 20 20  | ist-put.tool-call.:result....... | 
| 9cbc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e  | ..........................(strin | 
| 9cbe0 |  67 2d 74 72 69 6d 20 28 62 75 66 66 65 72 2d 73    75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70  | g-trim.(buffer-substring-no-prop | 
| 9cc00 |  65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | erties.......................... | 
| 9cc20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 6f 69 6e 74 29 20 70 72 65  | .....................(point).pre | 
| 9cc40 |  76 2d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75  | v-pt)))......................(pu | 
| 9cc60 |  73 68 20 28 63 61 72 20 28 67 70 74 65 6c 2d 2d    70 61 72 73 65 2d 74 6f 6f 6c 2d 72 65 73 75 6c  | sh.(car.(gptel--parse-tool-resul | 
| 9cc80 |  74 73 20 62 61 63 6b 65 6e 64 20 28 6c 69 73 74    20 74 6f 6f 6c 2d 63 61 6c 6c 29 29 29 0a 20 20  | ts.backend.(list.tool-call)))... | 
| 9cca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73  | .........................prompts | 
| 9ccc0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69  | )......................(push.(li | 
| 9cce0 |  73 74 20 3a 72 6f 6c 65 20 22 61 73 73 69 73 74    61 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20  | st.:role."assistant"............ | 
| 9cd00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 74 6f 6f 6c 5f 63 61 6c 6c  | ......................:tool_call | 
| 9cd20 |  73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | s............................... | 
| 9cd40 |  20 20 20 28 76 65 63 74 6f 72 20 28 6c 69 73 74    20 3a 74 79 70 65 20 22 66 75 6e 63 74 69 6f 6e  | ...(vector.(list.:type."function | 
| 9cd60 |  22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | "............................... | 
| 9cd80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 69 64 20 69 64 0a 20 20 20 20 20 20 20 20  | .................:id.id......... | 
| 9cda0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 9cdc0 |  20 20 20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e    20 60 28 20 3a 6e 61 6d 65 20 2c 6e 61 6d 65 0a  | .......:function.`(.:name.,name. | 
| 9cde0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 9ce00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 61 72 67  | ............................:arg | 
| 9ce20 |  75 6d 65 6e 74 73 20 2c 61 72 67 75 6d 65 6e 74    73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | uments.,arguments))))........... | 
| 9ce40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 70 72 6f 6d 70 74 73 29 29 0a 20 20 20 20 20  | .................prompts))...... | 
| 9ce60 |  20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 6e    64 2d 6f 66 2d 66 69 6c 65 20 69 6e 76 61 6c 69  | ............((end-of-file.invali | 
| 9ce80 |  64 2d 72 65 61 64 2d 73 79 6e 74 61 78 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | d-read-syntax).................. | 
| 9cea0 |  20 28 6d 65 73 73 61 67 65 20 28 66 6f 72 6d 61    74 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72  | .(message.(format."Could.not.par | 
| 9cec0 |  73 65 20 74 6f 6f 6c 2d 63 61 6c 6c 20 25 73 20    6f 6e 20 6c 69 6e 65 20 25 73 22 0a 20 20 20 20  | se.tool-call.%s.on.line.%s"..... | 
| 9cee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  | ...............................i | 
| 9cf00 |  64 20 28 6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61    74 2d 70 6f 73 20 28 70 6f 69 6e 74 29 29 29 29  | d.(line-number-at-pos.(point)))) | 
| 9cf20 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 27 69 67 6e 6f 72 65 29 0a 20 20 20 20 20  | )))).............('ignore)...... | 
| 9cf40 |  20 20 20 20 20 20 20 28 27 6e 69 6c 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 6d  | .......('nil..............(and.m | 
| 9cf60 |  61 78 2d 65 6e 74 72 69 65 73 20 28 63 6c 2d 64    65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29  | ax-entries.(cl-decf.max-entries) | 
| 9cf80 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28    69 66 20 67 70 74 65 6c 2d 74 72 61 63 6b 2d 6d  | )..............(if.gptel-track-m | 
| 9cfa0 |  65 64 69 61 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a  | edia..................(when-let* | 
| 9cfc0 |  20 28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65    6c 2d 2d 6f 70 65 6e 61 69 2d 70 61 72 73 65 2d  | .((content.(gptel--openai-parse- | 
| 9cfe0 |  6d 75 6c 74 69 70 61 72 74 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | multipart....................... | 
| 9d000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 6d  | .................(gptel--parse-m | 
| 9d020 |  65 64 69 61 2d 6c 69 6e 6b 73 20 6d 61 6a 6f 72    2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20  | edia-links.major-mode........... | 
| 9d040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 9d060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 20 70  | .......................(point).p | 
| 9d080 |  72 65 76 2d 70 74 29 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77  | rev-pt))))....................(w | 
| 9d0a0 |  68 65 6e 20 28 3e 20 28 6c 65 6e 67 74 68 20 63    6f 6e 74 65 6e 74 29 20 30 29 0a 20 20 20 20 20  | hen.(>.(length.content).0)...... | 
| 9d0c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c  | ................(push.(list.:rol | 
| 9d0e0 |  65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e    74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70  | e."user".:content.content).promp | 
| 9d100 |  74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20  | ts)))................(when-let*. | 
| 9d120 |  28 28 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c    2d 2d 74 72 69 6d 2d 70 72 65 66 69 78 65 73 20  | ((content.(gptel--trim-prefixes. | 
| 9d140 |  28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e    67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a  | (buffer-substring-no-properties. | 
| 9d160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 9d180 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e  | ...........................(poin | 
| 9d1a0 |  74 29 20 70 72 65 76 2d 70 74 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t).prev-pt)))).................. | 
| 9d1c0 |  28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c    65 20 22 75 73 65 72 22 20 3a 63 6f 6e 74 65 6e  | (push.(list.:role."user".:conten | 
| 9d1e0 |  74 20 63 6f 6e 74 65 6e 74 29 20 70 72 6f 6d 70    74 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20  | t.content).prompts)))))......... | 
| 9d200 |  20 20 28 73 65 74 71 20 70 72 65 76 2d 70 74 20    28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20  | ..(setq.prev-pt.(point)))....... | 
| 9d220 |  28 6c 65 74 20 28 28 63 6f 6e 74 65 6e 74 20 28    73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 75 66  | (let.((content.(string-trim.(buf | 
| 9d240 |  66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f    2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20  | fer-substring-no-properties..... | 
| 9d260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 9d280 |  28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69    6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20  | (point-min).(point-max)))))..... | 
| 9d2a0 |  20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20    3a 72 6f 6c 65 20 22 75 73 65 72 22 20 3a 63 6f  | ....(push.(list.:role."user".:co | 
| 9d2c0 |  6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 29 20 70    72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 70 72  | ntent.content).prompts))).....pr | 
| 9d2e0 |  6f 6d 70 74 73 29 29 0a 0a 3b 3b 20 54 4f 44 4f    20 54 68 69 73 20 63 6f 75 6c 64 20 62 65 20 61  | ompts))..;;.TODO.This.could.be.a | 
| 9d300 |  20 67 65 6e 65 72 69 63 20 66 75 6e 63 74 69 6f    6e 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d  | .generic.function.(defun.gptel-- | 
| 9d320 |  6f 70 65 6e 61 69 2d 70 61 72 73 65 2d 6d 75 6c    74 69 70 61 72 74 20 28 70 61 72 74 73 29 0a 20  | openai-parse-multipart.(parts).. | 
| 9d340 |  20 22 43 6f 6e 76 65 72 74 20 61 20 6d 75 6c 74    69 70 61 72 74 20 70 72 6f 6d 70 74 20 50 41 52  | ."Convert.a.multipart.prompt.PAR | 
| 9d360 |  54 53 20 74 6f 20 74 68 65 20 4f 70 65 6e 41 49    20 41 50 49 20 66 6f 72 6d 61 74 2e 0a 0a 54 68  | TS.to.the.OpenAI.API.format...Th | 
| 9d380 |  65 20 69 6e 70 75 74 20 69 73 20 61 6e 20 61 6c    69 73 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a  | e.input.is.an.alist.of.the.form. | 
| 9d3a0 |  20 28 28 3a 74 65 78 74 20 5c 22 73 6f 6d 65 20    74 65 78 74 5c 22 29 0a 20 20 28 3a 6d 65 64 69  | .((:text.\"some.text\")...(:medi | 
| 9d3c0 |  61 20 5c 22 2f 70 61 74 68 2f 74 6f 2f 6d 65 64    69 61 2e 70 6e 67 5c 22 20 3a 6d 69 6d 65 20 5c  | a.\"/path/to/media.png\".:mime.\ | 
| 9d3e0 |  22 69 6d 61 67 65 2f 70 6e 67 5c 22 29 0a 20 20    28 3a 74 65 78 74 20 5c 22 4d 6f 72 65 20 74 65  | "image/png\")...(:text.\"More.te | 
| 9d400 |  78 74 5c 22 29 29 2e 0a 0a 54 68 65 20 6f 75 74    70 75 74 20 69 73 20 61 20 76 65 63 74 6f 72 20  | xt\"))...The.output.is.a.vector. | 
| 9d420 |  6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 20    62 61 63 6b 65 6e 64 2d 61 70 70 72 6f 70 72 69  | of.entries.in.a.backend-appropri | 
| 9d440 |  61 74 65 0a 66 6f 72 6d 61 74 2e 22 0a 20 20 28    63 6c 2d 6c 6f 6f 70 0a 20 20 20 66 6f 72 20 70  | ate.format."...(cl-loop....for.p | 
| 9d460 |  61 72 74 20 69 6e 20 70 61 72 74 73 0a 20 20 20    66 6f 72 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20  | art.in.parts....for.n.upfrom.1.. | 
| 9d480 |  20 20 77 69 74 68 20 6c 61 73 74 20 3d 20 28 6c    65 6e 67 74 68 20 70 61 72 74 73 29 0a 20 20 20  | ..with.last.=.(length.parts).... | 
| 9d4a0 |  66 6f 72 20 74 65 78 74 20 3d 20 28 70 6c 69 73    74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74  | for.text.=.(plist-get.part.:text | 
| 9d4c0 |  29 0a 20 20 20 66 6f 72 20 6d 65 64 69 61 20 3d    20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72 74  | )....for.media.=.(plist-get.part | 
| 9d4e0 |  20 3a 6d 65 64 69 61 29 0a 20 20 20 69 66 20 74    65 78 74 20 64 6f 0a 20 20 20 28 61 6e 64 20 28  | .:media)....if.text.do....(and.( | 
| 9d500 |  6f 72 20 28 3d 20 6e 20 31 29 20 28 3d 20 6e 20    6c 61 73 74 29 29 20 28 73 65 74 71 20 74 65 78  | or.(=.n.1).(=.n.last)).(setq.tex | 
| 9d520 |  74 20 28 67 70 74 65 6c 2d 2d 74 72 69 6d 2d 70    72 65 66 69 78 65 73 20 74 65 78 74 29 29 29 0a  | t.(gptel--trim-prefixes.text))). | 
| 9d540 |  20 20 20 61 6e 64 20 69 66 20 74 65 78 74 0a 20    20 20 63 6f 6c 6c 65 63 74 20 60 28 3a 74 79 70  | ...and.if.text....collect.`(:typ | 
| 9d560 |  65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c    74 65 78 74 29 20 69 6e 74 6f 20 70 61 72 74 73  | e."text".:text.,text).into.parts | 
| 9d580 |  2d 61 72 72 61 79 20 65 6e 64 0a 20 20 20 65 6c    73 65 20 69 66 20 6d 65 64 69 61 20 63 6f 6c 6c  | -array.end....else.if.media.coll | 
| 9d5a0 |  65 63 74 0a 20 20 20 60 28 3a 74 79 70 65 20 22    69 6d 61 67 65 5f 75 72 6c 22 0a 20 20 20 20 20  | ect....`(:type."image_url"...... | 
| 9d5c0 |  3a 69 6d 61 67 65 5f 75 72 6c 20 28 3a 75 72 6c    20 2c 28 63 6f 6e 63 61 74 20 22 64 61 74 61 3a  | :image_url.(:url.,(concat."data: | 
| 9d5e0 |  22 20 28 70 6c 69 73 74 2d 67 65 74 20 70 61 72    74 20 3a 6d 69 6d 65 29 0a 20 20 20 20 20 20 20  | ".(plist-get.part.:mime)........ | 
| 9d600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 3b 62 61 73 65 36 34 2c 22 20 28 67 70 74  | .................";base64,".(gpt | 
| 9d620 |  65 6c 2d 2d 62 61 73 65 36 34 2d 65 6e 63 6f 64    65 20 6d 65 64 69 61 29 29 29 29 0a 20 20 20 69  | el--base64-encode.media))))....i | 
| 9d640 |  6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 0a    20 20 20 65 6c 73 65 20 69 66 20 28 70 6c 69 73  | nto.parts-array....else.if.(plis | 
| 9d660 |  74 2d 67 65 74 20 70 61 72 74 20 3a 74 65 78 74    66 69 6c 65 29 20 63 6f 6c 6c 65 63 74 0a 20 20  | t-get.part.:textfile).collect... | 
| 9d680 |  20 60 28 3a 74 79 70 65 20 22 74 65 78 74 22 0a    20 20 20 20 20 3a 74 65 78 74 20 2c 28 77 69 74  | .`(:type."text"......:text.,(wit | 
| 9d6a0 |  68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74  | h-temp-buffer...............(gpt | 
| 9d6c0 |  65 6c 2d 2d 69 6e 73 65 72 74 2d 66 69 6c 65 2d    73 74 72 69 6e 67 20 28 70 6c 69 73 74 2d 67 65  | el--insert-file-string.(plist-ge | 
| 9d6e0 |  74 20 70 61 72 74 20 3a 74 65 78 74 66 69 6c 65    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.part.:textfile)).............. | 
| 9d700 |  20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29    29 29 0a 20 20 20 69 6e 74 6f 20 70 61 72 74 73  | .(buffer-string)))....into.parts | 
| 9d720 |  2d 61 72 72 61 79 20 65 6e 64 20 61 6e 64 0a 20    20 20 69 66 20 28 70 6c 69 73 74 2d 67 65 74 20  | -array.end.and....if.(plist-get. | 
| 9d740 |  70 61 72 74 20 3a 75 72 6c 29 0a 20 20 20 63 6f    6c 6c 65 63 74 0a 20 20 20 60 28 3a 74 79 70 65  | part.:url)....collect....`(:type | 
| 9d760 |  20 22 69 6d 61 67 65 5f 75 72 6c 22 0a 20 20 20    20 20 3a 69 6d 61 67 65 5f 75 72 6c 20 28 3a 75  | ."image_url"......:image_url.(:u | 
| 9d780 |  72 6c 20 2c 28 70 6c 69 73 74 2d 67 65 74 20 70    61 72 74 20 3a 75 72 6c 29 29 29 0a 20 20 20 69  | rl.,(plist-get.part.:url)))....i | 
| 9d7a0 |  6e 74 6f 20 70 61 72 74 73 2d 61 72 72 61 79 0a    20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72  | nto.parts-array....finally.retur | 
| 9d7c0 |  6e 20 28 76 63 6f 6e 63 61 74 20 70 61 72 74 73    2d 61 72 72 61 79 29 29 29 0a 0a 3b 3b 20 54 4f  | n.(vconcat.parts-array)))..;;.TO | 
| 9d7e0 |  44 4f 3a 20 44 6f 65 73 20 74 68 69 73 20 6e 65    65 64 20 74 6f 20 62 65 20 61 20 67 65 6e 65 72  | DO:.Does.this.need.to.be.a.gener | 
| 9d800 |  69 63 20 66 75 6e 63 74 69 6f 6e 3f 0a 28 63 6c    2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c  | ic.function?.(cl-defmethod.gptel | 
| 9d820 |  2d 2d 77 72 61 70 2d 75 73 65 72 2d 70 72 6f 6d    70 74 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70  | --wrap-user-prompt.((_backend.gp | 
| 9d840 |  74 65 6c 2d 6f 70 65 6e 61 69 29 20 70 72 6f 6d    70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | tel-openai).prompts............. | 
| 9d860 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69  | ...........................&opti | 
| 9d880 |  6f 6e 61 6c 20 69 6e 6a 65 63 74 2d 6d 65 64 69    61 29 0a 20 20 22 57 72 61 70 20 74 68 65 20 6c  | onal.inject-media)..."Wrap.the.l | 
| 9d8a0 |  61 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20    69 6e 20 50 52 4f 4d 50 54 53 20 77 69 74 68 20  | ast.user.prompt.in.PROMPTS.with. | 
| 9d8c0 |  74 68 65 20 63 6f 6e 74 65 78 74 20 73 74 72 69    6e 67 2e 0a 0a 49 66 20 49 4e 4a 45 43 54 2d 4d  | the.context.string...If.INJECT-M | 
| 9d8e0 |  45 44 49 41 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20    77 72 61 70 20 69 74 20 77 69 74 68 20 62 61 73  | EDIA.is.non-nil.wrap.it.with.bas | 
| 9d900 |  65 36 34 2d 65 6e 63 6f 64 65 64 20 6d 65 64 69    61 0a 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63  | e64-encoded.media.files.in.the.c | 
| 9d920 |  6f 6e 74 65 78 74 2e 22 0a 20 20 28 69 66 20 69    6e 6a 65 63 74 2d 6d 65 64 69 61 0a 20 20 20 20  | ontext."...(if.inject-media..... | 
| 9d940 |  20 20 3b 3b 20 57 72 61 70 20 74 68 65 20 66 69    72 73 74 20 75 73 65 72 20 70 72 6f 6d 70 74 20  | ..;;.Wrap.the.first.user.prompt. | 
| 9d960 |  77 69 74 68 20 69 6e 63 6c 75 64 65 64 20 6d 65    64 69 61 20 66 69 6c 65 73 2f 63 6f 6e 74 65 78  | with.included.media.files/contex | 
| 9d980 |  74 73 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c    65 74 2a 20 28 28 6d 65 64 69 61 2d 6c 69 73 74  | ts.......(when-let*.((media-list | 
| 9d9a0 |  20 28 67 70 74 65 6c 2d 63 6f 6e 74 65 78 74 2d    2d 63 6f 6c 6c 65 63 74 2d 6d 65 64 69 61 29 29  | .(gptel-context--collect-media)) | 
| 9d9c0 |  29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 63 61    6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 63 75 72  | ).........(cl-callf.(lambda.(cur | 
| 9d9e0 |  72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63  | rent).....................(vconc | 
| 9da00 |  61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d  | at......................(gptel-- | 
| 9da20 |  6f 70 65 6e 61 69 2d 70 61 72 73 65 2d 6d 75 6c    74 69 70 61 72 74 20 6d 65 64 69 61 2d 6c 69 73  | openai-parse-multipart.media-lis | 
| 9da40 |  74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 63 6c 2d 74 79 70 65  | t)......................(cl-type | 
| 9da60 |  63 61 73 65 20 63 75 72 72 65 6e 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | case.current.................... | 
| 9da80 |  20 20 20 20 28 73 74 72 69 6e 67 20 60 28 28 3a    74 79 70 65 20 22 74 65 78 74 22 20 3a 74 65 78  | ....(string.`((:type."text".:tex | 
| 9daa0 |  74 20 2c 63 75 72 72 65 6e 74 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.,current)))................... | 
| 9dac0 |  20 20 20 20 20 28 76 65 63 74 6f 72 20 63 75 72    72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20  | .....(vector.current)........... | 
| 9dae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20    63 75 72 72 65 6e 74 29 29 29 29 0a 20 20 20 20  | .............(t.current))))..... | 
| 9db00 |  20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67    65 74 20 28 63 61 72 20 70 72 6f 6d 70 74 73 29  | ........(plist-get.(car.prompts) | 
| 9db20 |  20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20    20 3b 3b 20 57 72 61 70 20 74 68 65 20 6c 61 73  | .:content))).....;;.Wrap.the.las | 
| 9db40 |  74 20 75 73 65 72 20 70 72 6f 6d 70 74 20 77 69    74 68 20 69 6e 63 6c 75 64 65 64 20 74 65 78 74  | t.user.prompt.with.included.text | 
| 9db60 |  20 63 6f 6e 74 65 78 74 73 0a 20 20 20 20 28 63    6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20  | .contexts.....(cl-callf.(lambda. | 
| 9db80 |  28 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 65 74  | (current).................(cl-et | 
| 9dba0 |  79 70 65 63 61 73 65 20 63 75 72 72 65 6e 74 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ypecase.current................. | 
| 9dbc0 |  20 20 28 73 74 72 69 6e 67 20 28 67 70 74 65 6c    2d 63 6f 6e 74 65 78 74 2d 2d 77 72 61 70 20 63  | ..(string.(gptel-context--wrap.c | 
| 9dbe0 |  75 72 72 65 6e 74 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74  | urrent))...................(vect | 
| 9dc00 |  6f 72 20 28 69 66 2d 6c 65 74 2a 20 28 28 77 72    61 70 70 65 64 20 28 67 70 74 65 6c 2d 63 6f 6e  | or.(if-let*.((wrapped.(gptel-con | 
| 9dc20 |  74 65 78 74 2d 2d 77 72 61 70 20 6e 69 6c 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | text--wrap.nil)))............... | 
| 9dc40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 76 63 6f 6e 63 61 74 20 60 28 28 3a 74 79 70  | ................(vconcat.`((:typ | 
| 9dc60 |  65 20 22 74 65 78 74 22 20 3a 74 65 78 74 20 2c    77 72 61 70 70 65 64 29 29 0a 20 20 20 20 20 20  | e."text".:text.,wrapped))....... | 
| 9dc80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 9dca0 |  20 63 75 72 72 65 6e 74 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .current)....................... | 
| 9dcc0 |  20 20 20 20 20 20 63 75 72 72 65 6e 74 29 29 29    29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74  | ......current)))).........(plist | 
| 9dce0 |  2d 67 65 74 20 28 63 61 72 20 28 6c 61 73 74 20    70 72 6f 6d 70 74 73 29 29 20 3a 63 6f 6e 74 65  | -get.(car.(last.prompts)).:conte | 
| 9dd00 |  6e 74 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75    74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e  | nt))))..;;;###autoload.(cl-defun | 
| 9dd20 |  20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e    61 69 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65  | .gptel-make-openai.....(name.&ke | 
| 9dd40 |  79 20 63 75 72 6c 2d 61 72 67 73 20 6d 6f 64 65    6c 73 20 73 74 72 65 61 6d 20 6b 65 79 20 72 65  | y.curl-args.models.stream.key.re | 
| 9dd60 |  71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20 20 20    20 20 20 20 20 20 20 28 68 65 61 64 65 72 0a 20  | quest-params...........(header.. | 
| 9dd80 |  20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64    61 20 28 29 20 28 77 68 65 6e 2d 6c 65 74 2a 20  | ..........(lambda.().(when-let*. | 
| 9dda0 |  28 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d 67 65    74 2d 61 70 69 2d 6b 65 79 29 29 29 0a 20 20 20  | ((key.(gptel--get-api-key))).... | 
| 9ddc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    60 28 28 22 41 75 74 68 6f 72 69 7a 61 74 69 6f  | ................`(("Authorizatio | 
| 9dde0 |  6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42    65 61 72 65 72 20 22 20 6b 65 79 29 29 29 29 29  | n"...,(concat."Bearer.".key))))) | 
| 9de00 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73    74 20 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f  | )...........(host."api.openai.co | 
| 9de20 |  6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70    72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29  | m")...........(protocol."https") | 
| 9de40 |  0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70    6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 2f 63  | ...........(endpoint."/v1/chat/c | 
| 9de60 |  6f 6d 70 6c 65 74 69 6f 6e 73 22 29 29 0a 20 20    22 52 65 67 69 73 74 65 72 20 61 6e 20 4f 70 65  | ompletions"))..."Register.an.Ope | 
| 9de80 |  6e 41 49 20 41 50 49 2d 63 6f 6d 70 61 74 69 62    6c 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67  | nAI.API-compatible.backend.for.g | 
| 9dea0 |  70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a    0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e  | ptel.with.NAME...Keyword.argumen | 
| 9dec0 |  74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28    6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c  | ts:..CURL-ARGS.(optional).is.a.l | 
| 9dee0 |  69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61    6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73  | ist.of.additional.Curl.arguments | 
| 9df00 |  2e 0a 0a 48 4f 53 54 20 28 6f 70 74 69 6f 6e 61    6c 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f  | ...HOST.(optional).is.the.API.ho | 
| 9df20 |  73 74 2c 20 74 79 70 69 63 61 6c 6c 79 20 5c 22    61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 5c 22  | st,.typically.\"api.openai.com\" | 
| 9df40 |  2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c    69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65  | ...MODELS.is.a.list.of.available | 
| 9df60 |  20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2c 20 61 73    20 73 79 6d 62 6f 6c 73 2e 0a 41 64 64 69 74 69  | .model.names,.as.symbols..Additi | 
| 9df80 |  6f 6e 61 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20    73 70 65 63 69 66 79 20 73 75 70 70 6f 72 74 65  | onally,.you.can.specify.supporte | 
| 9dfa0 |  64 20 4c 4c 4d 20 63 61 70 61 62 69 6c 69 74 69    65 73 20 6c 69 6b 65 0a 76 69 73 69 6f 6e 20 6f  | d.LLM.capabilities.like.vision.o | 
| 9dfc0 |  72 20 74 6f 6f 6c 2d 75 73 65 20 62 79 20 61 70    70 65 6e 64 69 6e 67 20 61 20 70 6c 69 73 74 20  | r.tool-use.by.appending.a.plist. | 
| 9dfe0 |  74 6f 20 74 68 65 20 6d 6f 64 65 6c 20 77 69 74    68 20 6d 6f 72 65 0a 69 6e 66 6f 72 6d 61 74 69  | to.the.model.with.more.informati | 
| 9e000 |  6f 6e 2c 20 69 6e 20 74 68 65 20 66 6f 72 6d 0a    0a 20 28 6d 6f 64 65 6c 2d 6e 61 6d 65 20 2e 20  | on,.in.the.form...(model-name... | 
| 9e020 |  70 6c 69 73 74 29 0a 0a 46 6f 72 20 61 20 6c 69    73 74 20 6f 66 20 63 75 72 72 65 6e 74 6c 79 20  | plist)..For.a.list.of.currently. | 
| 9e040 |  72 65 63 6f 67 6e 69 7a 65 64 20 70 6c 69 73 74    20 6b 65 79 73 2c 20 73 65 65 0a 60 67 70 74 65  | recognized.plist.keys,.see.`gpte | 
| 9e060 |  6c 2d 2d 6f 70 65 6e 61 69 2d 6d 6f 64 65 6c 73    27 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20 6f  | l--openai-models'...An.example.o | 
| 9e080 |  66 20 61 20 6d 6f 64 65 6c 20 73 70 65 63 69 66    69 63 61 74 69 6f 6e 0a 69 6e 63 6c 75 64 69 6e  | f.a.model.specification.includin | 
| 9e0a0 |  67 20 62 6f 74 68 20 6b 69 6e 64 73 20 6f 66 20    73 70 65 63 73 3a 0a 0a 3a 6d 6f 64 65 6c 73 0a  | g.both.kinds.of.specs:..:models. | 
| 9e0c0 |  5c 5c 3d 27 28 67 70 74 2d 33 2e 35 2d 74 75 72    62 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | \\='(gpt-3.5-turbo.............. | 
| 9e0e0 |  20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6d 70    6c 65 20 73 70 65 63 73 0a 20 20 67 70 74 2d 34  | ...........;Simple.specs...gpt-4 | 
| 9e100 |  2d 74 75 72 62 6f 0a 20 20 28 67 70 74 2d 34 6f    2d 6d 69 6e 69 20 20 20 20 20 20 20 20 20 20 20  | -turbo...(gpt-4o-mini........... | 
| 9e120 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b    46 75 6c 6c 20 73 70 65 63 0a 20 20 20 3a 64 65  | ...............;Full.spec....:de | 
| 9e140 |  73 63 72 69 70 74 69 6f 6e 0a 20 20 20 5c 22 41    66 66 6f 72 64 61 62 6c 65 20 61 6e 64 20 69 6e  | scription....\"Affordable.and.in | 
| 9e160 |  74 65 6c 6c 69 67 65 6e 74 20 73 6d 61 6c 6c 20    6d 6f 64 65 6c 20 66 6f 72 20 6c 69 67 68 74 77  | telligent.small.model.for.lightw | 
| 9e180 |  65 69 67 68 74 20 74 61 73 6b 73 5c 22 0a 20 20    20 3a 63 61 70 61 62 69 6c 69 74 69 65 73 20 28  | eight.tasks\"....:capabilities.( | 
| 9e1a0 |  6d 65 64 69 61 20 74 6f 6f 6c 20 6a 73 6f 6e 20    75 72 6c 29 0a 20 20 20 3a 6d 69 6d 65 2d 74 79  | media.tool.json.url)....:mime-ty | 
| 9e1c0 |  70 65 73 0a 20 20 20 28 5c 22 69 6d 61 67 65 2f    6a 70 65 67 5c 22 20 5c 22 69 6d 61 67 65 2f 70  | pes....(\"image/jpeg\".\"image/p | 
| 9e1e0 |  6e 67 5c 22 20 5c 22 69 6d 61 67 65 2f 67 69 66    5c 22 20 5c 22 69 6d 61 67 65 2f 77 65 62 70 5c  | ng\".\"image/gif\".\"image/webp\ | 
| 9e200 |  22 29 29 29 0a 0a 53 54 52 45 41 4d 20 69 73 20    61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67  | ")))..STREAM.is.a.boolean.to.tog | 
| 9e220 |  67 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65    73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74  | gle.streaming.responses,.default | 
| 9e240 |  73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f    54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29  | s.to.false...PROTOCOL.(optional) | 
| 9e260 |  20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70    72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 73 20 62  | .specifies.the.protocol,.https.b | 
| 9e280 |  79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50    4f 49 4e 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20  | y.default...ENDPOINT.(optional). | 
| 9e2a0 |  69 73 20 74 68 65 20 41 50 49 20 65 6e 64 70 6f    69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69  | is.the.API.endpoint.for.completi | 
| 9e2c0 |  6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f    0a 5c 22 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70  | ons,.defaults.to.\"/v1/chat/comp | 
| 9e2e0 |  6c 65 74 69 6f 6e 73 5c 22 2e 0a 0a 48 45 41 44    45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73  | letions\"...HEADER.(optional).is | 
| 9e300 |  20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20    68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20  | .for.additional.headers.to.send. | 
| 9e320 |  77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73    74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65  | with.each.request...It.should.be | 
| 9e340 |  20 61 6e 20 61 6c 69 73 74 20 6f 72 20 61 20 66    75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74  | .an.alist.or.a.function.that.ret | 
| 9e360 |  75 72 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c    69 6b 65 3a 0a 20 28 28 5c 22 43 6f 6e 74 65 6e  | urns.an.alist,.like:..((\"Conten | 
| 9e380 |  74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61 70 70    6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29  | t-Type\"...\"application/json\") | 
| 9e3a0 |  29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f 6e 61 6c    29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20  | )..KEY.(optional).is.a.variable. | 
| 9e3c0 |  77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74    68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66  | whose.value.is.the.API.key,.or.f | 
| 9e3e0 |  75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74    75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 52  | unction.that.returns.the.key...R | 
| 9e400 |  45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 28 6f    70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70 6c  | EQUEST-PARAMS.(optional).is.a.pl | 
| 9e420 |  69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61    6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a 70  | ist.of.additional.HTTP.request.p | 
| 9e440 |  61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70 6c    69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76 61  | arameters.(as.plist.keys).and.va | 
| 9e460 |  6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62    79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65 0a  | lues.supported.by.the.API...Use. | 
| 9e480 |  74 68 65 73 65 20 74 6f 20 73 65 74 20 70 61 72    61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70 74  | these.to.set.parameters.that.gpt | 
| 9e4a0 |  65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76    69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e 73  | el.does.not.provide.user.options | 
| 9e4c0 |  0a 66 6f 72 2e 22 0a 20 20 28 64 65 63 6c 61 72    65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20  | .for."...(declare.(indent.1))... | 
| 9e4e0 |  28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28    67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e  | (let.((backend.(gptel--make-open | 
| 9e500 |  61 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20  | ai...................:curl-args. | 
| 9e520 |  63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d  | curl-args...................:nam | 
| 9e540 |  65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68  | e.name...................:host.h | 
| 9e560 |  6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65  | ost...................:header.he | 
| 9e580 |  61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a  | ader...................:key.key. | 
| 9e5a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3a 6d 6f 64 65 6c 73 20 28 67 70 74 65 6c  | ..................:models.(gptel | 
| 9e5c0 |  2d 2d 70 72 6f 63 65 73 73 2d 6d 6f 64 65 6c 73    20 6d 6f 64 65 6c 73 29 0a 20 20 20 20 20 20 20  | --process-models.models)........ | 
| 9e5e0 |  20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74    6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20  | ...........:protocol.protocol... | 
| 9e600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69  | ................:endpoint.endpoi | 
| 9e620 |  6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72  | nt...................:stream.str | 
| 9e640 |  65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 72 65 71 75 65 73 74 2d 70  | eam...................:request-p | 
| 9e660 |  61 72 61 6d 73 20 72 65 71 75 65 73 74 2d 70 61    72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20  | arams.request-params............ | 
| 9e680 |  20 20 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20    70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20  | .......:url.(if.protocol........ | 
| 9e6a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74  | ....................(concat.prot | 
| 9e6c0 |  6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20    65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20  | ocol."://".host.endpoint)....... | 
| 9e6e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20  | ...................(concat.host. | 
| 9e700 |  65 6e 64 70 6f 69 6e 74 29 29 29 29 29 0a 20 20    20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64  | endpoint))))).....(prog1.backend | 
| 9e720 |  0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c    69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74  | .......(setf.(alist-get.name.gpt | 
| 9e740 |  65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e    64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | el--known-backends.............. | 
| 9e760 |  20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69    6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20  | ..........nil.nil.#'equal)...... | 
| 9e780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63    6b 65 6e 64 29 29 29 29 0a 0a 3b 3b 3b 20 41 7a  | .............backend))))..;;;.Az | 
| 9e7a0 |  75 72 65 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f    61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74  | ure.;;;###autoload.(cl-defun.gpt | 
| 9e7c0 |  65 6c 2d 6d 61 6b 65 2d 61 7a 75 72 65 0a 20 20    20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72  | el-make-azure.....(name.&key.cur | 
| 9e7e0 |  6c 2d 61 72 67 73 20 68 6f 73 74 0a 20 20 20 20    20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20  | l-args.host...........(protocol. | 
| 9e800 |  22 68 74 74 70 73 22 29 0a 20 20 20 20 20 20 20    20 20 20 28 68 65 61 64 65 72 20 28 6c 61 6d 62  | "https")...........(header.(lamb | 
| 9e820 |  64 61 20 28 29 20 60 28 28 22 61 70 69 2d 6b 65    79 22 20 2e 20 2c 28 67 70 74 65 6c 2d 2d 67 65  | da.().`(("api-key"...,(gptel--ge | 
| 9e840 |  74 2d 61 70 69 2d 6b 65 79 29 29 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 28 6b 65 79 20 27 67  | t-api-key)))))...........(key.'g | 
| 9e860 |  70 74 65 6c 2d 61 70 69 2d 6b 65 79 29 0a 20 20    20 20 20 20 20 20 20 20 6d 6f 64 65 6c 73 20 73  | ptel-api-key)...........models.s | 
| 9e880 |  74 72 65 61 6d 20 65 6e 64 70 6f 69 6e 74 20 72    65 71 75 65 73 74 2d 70 61 72 61 6d 73 29 0a 20  | tream.endpoint.request-params).. | 
| 9e8a0 |  20 22 52 65 67 69 73 74 65 72 20 61 6e 20 41 7a    75 72 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 20  | ."Register.an.Azure.backend.for. | 
| 9e8c0 |  67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e    0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65  | gptel.with.NAME...Keyword.argume | 
| 9e8e0 |  6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20    28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20  | nts:..CURL-ARGS.(optional).is.a. | 
| 9e900 |  6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e    61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74  | list.of.additional.Curl.argument | 
| 9e920 |  73 2e 0a 0a 48 4f 53 54 20 69 73 20 74 68 65 20    41 50 49 20 68 6f 73 74 2e 0a 0a 4d 4f 44 45 4c  | s...HOST.is.the.API.host...MODEL | 
| 9e940 |  53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61    76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e  | S.is.a.list.of.available.model.n | 
| 9e960 |  61 6d 65 73 2c 20 61 73 20 73 79 6d 62 6f 6c 73    2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62  | ames,.as.symbols...STREAM.is.a.b | 
| 9e980 |  6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c 65    20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f  | oolean.to.toggle.streaming.respo | 
| 9e9a0 |  6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74    6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43  | nses,.defaults.to.false...PROTOC | 
| 9e9c0 |  4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70    65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74  | OL.(optional).specifies.the.prot | 
| 9e9e0 |  6f 63 6f 6c 2c 20 68 74 74 70 73 20 62 79 20 64    65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e  | ocol,.https.by.default...ENDPOIN | 
| 9ea00 |  54 20 69 73 20 74 68 65 20 41 50 49 20 65 6e 64    70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65  | T.is.the.API.endpoint.for.comple | 
| 9ea20 |  74 69 6f 6e 73 2e 0a 0a 48 45 41 44 45 52 20 28    6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72  | tions...HEADER.(optional).is.for | 
| 9ea40 |  20 61 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64    65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68  | .additional.headers.to.send.with | 
| 9ea60 |  20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20    49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20  | .each.request...It.should.be.an. | 
| 9ea80 |  61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e 63 74    69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20  | alist.or.a.function.that.retuns. | 
| 9eaa0 |  61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a    20 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70  | an.alist,.like:..((\"Content-Typ | 
| 9eac0 |  65 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61 74    69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45  | e\"...\"application/json\"))..KE | 
| 9eae0 |  59 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20    61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65  | Y.(optional).is.a.variable.whose | 
| 9eb00 |  20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50    49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69  | .value.is.the.API.key,.or.functi | 
| 9eb20 |  6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20    74 68 65 20 6b 65 79 2e 0a 0a 52 45 51 55 45 53  | on.that.returns.the.key...REQUES | 
| 9eb40 |  54 2d 50 41 52 41 4d 53 20 28 6f 70 74 69 6f 6e    61 6c 29 20 69 73 20 61 20 70 6c 69 73 74 20 6f  | T-PARAMS.(optional).is.a.plist.o | 
| 9eb60 |  66 20 61 64 64 69 74 69 6f 6e 61 6c 20 48 54 54    50 20 72 65 71 75 65 73 74 0a 70 61 72 61 6d 65  | f.additional.HTTP.request.parame | 
| 9eb80 |  74 65 72 73 20 28 61 73 20 70 6c 69 73 74 20 6b    65 79 73 29 20 61 6e 64 20 76 61 6c 75 65 73 20  | ters.(as.plist.keys).and.values. | 
| 9eba0 |  73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65    20 41 50 49 2e 20 20 55 73 65 0a 74 68 65 73 65  | supported.by.the.API...Use.these | 
| 9ebc0 |  20 74 6f 20 73 65 74 20 70 61 72 61 6d 65 74 65    72 73 20 74 68 61 74 20 67 70 74 65 6c 20 64 6f  | .to.set.parameters.that.gptel.do | 
| 9ebe0 |  65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 75    73 65 72 20 6f 70 74 69 6f 6e 73 0a 66 6f 72 2e  | es.not.provide.user.options.for. | 
| 9ec00 |  0a 0a 45 78 61 6d 70 6c 65 3a 0a 2d 2d 2d 2d 2d    2d 2d 0a 0a 20 28 67 70 74 65 6c 2d 6d 61 6b 65  | ..Example:.-------...(gptel-make | 
| 9ec20 |  2d 61 7a 75 72 65 0a 20 20 5c 22 41 7a 75 72 65    2d 31 5c 22 0a 20 20 3a 70 72 6f 74 6f 63 6f 6c  | -azure...\"Azure-1\"...:protocol | 
| 9ec40 |  20 5c 22 68 74 74 70 73 5c 22 0a 20 20 3a 68 6f    73 74 20 5c 22 52 45 53 4f 55 52 43 45 5f 4e 41  | .\"https\"...:host.\"RESOURCE_NA | 
| 9ec60 |  4d 45 2e 6f 70 65 6e 61 69 2e 61 7a 75 72 65 2e    63 6f 6d 5c 22 0a 20 20 3a 65 6e 64 70 6f 69 6e  | ME.openai.azure.com\"...:endpoin | 
| 9ec80 |  74 0a 20 20 5c 22 2f 6f 70 65 6e 61 69 2f 64 65    70 6c 6f 79 6d 65 6e 74 73 2f 44 45 50 4c 4f 59  | t...\"/openai/deployments/DEPLOY | 
| 9eca0 |  4d 45 4e 54 5f 4e 41 4d 45 2f 63 6f 6d 70 6c 65    74 69 6f 6e 73 3f 61 70 69 2d 76 65 72 73 69 6f  | MENT_NAME/completions?api-versio | 
| 9ecc0 |  6e 3d 32 30 32 33 2d 30 35 2d 31 35 5c 22 0a 20    20 3a 73 74 72 65 61 6d 20 74 0a 20 20 3a 6d 6f  | n=2023-05-15\"...:stream.t...:mo | 
| 9ece0 |  64 65 6c 73 20 5c 5c 3d 27 28 67 70 74 2d 33 2e    35 2d 74 75 72 62 6f 20 67 70 74 2d 34 29 29 22  | dels.\\='(gpt-3.5-turbo.gpt-4))" | 
| 9ed00 |  0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64    65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28  | ...(declare.(indent.1))...(let.( | 
| 9ed20 |  28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d    2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20  | (backend.(gptel--make-openai.... | 
| 9ed40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61  | ...............:curl-args.curl-a | 
| 9ed60 |  72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65  | rgs...................:name.name | 
| 9ed80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20  | ...................:host.host... | 
| 9eda0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20  | ................:header.header.. | 
| 9edc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20  | .................:key.key....... | 
| 9ede0 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64    65 6c 73 20 28 67 70 74 65 6c 2d 2d 70 72 6f 63  | ............:models.(gptel--proc | 
| 9ee00 |  65 73 73 2d 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c    73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ess-models.models).............. | 
| 9ee20 |  20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70    72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20  | .....:protocol.protocol......... | 
| 9ee40 |  20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f    69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20  | ..........:endpoint.endpoint.... | 
| 9ee60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a    73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20  | ...............:stream.stream... | 
| 9ee80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 20  | ................:request-params. | 
| 9eea0 |  72 65 71 75 65 73 74 2d 70 61 72 61 6d 73 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | request-params.................. | 
| 9eec0 |  20 3a 75 72 6c 20 28 69 66 20 70 72 6f 74 6f 63    6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .:url.(if.protocol.............. | 
| 9eee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63    6f 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22  | ..............(concat.protocol." | 
| 9ef00 |  3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69    6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ://".host.endpoint)............. | 
| 9ef20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 63 61 74 20 68 6f 73 74 20 65 6e 64 70 6f 69  | .............(concat.host.endpoi | 
| 9ef40 |  6e 74 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f    67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20  | nt))))).....(prog1.backend...... | 
| 9ef60 |  20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65    74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e  | .(setf.(alist-get.name.gptel--kn | 
| 9ef80 |  6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | own-backends.................... | 
| 9efa0 |  20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71    75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ....nil.nil.#'equal)............ | 
| 9efc0 |  20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 3b 3b    20 47 50 54 34 41 6c 6c 0a 3b 3b 3b 23 23 23 61  | .backend))))..;;.GPT4All.;;;###a | 
| 9efe0 |  75 74 6f 6c 6f 61 64 0a 28 64 65 66 61 6c 69 61    73 20 27 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70  | utoload.(defalias.'gptel-make-gp | 
| 9f000 |  74 34 61 6c 6c 20 27 67 70 74 65 6c 2d 6d 61 6b    65 2d 6f 70 65 6e 61 69 0a 20 20 22 52 65 67 69  | t4all.'gptel-make-openai..."Regi | 
| 9f020 |  73 74 65 72 20 61 20 47 50 54 34 41 6c 6c 20 62    61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c  | ster.a.GPT4All.backend.for.gptel | 
| 9f040 |  20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79    77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a  | .with.NAME...Keyword.arguments:. | 
| 9f060 |  0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69    6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20  | .CURL-ARGS.(optional).is.a.list. | 
| 9f080 |  6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75    72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48  | of.additional.Curl.arguments...H | 
| 9f0a0 |  4f 53 54 20 69 73 20 77 68 65 72 65 20 47 50 54    34 41 6c 6c 20 72 75 6e 73 20 28 77 69 74 68 20  | OST.is.where.GPT4All.runs.(with. | 
| 9f0c0 |  70 6f 72 74 29 2c 20 74 79 70 69 63 61 6c 6c 79    20 6c 6f 63 61 6c 68 6f 73 74 3a 34 38 39 31 0a  | port),.typically.localhost:4891. | 
| 9f0e0 |  0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73    74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d  | .MODELS.is.a.list.of.available.m | 
| 9f100 |  6f 64 65 6c 20 6e 61 6d 65 73 2c 20 61 73 20 73    79 6d 62 6f 6c 73 2e 0a 0a 53 54 52 45 41 4d 20  | odel.names,.as.symbols...STREAM. | 
| 9f120 |  69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20    74 6f 67 67 6c 65 20 73 74 72 65 61 6d 69 6e 67  | is.a.boolean.to.toggle.streaming | 
| 9f140 |  20 72 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61    75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a  | .responses,.defaults.to.false... | 
| 9f160 |  50 52 4f 54 4f 43 4f 4c 20 73 70 65 63 69 66 69    65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c  | PROTOCOL.specifies.the.protocol, | 
| 9f180 |  20 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c    74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70  | .https.by.default...ENDPOINT.(op | 
| 9f1a0 |  74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41    50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20  | tional).is.the.API.endpoint.for. | 
| 9f1c0 |  63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66    61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f  | completions,.defaults.to.\"/api/ | 
| 9f1e0 |  76 31 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 5c 22    0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e  | v1/completions\"..HEADER.(option | 
| 9f200 |  61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 74    69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f  | al).is.for.additional.headers.to | 
| 9f220 |  20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a    72 65 71 75 65 73 74 2e 20 49 74 20 73 68 6f 75  | .send.with.each.request..It.shou | 
| 9f240 |  6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f    72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61  | ld.be.an.alist.or.a.function.tha | 
| 9f260 |  74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73    74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e  | t.retuns.an.alist,.like:.((\"Con | 
| 9f280 |  74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22    61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e  | tent-Type\"...\"application/json | 
| 9f2a0 |  5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f    6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62  | \"))..KEY.(optional).is.a.variab | 
| 9f2c0 |  6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69    73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f  | le.whose.value.is.the.API.key,.o | 
| 9f2e0 |  72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20    72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e  | r.function.that.returns.the.key. | 
| 9f300 |  20 54 68 69 73 20 69 73 20 74 79 70 69 63 61 6c    6c 79 20 6e 6f 74 20 72 65 71 75 69 72 65 64 20  | .This.is.typically.not.required. | 
| 9f320 |  66 6f 72 0a 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73    20 6c 69 6b 65 20 47 50 54 34 41 6c 6c 2e 0a 0a  | for.local.models.like.GPT4All... | 
| 9f340 |  52 45 51 55 45 53 54 2d 50 41 52 41 4d 53 20 28    6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 70  | REQUEST-PARAMS.(optional).is.a.p | 
| 9f360 |  6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e    61 6c 20 48 54 54 50 20 72 65 71 75 65 73 74 0a  | list.of.additional.HTTP.request. | 
| 9f380 |  70 61 72 61 6d 65 74 65 72 73 20 28 61 73 20 70    6c 69 73 74 20 6b 65 79 73 29 20 61 6e 64 20 76  | parameters.(as.plist.keys).and.v | 
| 9f3a0 |  61 6c 75 65 73 20 73 75 70 70 6f 72 74 65 64 20    62 79 20 74 68 65 20 41 50 49 2e 20 20 55 73 65  | alues.supported.by.the.API...Use | 
| 9f3c0 |  0a 74 68 65 73 65 20 74 6f 20 73 65 74 20 70 61    72 61 6d 65 74 65 72 73 20 74 68 61 74 20 67 70  | .these.to.set.parameters.that.gp | 
| 9f3e0 |  74 65 6c 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f    76 69 64 65 20 75 73 65 72 20 6f 70 74 69 6f 6e  | tel.does.not.provide.user.option | 
| 9f400 |  73 0a 66 6f 72 2e 0a 0a 45 78 61 6d 70 6c 65 3a    0a 2d 2d 2d 2d 2d 2d 2d 0a 0a 28 67 70 74 65 6c  | s.for...Example:.-------..(gptel | 
| 9f420 |  2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 0a 20 5c    22 47 50 54 34 41 6c 6c 5c 22 0a 20 3a 70 72 6f  | -make-gpt4all..\"GPT4All\"..:pro | 
| 9f440 |  74 6f 63 6f 6c 20 5c 22 68 74 74 70 5c 22 0a 20    3a 68 6f 73 74 20 5c 22 6c 6f 63 61 6c 68 6f 73  | tocol.\"http\"..:host.\"localhos | 
| 9f460 |  74 3a 34 38 39 31 5c 22 0a 20 3a 6d 6f 64 65 6c    73 20 5c 5c 3d 27 28 6d 69 73 74 72 61 6c 2d 37  | t:4891\"..:models.\\='(mistral-7 | 
| 9f480 |  62 2d 6f 70 65 6e 6f 72 63 61 2e 51 34 5f 30 2e    67 67 75 66 29 29 22 29 0a 0a 28 70 72 6f 76 69  | b-openorca.Q4_0.gguf))")..(provi | 
| 9f4a0 |  64 65 20 27 67 70 74 65 6c 2d 6f 70 65 6e 61 69    29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 70 65 6e  | de.'gptel-openai).;;;.gptel-open | 
| 9f4c0 |  61 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a    0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62  | ai.el.ends.here..;;.Local.Variab | 
| 9f4e0 |  6c 65 73 3a 0a 3b 3b 20 62 79 74 65 2d 63 6f 6d    70 69 6c 65 2d 77 61 72 6e 69 6e 67 73 3a 20 28  | les:.;;.byte-compile-warnings:.( | 
| 9f500 |  6e 6f 74 20 64 6f 63 73 74 72 69 6e 67 73 29 0a    3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00  | not.docstrings).;;.End:......... | 
| 9f520 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f540 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f560 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f580 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f5a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f5c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f5e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f600 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 2e 64    69 72 2d 6c 6f 63 61 6c 73 2e 65 6c 00 00 00 00  | gptel-0.9.8.5/.dir-locals.el.... | 
| 9f620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f660 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 9f680 |  30 30 30 30 32 32 34 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 30 37 34 00 20 30 00 00 00  | 0000224.00000000000.014074..0... | 
| 9f6a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f6c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f6e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f700 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 9f720 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 9f740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f7a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f7c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f7e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f800 |  28 28 6e 69 6c 20 2e 20 28 28 69 6e 64 65 6e 74    2d 74 61 62 73 2d 6d 6f 64 65 20 2e 20 6e 69 6c  | ((nil...((indent-tabs-mode...nil | 
| 9f820 |  29 0a 09 20 28 73 65 6e 74 65 6e 63 65 2d 65 6e    64 2d 64 6f 75 62 6c 65 2d 73 70 61 63 65 20 2e  | )...(sentence-end-double-space.. | 
| 9f840 |  20 74 29 0a 09 20 28 62 75 67 2d 72 65 66 65 72    65 6e 63 65 2d 75 72 6c 2d 66 6f 72 6d 61 74 20  | .t)...(bug-reference-url-format. | 
| 9f860 |  2e 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75    62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67  | .."https://github.com/karthink/g | 
| 9f880 |  70 74 65 6c 2f 69 73 73 75 65 73 2f 25 73 22 29    29 29 29 0a 00 00 00 00 00 00 00 00 00 00 00 00  | ptel/issues/%s"))))............. | 
| 9f8a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f8c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f8e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f900 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f920 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f9a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f9c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9f9e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fa00 |  67 70 74 65 6c 2d 30 2e 39 2e 38 2e 35 2f 67 70    74 65 6c 2d 6f 72 67 2e 65 6c 00 00 00 00 00 00  | gptel-0.9.8.5/gptel-org.el...... | 
| 9fa20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fa40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fa60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 9fa80 |  30 31 30 31 30 34 32 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 36 36 35 00 20 30 00 00 00  | 0101042.00000000000.013665..0... | 
| 9faa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fb00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 9fb20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 9fb40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fb60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fb80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fbc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fbe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 9fc00 |  3b 3b 3b 20 67 70 74 65 6c 2d 6f 72 67 2e 65 6c    20 2d 2d 2d 20 4f 72 67 20 66 75 6e 63 74 69 6f  | ;;;.gptel-org.el.---.Org.functio | 
| 9fc20 |  6e 73 20 66 6f 72 20 67 70 74 65 6c 20 20 20 20    20 20 20 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c  | ns.for.gptel.........-*-.lexical | 
| 9fc40 |  2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d    0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28  | -binding:.t;.-*-..;;.Copyright.( | 
| 9fc60 |  43 29 20 32 30 32 34 20 20 4b 61 72 74 68 69 6b    20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b  | C).2024..Karthik.Chikmagalur..;; | 
| 9fc80 |  20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b    20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61  | .Author:.Karthik.Chikmagalur.<ka | 
| 9fca0 |  72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72    40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4b  | rthikchikmagalur@gmail.com>.;;.K | 
| 9fcc0 |  65 79 77 6f 72 64 73 3a 0a 0a 3b 3b 20 54 68 69    73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65  | eywords:..;;.This.program.is.fre | 
| 9fce0 |  65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20    63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65  | e.software;.you.can.redistribute | 
| 9fd00 |  20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66    79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68  | .it.and/or.modify.;;.it.under.th | 
| 9fd20 |  65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47    4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  | e.terms.of.the.GNU.General.Publi | 
| 9fd40 |  63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62    6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65  | c.License.as.published.by.;;.the | 
| 9fd60 |  20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46    6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65  | .Free.Software.Foundation,.eithe | 
| 9fd80 |  72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74    68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b  | r.version.3.of.the.License,.or.; | 
| 9fda0 |  3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f    6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72  | ;.(at.your.option).any.later.ver | 
| 9fdc0 |  73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70    72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69  | sion...;;.This.program.is.distri | 
| 9fde0 |  62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70    65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62  | buted.in.the.hope.that.it.will.b | 
| 9fe00 |  65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74    20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52  | e.useful,.;;.but.WITHOUT.ANY.WAR | 
| 9fe20 |  52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65    76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20  | RANTY;.without.even.the.implied. | 
| 9fe40 |  77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d    45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f  | warranty.of.;;.MERCHANTABILITY.o | 
| 9fe60 |  72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20    50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f  | r.FITNESS.FOR.A.PARTICULAR.PURPO | 
| 9fe80 |  53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20    47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c  | SE...See.the.;;.GNU.General.Publ | 
| 9fea0 |  69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d    6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b  | ic.License.for.more.details...;; | 
| 9fec0 |  20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65    20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79  | .You.should.have.received.a.copy | 
| 9fee0 |  20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65    72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e  | .of.the.GNU.General.Public.Licen | 
| 9ff00 |  73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68    20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20  | se.;;.along.with.this.program... | 
| 9ff20 |  49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74    70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67  | If.not,.see.<https://www.gnu.org | 
| 9ff40 |  2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b    3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b  | /licenses/>...;;;.Commentary:..; | 
| 9ff60 |  3b 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 65 76    61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 20  | ;..;;;.Code:.(eval-when-compile. | 
| 9ff80 |  28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29    29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c  | (require.'gptel)).(require.'cl-l | 
| 9ffa0 |  69 62 29 0a 28 72 65 71 75 69 72 65 20 27 6f 72    67 2d 65 6c 65 6d 65 6e 74 29 0a 28 72 65 71 75  | ib).(require.'org-element).(requ | 
| 9ffc0 |  69 72 65 20 27 6f 75 74 6c 69 6e 65 29 0a 0a 3b    3b 20 46 75 6e 63 74 69 6f 6e 73 20 75 73 65 64  | ire.'outline)..;;.Functions.used | 
| 9ffe0 |  20 66 6f 72 20 73 61 76 69 6e 67 2f 72 65 73 74    6f 72 69 6e 67 20 67 70 74 65 6c 20 73 74 61 74  | .for.saving/restoring.gptel.stat | 
| a0000 |  65 20 69 6e 20 4f 72 67 20 62 75 66 66 65 72 73    0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d  | e.in.Org.buffers.(defvar.gptel-- | 
| a0020 |  6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d    73 65 6e 64 29 0a 28 64 65 66 76 61 72 20 6f 72  | num-messages-to-send).(defvar.or | 
| a0040 |  67 2d 65 6e 74 72 79 2d 70 72 6f 70 65 72 74 79    2d 69 6e 68 65 72 69 74 65 64 2d 66 72 6f 6d 29  | g-entry-property-inherited-from) | 
| a0060 |  0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 62    61 63 6b 65 6e 64 29 0a 28 64 65 66 76 61 72 20  | .(defvar.gptel-backend).(defvar. | 
| a0080 |  67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63    6b 65 6e 64 73 29 0a 28 64 65 66 76 61 72 20 67  | gptel--known-backends).(defvar.g | 
| a00a0 |  70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73    73 61 67 65 29 0a 28 64 65 66 76 61 72 20 67 70  | ptel--system-message).(defvar.gp | 
| a00c0 |  74 65 6c 2d 6d 6f 64 65 6c 29 0a 28 64 65 66 76    61 72 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61  | tel-model).(defvar.gptel-tempera | 
| a00e0 |  74 75 72 65 29 0a 28 64 65 66 76 61 72 20 67 70    74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a  | ture).(defvar.gptel-max-tokens). | 
| a0100 |  0a 28 64 65 66 76 61 72 20 6f 72 67 2d 6c 69 6e    6b 2d 61 6e 67 6c 65 2d 72 65 29 0a 28 64 65 66  | .(defvar.org-link-angle-re).(def | 
| a0120 |  76 61 72 20 6f 72 67 2d 6c 69 6e 6b 2d 62 72 61    63 6b 65 74 2d 72 65 29 0a 28 64 65 63 6c 61 72  | var.org-link-bracket-re).(declar | 
| a0140 |  65 2d 66 75 6e 63 74 69 6f 6e 20 6d 61 69 6c 63    61 70 2d 66 69 6c 65 2d 6e 61 6d 65 2d 74 6f 2d  | e-function.mailcap-file-name-to- | 
| a0160 |  6d 69 6d 65 2d 74 79 70 65 20 22 6d 61 69 6c 63    61 70 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75  | mime-type."mailcap").(declare-fu | 
| a0180 |  6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 6d 6f    64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 22 67  | nction.gptel--model-capable-p."g | 
| a01a0 |  70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d    66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d  | ptel").(declare-function.gptel-- | 
| a01c0 |  6d 6f 64 65 6c 2d 6d 69 6d 65 2d 63 61 70 61 62    6c 65 2d 70 20 22 67 70 74 65 6c 22 29 0a 28 64  | model-mime-capable-p."gptel").(d | 
| a01e0 |  65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20    67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d  | eclare-function.gptel--model-nam | 
| a0200 |  65 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c    61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74  | e."gptel").(declare-function.gpt | 
| a0220 |  65 6c 2d 2d 74 6f 2d 73 74 72 69 6e 67 20 22 67    70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d  | el--to-string."gptel").(declare- | 
| a0240 |  66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d    74 6f 2d 6e 75 6d 62 65 72 20 22 67 70 74 65 6c  | function.gptel--to-number."gptel | 
| a0260 |  22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63    74 69 6f 6e 20 67 70 74 65 6c 2d 2d 69 6e 74 65  | ").(declare-function.gptel--inte | 
| a0280 |  72 6e 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63    6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70  | rn."gptel").(declare-function.gp | 
| a02a0 |  74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d    62 6f 75 6e 64 73 20 22 67 70 74 65 6c 22 29 0a  | tel--get-buffer-bounds."gptel"). | 
| a02c0 |  28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f    6e 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d  | (declare-function.gptel-backend- | 
| a02e0 |  6e 61 6d 65 20 22 67 70 74 65 6c 22 29 0a 28 64    65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20  | name."gptel").(declare-function. | 
| a0300 |  67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66    66 65 72 20 22 67 70 74 65 6c 22 29 0a 28 64 65  | gptel--parse-buffer."gptel").(de | 
| a0320 |  63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67    70 74 65 6c 2d 2d 70 61 72 73 65 2d 64 69 72 65  | clare-function.gptel--parse-dire | 
| a0340 |  63 74 69 76 65 20 22 67 70 74 65 6c 22 29 0a 28    64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e  | ctive."gptel").(declare-function | 
| a0360 |  20 67 70 74 65 6c 2d 2d 72 65 73 74 6f 72 65 2d    70 72 6f 70 73 20 22 67 70 74 65 6c 22 29 0a 28  | .gptel--restore-props."gptel").( | 
| a0380 |  64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e    20 67 70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66  | declare-function.gptel--with-buf | 
| a03a0 |  66 65 72 2d 63 6f 70 79 20 22 67 70 74 65 6c 22    29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74  | fer-copy."gptel").(declare-funct | 
| a03c0 |  69 6f 6e 20 67 70 74 65 6c 2d 2d 66 69 6c 65 2d    62 69 6e 61 72 79 2d 70 20 22 67 70 74 65 6c 22  | ion.gptel--file-binary-p."gptel" | 
| a03e0 |  29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74    69 6f 6e 20 6f 72 67 2d 65 6e 74 72 79 2d 67 65  | ).(declare-function.org-entry-ge | 
| a0400 |  74 20 22 6f 72 67 22 29 0a 28 64 65 63 6c 61 72    65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65  | t."org").(declare-function.org-e | 
| a0420 |  6e 74 72 79 2d 70 75 74 20 22 6f 72 67 22 29 0a    28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f  | ntry-put."org").(declare-functio | 
| a0440 |  6e 20 6f 72 67 2d 77 69 74 68 2d 77 69 64 65 2d    62 75 66 66 65 72 20 22 6f 72 67 2d 6d 61 63 73  | n.org-with-wide-buffer."org-macs | 
| a0460 |  22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63    74 69 6f 6e 20 6f 72 67 2d 73 65 74 2d 70 72 6f  | ").(declare-function.org-set-pro | 
| a0480 |  70 65 72 74 79 20 22 6f 72 67 22 29 0a 28 64 65    63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f  | perty."org").(declare-function.o | 
| a04a0 |  72 67 2d 70 72 6f 70 65 72 74 79 2d 76 61 6c 75    65 73 20 22 6f 72 67 22 29 0a 28 64 65 63 6c 61  | rg-property-values."org").(decla | 
| a04c0 |  72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d    6f 70 65 6e 2d 6c 69 6e 65 20 22 6f 72 67 22 29  | re-function.org-open-line."org") | 
| a04e0 |  0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69    6f 6e 20 6f 72 67 2d 61 74 2d 68 65 61 64 69 6e  | .(declare-function.org-at-headin | 
| a0500 |  67 2d 70 20 22 6f 72 67 22 29 0a 28 64 65 63 6c    61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67  | g-p."org").(declare-function.org | 
| a0520 |  2d 67 65 74 2d 68 65 61 64 69 6e 67 20 22 6f 72    67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e  | -get-heading."org").(declare-fun | 
| a0540 |  63 74 69 6f 6e 20 6f 72 67 2d 61 74 2d 68 65 61    64 69 6e 67 2d 70 20 22 6f 72 67 22 29 0a 0a 3b  | ction.org-at-heading-p."org")..; | 
| a0560 |  3b 20 42 75 6e 64 6c 65 20 60 6f 72 67 2d 65 6c    65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61  | ;.Bundle.`org-element-lineage-ma | 
| a0580 |  70 27 20 69 66 20 69 74 27 73 20 6e 6f 74 20 61    76 61 69 6c 61 62 6c 65 20 28 66 6f 72 20 4f 72  | p'.if.it's.not.available.(for.Or | 
| a05a0 |  67 20 39 2e 36 37 20 6f 72 20 6f 6c 64 65 72 29    0a 28 65 76 61 6c 2d 61 6e 64 2d 63 6f 6d 70 69  | g.9.67.or.older).(eval-and-compi | 
| a05c0 |  6c 65 0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64    70 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c  | le...(if.(fboundp.'org-element-l | 
| a05e0 |  69 6e 65 61 67 65 2d 6d 61 70 29 0a 20 20 20 20    20 20 28 70 72 6f 67 6e 20 28 64 65 63 6c 61 72  | ineage-map).......(progn.(declar | 
| a0600 |  65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65    6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d  | e-function.org-element-lineage-m | 
| a0620 |  61 70 20 22 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d    61 73 74 22 29 0a 20 20 20 20 20 20 20 20 20 20  | ap."org-element-ast")........... | 
| a0640 |  20 20 20 28 64 65 66 61 6c 69 61 73 20 27 67 70    74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74  | ...(defalias.'gptel-org--element | 
| a0660 |  2d 6c 69 6e 65 61 67 65 2d 6d 61 70 20 27 6f 72    67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67  | -lineage-map.'org-element-lineag | 
| a0680 |  65 2d 6d 61 70 29 29 0a 20 20 20 20 28 64 65 66    75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c  | e-map)).....(defun.gptel-org--el | 
| a06a0 |  65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61    70 20 28 64 61 74 75 6d 20 66 75 6e 20 26 6f 70  | ement-lineage-map.(datum.fun.&op | 
| a06c0 |  74 69 6f 6e 61 6c 20 74 79 70 65 73 20 77 69 74    68 2d 73 65 6c 66 20 66 69 72 73 74 2d 6d 61 74  | tional.types.with-self.first-mat | 
| a06e0 |  63 68 29 0a 20 20 20 20 20 20 22 4d 61 70 20 46    55 4e 20 61 63 72 6f 73 73 20 61 6e 63 65 73 74  | ch)......."Map.FUN.across.ancest | 
| a0700 |  6f 72 73 20 6f 66 20 44 41 54 55 4d 2c 20 66 72    6f 6d 20 63 6c 6f 73 65 73 74 20 74 6f 20 66 75  | ors.of.DATUM,.from.closest.to.fu | 
| a0720 |  72 74 68 65 73 74 2e 0a 0a 44 41 54 55 4d 20 69    73 20 61 6e 20 6f 62 6a 65 63 74 20 6f 72 20 65  | rthest...DATUM.is.an.object.or.e | 
| a0740 |  6c 65 6d 65 6e 74 2e 20 20 46 6f 72 20 54 59 50    45 53 2c 20 57 49 54 48 2d 53 45 4c 46 20 61 6e  | lement...For.TYPES,.WITH-SELF.an | 
| a0760 |  64 0a 46 49 52 53 54 2d 4d 41 54 43 48 20 73 65    65 20 60 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c  | d.FIRST-MATCH.see.`org-element-l | 
| a0780 |  69 6e 65 61 67 65 2d 6d 61 70 27 2e 0a 0a 54 68    69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 70  | ineage-map'...This.function.is.p | 
| a07a0 |  72 6f 76 69 64 65 64 20 66 6f 72 20 63 6f 6d 70    61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f  | rovided.for.compatibility.with.o | 
| a07c0 |  6c 64 65 72 20 76 65 72 73 69 6f 6e 73 0a 6f 66    20 4f 72 67 2e 22 0a 20 20 20 20 20 20 28 64 65  | lder.versions.of.Org.".......(de | 
| a07e0 |  63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29    29 0a 20 20 20 20 20 20 28 73 65 74 71 20 66 75  | clare.(indent.2)).......(setq.fu | 
| a0800 |  6e 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70    20 66 75 6e 29 20 66 75 6e 20 60 28 6c 61 6d 62  | n.(if.(functionp.fun).fun.`(lamb | 
| a0820 |  64 61 20 28 6e 6f 64 65 29 20 2c 66 75 6e 29 29    29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 75  | da.(node).,fun))).......(let.((u | 
| a0840 |  70 20 28 69 66 20 77 69 74 68 2d 73 65 6c 66 20    64 61 74 75 6d 20 28 6f 72 67 2d 65 6c 65 6d 65  | p.(if.with-self.datum.(org-eleme | 
| a0860 |  6e 74 2d 70 61 72 65 6e 74 20 64 61 74 75 6d 29    29 29 0a 09 20 20 20 20 61 63 63 20 72 74 6e 29  | nt-parent.datum)))......acc.rtn) | 
| a0880 |  0a 20 20 20 20 20 20 20 20 28 63 61 74 63 68 20    3a 2d 2d 66 69 72 73 74 2d 6d 61 74 63 68 0a 20  | .........(catch.:--first-match.. | 
| a08a0 |  20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20    75 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  | .........(while.up.............( | 
| a08c0 |  77 68 65 6e 20 28 6f 72 20 28 6e 6f 74 20 74 79    70 65 73 29 20 28 6f 72 67 2d 65 6c 65 6d 65 6e  | when.(or.(not.types).(org-elemen | 
| a08e0 |  74 2d 74 79 70 65 2d 70 20 75 70 20 74 79 70 65    73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | t-type-p.up.types))............. | 
| a0900 |  20 20 28 73 65 74 71 20 72 74 6e 20 28 66 75 6e    63 61 6c 6c 20 66 75 6e 20 75 70 29 29 0a 20 20  | ..(setq.rtn.(funcall.fun.up))... | 
| a0920 |  20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20    28 61 6e 64 20 66 69 72 73 74 2d 6d 61 74 63 68  | ............(if.(and.first-match | 
| a0940 |  20 72 74 6e 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 74 68 72 6f 77 20 3a  | .rtn)...................(throw.: | 
| a0960 |  2d 2d 66 69 72 73 74 2d 6d 61 74 63 68 20 72 74    6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | --first-match.rtn).............. | 
| a0980 |  20 20 20 28 77 68 65 6e 20 72 74 6e 20 28 70 75    73 68 20 72 74 6e 20 61 63 63 29 29 29 29 0a 20  | ...(when.rtn.(push.rtn.acc)))).. | 
| a09a0 |  20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71    20 75 70 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74  | ...........(setq.up.(org-element | 
| a09c0 |  2d 70 61 72 65 6e 74 20 75 70 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73  | -parent.up)))...........(nrevers | 
| a09e0 |  65 20 61 63 63 29 29 29 29 29 0a 20 20 28 69 66    20 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 65  | e.acc)))))...(if.(fboundp.'org-e | 
| a0a00 |  6c 65 6d 65 6e 74 2d 62 65 67 69 6e 29 0a 20 20    20 20 20 20 28 70 72 6f 67 6e 20 28 64 65 63 6c  | lement-begin).......(progn.(decl | 
| a0a20 |  61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67    2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 22  | are-function.org-element-begin." | 
| a0a40 |  6f 72 67 2d 65 6c 65 6d 65 6e 74 22 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 64 65 63 6c  | org-element")..............(decl | 
| a0a60 |  61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67    2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 20 22 6f 72  | are-function.org-element-end."or | 
| a0a80 |  67 2d 65 6c 65 6d 65 6e 74 22 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 28 64 65 66 61 6c 69  | g-element")..............(defali | 
| a0aa0 |  61 73 20 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 65    6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 27 6f 72  | as.'gptel-org--element-begin.'or | 
| a0ac0 |  67 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64  | g-element-begin)..............(d | 
| a0ae0 |  65 66 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 6f    72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64 20  | efalias.'gptel-org--element-end. | 
| a0b00 |  27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64    29 29 0a 20 20 20 20 28 64 65 66 75 6e 20 67 70  | 'org-element-end)).....(defun.gp | 
| a0b20 |  74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74    2d 62 65 67 69 6e 20 28 6e 6f 64 65 29 0a 20 20  | tel-org--element-begin.(node)... | 
| a0b40 |  20 20 20 20 22 47 65 74 20 60 3a 62 65 67 69 6e    27 20 70 72 6f 70 65 72 74 79 20 6f 66 20 4e 4f  | ...."Get.`:begin'.property.of.NO | 
| a0b60 |  44 45 2e 22 0a 20 20 20 20 20 20 28 6f 72 67 2d    65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79  | DE.".......(org-element-property | 
| a0b80 |  20 3a 62 65 67 69 6e 20 6e 6f 64 65 29 29 0a 20    20 20 20 28 64 65 66 75 6e 20 67 70 74 65 6c 2d  | .:begin.node)).....(defun.gptel- | 
| a0ba0 |  6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64    20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 22 47  | org--element-end.(node)......."G | 
| a0bc0 |  65 74 20 60 3a 65 6e 64 27 20 70 72 6f 70 65 72    74 79 20 6f 66 20 4e 4f 44 45 2e 22 0a 20 20 20  | et.`:end'.property.of.NODE.".... | 
| a0be0 |  20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d    70 72 6f 70 65 72 74 79 20 3a 65 6e 64 20 6e 6f  | ...(org-element-property.:end.no | 
| a0c00 |  64 65 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 55 73    65 72 20 6f 70 74 69 6f 6e 73 0a 28 64 65 66 63  | de))))....;;;.User.options.(defc | 
| a0c20 |  75 73 74 6f 6d 20 67 70 74 65 6c 2d 6f 72 67 2d    62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78  | ustom.gptel-org-branching-contex | 
| a0c40 |  74 20 6e 69 6c 0a 20 20 22 55 73 65 20 74 68 65    20 6c 69 6e 65 61 67 65 20 6f 66 20 74 68 65 20  | t.nil..."Use.the.lineage.of.the. | 
| a0c60 |  63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 20    61 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 66  | current.heading.as.the.context.f | 
| a0c80 |  6f 72 20 67 70 74 65 6c 20 69 6e 20 4f 72 67 20    62 75 66 66 65 72 73 2e 0a 0a 54 68 69 73 20 6d  | or.gptel.in.Org.buffers...This.m | 
| a0ca0 |  61 6b 65 73 20 65 61 63 68 20 73 61 6d 65 20 6c    65 76 65 6c 20 68 65 61 64 69 6e 67 20 61 20 73  | akes.each.same.level.heading.a.s | 
| a0cc0 |  65 70 61 72 61 74 65 20 63 6f 6e 76 65 72 73 61    74 69 6f 6e 0a 62 72 61 6e 63 68 2e 0a 0a 42 79  | eparate.conversation.branch...By | 
| a0ce0 |  20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c 20    75 73 65 73 20 61 20 6c 69 6e 65 61 72 20 63 6f  | .default,.gptel.uses.a.linear.co | 
| a0d00 |  6e 74 65 78 74 3a 20 61 6c 6c 20 74 68 65 20 74    65 78 74 20 75 70 20 74 6f 20 74 68 65 0a 63 75  | ntext:.all.the.text.up.to.the.cu | 
| a0d20 |  72 73 6f 72 20 69 73 20 73 65 6e 74 20 74 6f 20    74 68 65 20 4c 4c 4d 2e 20 20 45 6e 61 62 6c 69  | rsor.is.sent.to.the.LLM...Enabli | 
| a0d40 |  6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 6d    61 6b 65 73 20 74 68 65 0a 63 6f 6e 74 65 78 74  | ng.this.option.makes.the.context | 
| a0d60 |  20 74 68 65 20 68 69 65 72 61 72 63 68 69 63 61    6c 20 6c 69 6e 65 61 67 65 20 6f 66 20 74 68 65  | .the.hierarchical.lineage.of.the | 
| a0d80 |  20 63 75 72 72 65 6e 74 20 4f 72 67 20 68 65 61    64 69 6e 67 2e 20 20 49 6e 0a 74 68 69 73 20 65  | .current.Org.heading...In.this.e | 
| a0da0 |  78 61 6d 70 6c 65 3a 0a 0a 2d 2d 2d 2d 2d 0a 54    6f 70 20 6c 65 76 65 6c 20 74 65 78 74 0a 0a 2a  | xample:..-----.Top.level.text..* | 
| a0dc0 |  20 48 65 61 64 69 6e 67 20 31 0a 68 65 61 64 69    6e 67 20 31 20 74 65 78 74 0a 0a 2a 20 48 65 61  | .Heading.1.heading.1.text..*.Hea | 
| a0de0 |  64 69 6e 67 20 32 0a 68 65 61 64 69 6e 67 20 32    20 74 65 78 74 0a 0a 2a 2a 20 48 65 61 64 69 6e  | ding.2.heading.2.text..**.Headin | 
| a0e00 |  67 20 32 2e 31 0a 68 65 61 64 69 6e 67 20 32 2e    31 20 74 65 78 74 0a 2a 2a 20 48 65 61 64 69 6e  | g.2.1.heading.2.1.text.**.Headin | 
| a0e20 |  67 20 32 2e 32 0a 68 65 61 64 69 6e 67 20 32 2e    32 20 74 65 78 74 0a 2d 2d 2d 2d 2d 0a 0a 57 69  | g.2.2.heading.2.2.text.-----..Wi | 
| a0e40 |  74 68 20 74 68 65 20 63 75 72 73 6f 72 20 61 74    20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20  | th.the.cursor.at.the.end.of.the. | 
| a0e60 |  62 75 66 66 65 72 2c 20 74 68 65 20 74 65 78 74    20 73 65 6e 74 20 74 6f 20 74 68 65 0a 4c 4c 4d  | buffer,.the.text.sent.to.the.LLM | 
| a0e80 |  20 77 69 6c 6c 20 62 65 20 6c 69 6d 69 74 65 64    20 74 6f 0a 0a 2d 2d 2d 2d 2d 0a 54 6f 70 20 6c  | .will.be.limited.to..-----.Top.l | 
| a0ea0 |  65 76 65 6c 20 74 65 78 74 0a 0a 2a 20 48 65 61    64 69 6e 67 20 32 0a 68 65 61 64 69 6e 67 20 32  | evel.text..*.Heading.2.heading.2 | 
| a0ec0 |  20 74 65 78 74 0a 0a 2a 2a 20 48 65 61 64 69 6e    67 20 32 2e 32 0a 68 65 61 64 69 6e 67 20 32 2e  | .text..**.Heading.2.2.heading.2. | 
| a0ee0 |  32 20 74 65 78 74 0a 2d 2d 2d 2d 2d 0a 0a 54 68    69 73 20 6d 61 6b 65 73 20 69 74 20 66 65 61 73  | 2.text.-----..This.makes.it.feas | 
| a0f00 |  69 62 6c 65 20 74 6f 20 68 61 76 65 20 6d 75 6c    74 69 70 6c 65 20 63 6f 6e 76 65 72 73 61 74 69  | ible.to.have.multiple.conversati | 
| a0f20 |  6f 6e 20 62 72 61 6e 63 68 65 73 2e 22 0a 20 20    3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 0a 20  | on.branches."...:type.'boolean.. | 
| a0f40 |  20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29 0a    0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65  | .:group.'gptel)..(defcustom.gpte | 
| a0f60 |  6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65    6d 65 6e 74 73 20 27 28 70 72 6f 70 65 72 74 79  | l-org-ignore-elements.'(property | 
| a0f80 |  2d 64 72 61 77 65 72 29 0a 20 20 22 4c 69 73 74    20 6f 66 20 4f 72 67 20 65 6c 65 6d 65 6e 74 73  | -drawer)..."List.of.Org.elements | 
| a0fa0 |  20 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20    73 74 72 69 70 70 65 64 20 66 72 6f 6d 20 74 68  | .that.should.be.stripped.from.th | 
| a0fc0 |  65 20 70 72 6f 6d 70 74 0a 62 65 66 6f 72 65 20    73 65 6e 64 69 6e 67 20 69 74 2e 0a 0a 42 79 20  | e.prompt.before.sending.it...By. | 
| a0fe0 |  64 65 66 61 75 6c 74 20 67 70 74 65 6c 20 77 69    6c 6c 20 72 65 6d 6f 76 65 20 4f 72 67 20 70 72  | default.gptel.will.remove.Org.pr | 
| a1000 |  6f 70 65 72 74 79 20 64 72 61 77 65 72 73 20 66    72 6f 6d 20 74 68 65 0a 70 72 6f 6d 70 74 2e 20  | operty.drawers.from.the.prompt.. | 
| a1020 |  20 46 6f 72 20 74 68 65 20 66 75 6c 6c 20 6c 69    73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20  | .For.the.full.list.of.available. | 
| a1040 |  65 6c 65 6d 65 6e 74 73 2c 20 70 6c 65 61 73 65    20 73 65 65 0a 60 6f 72 67 2d 65 6c 65 6d 65 6e  | elements,.please.see.`org-elemen | 
| a1060 |  74 2d 61 6c 6c 2d 65 6c 65 6d 65 6e 74 73 27 2e    0a 0a 50 6c 65 61 73 65 20 6e 6f 74 65 3a 20 52  | t-all-elements'...Please.note:.R | 
| a1080 |  65 6d 6f 76 69 6e 67 20 70 72 6f 70 65 72 74 79    2d 64 72 61 77 65 72 20 65 6c 65 6d 65 6e 74 73  | emoving.property-drawer.elements | 
| a10a0 |  20 69 73 20 66 61 73 74 2c 20 62 75 74 0a 61 64    64 69 6e 67 20 65 6c 65 6d 65 6e 74 73 20 74 6f  | .is.fast,.but.adding.elements.to | 
| a10c0 |  20 74 68 69 73 20 6c 69 73 74 20 63 61 6e 20 73    69 67 6e 69 66 69 63 61 6e 74 6c 79 20 73 6c 6f  | .this.list.can.significantly.slo | 
| a10e0 |  77 20 64 6f 77 6e 0a 60 67 70 74 65 6c 2d 73 65    6e 64 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27  | w.down.`gptel-send'."...:group.' | 
| a1100 |  67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28    72 65 70 65 61 74 20 73 79 6d 62 6f 6c 29 29 0a  | gptel...:type.'(repeat.symbol)). | 
| a1120 |  0a 0c 0a 3b 3b 3b 20 53 65 74 74 69 6e 67 20 63    6f 6e 74 65 78 74 20 61 6e 64 20 63 72 65 61 74  | ...;;;.Setting.context.and.creat | 
| a1140 |  69 6e 67 20 71 75 65 72 69 65 73 0a 28 64 65 66    75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 67 65  | ing.queries.(defun.gptel-org--ge | 
| a1160 |  74 2d 74 6f 70 69 63 2d 73 74 61 72 74 20 28 29    0a 20 20 22 49 66 20 61 20 63 6f 6e 76 65 72 73  | t-topic-start.()..."If.a.convers | 
| a1180 |  61 74 69 6f 6e 20 74 6f 70 69 63 20 69 73 20 73    65 74 2c 20 72 65 74 75 72 6e 20 69 74 2e 22 0a  | ation.topic.is.set,.return.it.". | 
| a11a0 |  20 20 28 77 68 65 6e 20 28 6f 72 67 2d 65 6e 74    72 79 2d 67 65 74 20 28 70 6f 69 6e 74 29 20 22  | ..(when.(org-entry-get.(point)." | 
| a11c0 |  47 50 54 45 4c 5f 54 4f 50 49 43 22 20 27 69 6e    68 65 72 69 74 29 0a 20 20 20 20 28 6d 61 72 6b  | GPTEL_TOPIC".'inherit).....(mark | 
| a11e0 |  65 72 2d 70 6f 73 69 74 69 6f 6e 20 6f 72 67 2d    65 6e 74 72 79 2d 70 72 6f 70 65 72 74 79 2d 69  | er-position.org-entry-property-i | 
| a1200 |  6e 68 65 72 69 74 65 64 2d 66 72 6f 6d 29 29 29    0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f  | nherited-from)))..(defun.gptel-o | 
| a1220 |  72 67 2d 73 65 74 2d 74 6f 70 69 63 20 28 74 6f    70 69 63 29 0a 20 20 22 53 65 74 20 61 20 54 4f  | rg-set-topic.(topic)..."Set.a.TO | 
| a1240 |  50 49 43 20 61 6e 64 20 6c 69 6d 69 74 20 74 68    69 73 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20  | PIC.and.limit.this.conversation. | 
| a1260 |  74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 68    65 61 64 69 6e 67 2e 0a 0a 54 68 69 73 20 6c 69  | to.the.current.heading...This.li | 
| a1280 |  6d 69 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74    20 73 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c 4d  | mits.the.context.sent.to.the.LLM | 
| a12a0 |  20 74 6f 20 74 68 65 20 74 65 78 74 20 62 65 74    77 65 65 6e 20 74 68 65 0a 63 75 72 72 65 6e 74  | .to.the.text.between.the.current | 
| a12c0 |  20 68 65 61 64 69 6e 67 20 61 6e 64 20 74 68 65    20 63 75 72 73 6f 72 20 70 6f 73 69 74 69 6f 6e  | .heading.and.the.cursor.position | 
| a12e0 |  2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76    65 0a 20 20 20 28 6c 69 73 74 0a 20 20 20 20 28  | ."...(interactive....(list.....( | 
| a1300 |  70 72 6f 67 6e 0a 20 20 20 20 20 20 28 6f 72 20    28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20  | progn.......(or.(derived-mode-p. | 
| a1320 |  27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20    20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72  | 'org-mode)...........(user-error | 
| a1340 |  20 22 53 75 70 70 6f 72 74 20 66 6f 72 20 6d 75    6c 74 69 70 6c 65 20 74 6f 70 69 63 73 20 70 65  | ."Support.for.multiple.topics.pe | 
| a1360 |  72 20 62 75 66 66 65 72 20 69 73 20 6f 6e 6c 79    20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 66 6f 72  | r.buffer.is.only.implemented.for | 
| a1380 |  20 60 6f 72 67 2d 6d 6f 64 65 27 22 29 29 0a 20    20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67  | .`org-mode'")).......(completing | 
| a13a0 |  2d 72 65 61 64 20 22 53 65 74 20 74 6f 70 69 63    20 61 73 3a 20 22 0a 20 20 20 20 20 20 20 20 20  | -read."Set.topic.as:.".......... | 
| a13c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f    72 67 2d 70 72 6f 70 65 72 74 79 2d 76 61 6c 75  | ..............(org-property-valu | 
| a13e0 |  65 73 20 22 47 50 54 45 4c 5f 54 4f 50 49 43 22    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | es."GPTEL_TOPIC")............... | 
| a1400 |  20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c    20 28 64 6f 77 6e 63 61 73 65 0a 20 20 20 20 20  | .........nil.nil.(downcase...... | 
| a1420 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e  | ...........................(trun | 
| a1440 |  63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77    69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20  | cate-string-to-width............ | 
| a1460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67  | ......................(substring | 
| a1480 |  2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -no-properties.................. | 
| a14a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70  | .................(replace-regexp | 
| a14c0 |  2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -in-string...................... | 
| a14e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c    5c 73 2d 2b 22 20 22 2d 22 0a 20 20 20 20 20 20  | .............."\\s-+"."-"....... | 
| a1500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72  | .............................(or | 
| a1520 |  67 2d 65 6e 74 72 79 2d 67 65 74 20 6e 69 6c 20    22 49 54 45 4d 22 29 29 29 0a 20 20 20 20 20 20  | g-entry-get.nil."ITEM")))....... | 
| a1540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 35 30 29 29 29  | ...........................50))) | 
| a1560 |  29 29 29 0a 20 20 28 77 68 65 6e 20 28 73 74 72    69 6e 67 70 20 74 6f 70 69 63 29 20 28 6f 72 67  | )))...(when.(stringp.topic).(org | 
| a1580 |  2d 73 65 74 2d 70 72 6f 70 65 72 74 79 20 22 47    50 54 45 4c 5f 54 4f 50 49 43 22 20 74 6f 70 69  | -set-property."GPTEL_TOPIC".topi | 
| a15a0 |  63 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 54    68 69 73 20 63 61 6e 20 62 65 20 63 6f 6e 76 65  | c)))..;;.NOTE:.This.can.be.conve | 
| a15c0 |  72 74 65 64 20 74 6f 20 61 20 63 6c 2d 64 65 66    6d 65 74 68 6f 64 20 66 6f 72 0a 3b 3b 20 60 67  | rted.to.a.cl-defmethod.for.;;.`g | 
| a15e0 |  70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f    6d 70 74 2d 62 75 66 66 65 72 27 20 28 63 6f 6e  | ptel--create-prompt-buffer'.(con | 
| a1600 |  63 65 70 74 75 61 6c 6c 79 20 63 6c 65 61 6e 65    72 29 2c 20 62 75 74 20 77 69 6c 6c 20 63 61 75  | ceptually.cleaner),.but.will.cau | 
| a1620 |  73 65 0a 3b 3b 20 6c 6f 61 64 2d 6f 72 64 65 72    20 69 73 73 75 65 73 20 69 6e 20 67 70 74 65 6c  | se.;;.load-order.issues.in.gptel | 
| a1640 |  2e 65 6c 20 61 6e 64 20 6d 69 67 68 74 20 62 65    20 68 61 72 64 65 72 20 74 6f 20 64 65 62 75 67  | .el.and.might.be.harder.to.debug | 
| a1660 |  2e 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f    72 67 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70  | ..(defun.gptel-org--create-promp | 
| a1680 |  74 2d 62 75 66 66 65 72 20 28 26 6f 70 74 69 6f    6e 61 6c 20 70 72 6f 6d 70 74 2d 65 6e 64 29 0a  | t-buffer.(&optional.prompt-end). | 
| a16a0 |  20 20 22 52 65 74 75 72 6e 20 61 20 62 75 66 66    65 72 20 77 69 74 68 20 74 68 65 20 63 6f 6e 76  | .."Return.a.buffer.with.the.conv | 
| a16c0 |  65 72 73 61 74 69 6f 6e 20 70 72 6f 6d 70 74 20    74 6f 20 62 65 20 73 65 6e 74 2e 0a 0a 49 66 20  | ersation.prompt.to.be.sent...If. | 
| a16e0 |  74 68 65 20 72 65 67 69 6f 6e 20 69 73 20 61 63    74 69 76 65 20 6c 69 6d 69 74 20 74 68 65 20 70  | the.region.is.active.limit.the.p | 
| a1700 |  72 6f 6d 70 74 20 74 65 78 74 20 74 6f 20 74 68    65 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74  | rompt.text.to.the.region.content | 
| a1720 |  73 2e 0a 4f 74 68 65 72 77 69 73 65 20 74 68 65    20 70 72 6f 6d 70 74 20 74 65 78 74 20 69 73 20  | s..Otherwise.the.prompt.text.is. | 
| a1740 |  63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d    20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66  | constructed.from.the.contents.of | 
| a1760 |  20 74 68 65 0a 63 75 72 72 65 6e 74 20 62 75 66    66 65 72 20 75 70 20 74 6f 20 70 6f 69 6e 74 2c  | .the.current.buffer.up.to.point, | 
| a1780 |  20 6f 72 20 50 52 4f 4d 50 54 2d 45 4e 44 20 69    66 20 70 72 6f 76 69 64 65 64 2e 20 20 49 74 73  | .or.PROMPT-END.if.provided...Its | 
| a17a0 |  20 63 6f 6e 74 65 6e 74 73 0a 64 65 70 65 6e 64    20 6f 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66  | .contents.depend.on.the.value.of | 
| a17c0 |  20 60 67 70 74 65 6c 2d 6f 72 67 2d 62 72 61 6e    63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 27 2c 20  | .`gptel-org-branching-context',. | 
| a17e0 |  77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 77    68 65 6e 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d  | which.see."...(when.(use-region- | 
| a1800 |  70 29 0a 20 20 20 20 28 6e 61 72 72 6f 77 2d 74    6f 2d 72 65 67 69 6f 6e 20 28 72 65 67 69 6f 6e  | p).....(narrow-to-region.(region | 
| a1820 |  2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67    69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 28 69 66  | -beginning).(region-end)))...(if | 
| a1840 |  20 70 72 6f 6d 70 74 2d 65 6e 64 0a 20 20 20 20    20 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 72 6f  | .prompt-end.......(goto-char.pro | 
| a1860 |  6d 70 74 2d 65 6e 64 29 0a 20 20 20 20 28 73 65    74 71 20 70 72 6f 6d 70 74 2d 65 6e 64 20 28 70  | mpt-end).....(setq.prompt-end.(p | 
| a1880 |  6f 69 6e 74 29 29 29 0a 20 20 28 6c 65 74 20 28    28 74 6f 70 69 63 2d 73 74 61 72 74 20 28 67 70  | oint)))...(let.((topic-start.(gp | 
| a18a0 |  74 65 6c 2d 6f 72 67 2d 2d 67 65 74 2d 74 6f 70    69 63 2d 73 74 61 72 74 29 29 29 0a 20 20 20 20  | tel-org--get-topic-start)))..... | 
| a18c0 |  28 77 68 65 6e 20 74 6f 70 69 63 2d 73 74 61 72    74 0a 20 20 20 20 20 20 3b 3b 20 6e 61 72 72 6f  | (when.topic-start.......;;.narro | 
| a18e0 |  77 20 74 6f 20 47 50 54 45 4c 5f 54 4f 50 49 43    20 70 72 6f 70 65 72 74 79 20 73 63 6f 70 65 0a  | w.to.GPTEL_TOPIC.property.scope. | 
| a1900 |  20 20 20 20 20 20 28 6e 61 72 72 6f 77 2d 74 6f    2d 72 65 67 69 6f 6e 20 74 6f 70 69 63 2d 73 74  | ......(narrow-to-region.topic-st | 
| a1920 |  61 72 74 20 70 72 6f 6d 70 74 2d 65 6e 64 29 29    0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 67 70  | art.prompt-end)).....(if.(and.gp | 
| a1940 |  74 65 6c 2d 6f 72 67 2d 62 72 61 6e 63 68 69 6e    67 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20  | tel-org-branching-context....... | 
| a1960 |  20 20 20 20 20 20 20 28 6f 72 20 28 66 62 6f 75    6e 64 70 20 27 6f 72 67 2d 65 6c 65 6d 65 6e 74  | .......(or.(fboundp.'org-element | 
| a1980 |  2d 6c 69 6e 65 61 67 65 2d 6d 61 70 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | -lineage-map)..................( | 
| a19a0 |  70 72 6f 67 31 20 6e 69 6c 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69  | prog1.nil....................(di | 
| a19c0 |  73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | splay-warning................... | 
| a19e0 |  20 20 27 28 67 70 74 65 6c 20 6f 72 67 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..'(gptel.org).................. | 
| a1a00 |  20 20 20 22 55 73 69 6e 67 20 60 67 70 74 65 6c    2d 6f 72 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63  | ..."Using.`gptel-org-branching-c | 
| a1a20 |  6f 6e 74 65 78 74 27 20 72 65 71 75 69 72 65 73    20 4f 72 67 20 76 65 72 73 69 6f 6e 20 39 2e 37  | ontext'.requires.Org.version.9.7 | 
| a1a40 |  20 6f 72 20 68 69 67 68 65 72 2c 20 69 74 20 77    69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 2e 22  | .or.higher,.it.will.be.ignored." | 
| a1a60 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20    43 72 65 61 74 65 20 70 72 6f 6d 70 74 20 66 72  | )))).........;;.Create.prompt.fr | 
| a1a80 |  6f 6d 20 64 69 72 65 63 74 20 61 6e 63 65 73 74    6f 72 73 20 6f 66 20 70 6f 69 6e 74 0a 20 20 20  | om.direct.ancestors.of.point.... | 
| a1aa0 |  20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72    73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28  | .....(save-excursion...........( | 
| a1ac0 |  6c 65 74 2a 20 28 28 6f 72 67 2d 62 75 66 20 28    63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29  | let*.((org-buf.(current-buffer)) | 
| a1ae0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 61 6c 6c  | ..................;;.Collect.all | 
| a1b00 |  20 68 65 61 64 69 6e 67 20 73 74 61 72 74 20 70    6f 73 69 74 69 6f 6e 73 20 69 6e 20 74 68 65 20  | .heading.start.positions.in.the. | 
| a1b20 |  6c 69 6e 65 61 67 65 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 66 75 6c 6c 2d 62  | lineage..................(full-b | 
| a1b40 |  6f 75 6e 64 73 20 28 67 70 74 65 6c 2d 6f 72 67    2d 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67  | ounds.(gptel-org--element-lineag | 
| a1b60 |  65 2d 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e-map........................... | 
| a1b80 |  20 20 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65    6d 65 6e 74 2d 61 74 2d 70 6f 69 6e 74 29 20 23  | ........(org-element-at-point).# | 
| a1ba0 |  27 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d    65 6e 74 2d 62 65 67 69 6e 0a 20 20 20 20 20 20  | 'gptel-org--element-begin....... | 
| a1bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 27 28 68 65 61 64  | ..........................'(head | 
| a1be0 |  6c 69 6e 65 29 20 27 77 69 74 68 2d 73 65 6c 66    29 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | line).'with-self).)............. | 
| a1c00 |  20 20 20 20 20 3b 3b 20 6c 69 6e 65 61 67 65 2d    6d 61 70 20 72 65 74 75 72 6e 73 20 74 68 65 20  | .....;;.lineage-map.returns.the. | 
| a1c20 |  66 75 6c 6c 20 6c 69 6e 65 61 67 65 20 69 6e 20    74 68 65 20 75 6e 6e 61 72 72 6f 77 65 64 0a 20  | full.lineage.in.the.unnarrowed.. | 
| a1c40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 62 75 66 66 65 72 2e 20 20 52 65 6d 6f  | ................;;.buffer...Remo | 
| a1c60 |  76 65 20 68 65 61 64 69 6e 67 20 73 74 61 72 74    20 70 6f 73 69 74 69 6f 6e 73 20 62 65 66 6f 72  | ve.heading.start.positions.befor | 
| a1c80 |  65 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b  | e.(point-min)..................; | 
| a1ca0 |  3b 20 74 68 61 74 20 61 72 65 20 69 6e 76 61 6c    69 64 20 64 75 65 20 74 6f 20 6e 61 72 72 6f 77  | ;.that.are.invalid.due.to.narrow | 
| a1cc0 |  69 6e 67 2c 20 61 6e 64 20 61 64 64 20 28 70 6f    69 6e 74 2d 6d 69 6e 29 20 69 66 0a 20 20 20 20  | ing,.and.add.(point-min).if..... | 
| a1ce0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    69 74 27 73 20 6e 6f 74 20 61 6c 72 65 61 64 79  | .............;;.it's.not.already | 
| a1d00 |  20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65    20 6c 69 6e 65 61 67 65 0a 20 20 20 20 20 20 20  | .included.in.the.lineage........ | 
| a1d20 |  20 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74    2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20  | ..........(start-bounds......... | 
| a1d40 |  20 20 20 20 20 20 20 20 20 20 28 6e 63 6f 6e 63    20 28 63 6c 2d 64 65 6c 65 74 65 2d 69 66 20 28  | ..........(nconc.(cl-delete-if.( | 
| a1d60 |  6c 61 6d 62 64 61 20 28 70 29 20 28 3c 20 70 20    28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20  | lambda.(p).(<.p.(point-min)))... | 
| a1d80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| a1da0 |  20 20 20 20 20 66 75 6c 6c 2d 62 6f 75 6e 64 73    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .....full-bounds)............... | 
| a1dc0 |  20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65    73 73 20 28 73 61 76 65 2d 65 78 63 75 72 73 69  | ...........(unless.(save-excursi | 
| a1de0 |  6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70    6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20  | on.(goto-char.(point-min))...... | 
| a1e00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| a1e20 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f    6b 69 6e 67 2d 61 74 2d 70 20 6f 75 74 6c 69 6e  | ............(looking-at-p.outlin | 
| a1e40 |  65 2d 72 65 67 65 78 70 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e-regexp))...................... | 
| a1e60 |  20 20 20 20 20 20 28 6c 69 73 74 20 28 70 6f 69    6e 74 2d 6d 69 6e 29 29 29 29 29 0a 20 20 20 20  | ......(list.(point-min)))))..... | 
| a1e80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e    64 2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20  | .............(end-bounds........ | 
| a1ea0 |  20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c    6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ...........(cl-loop............. | 
| a1ec0 |  20 20 20 20 20 20 20 3b 3b 20 28 63 61 72 20 73    74 61 72 74 2d 62 6f 75 6e 64 73 29 20 69 73 20  | .......;;.(car.start-bounds).is. | 
| a1ee0 |  74 68 65 20 62 65 67 69 6e 69 6e 67 20 6f 66 20    74 68 65 20 63 75 72 72 65 6e 74 20 65 6c 65 6d  | the.begining.of.the.current.elem | 
| a1f00 |  65 6e 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3b 3b 20 6e 6f 74 20 72  | ent,....................;;.not.r | 
| a1f20 |  65 6c 65 76 61 6e 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 70  | elevant....................for.p | 
| a1f40 |  6f 73 20 69 6e 20 28 63 64 72 20 73 74 61 72 74    2d 62 6f 75 6e 64 73 29 0a 20 20 20 20 20 20 20  | os.in.(cdr.start-bounds)........ | 
| a1f60 |  20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28    67 6f 74 6f 2d 63 68 61 72 20 70 6f 73 29 20 28  | ............do.(goto-char.pos).( | 
| a1f80 |  6f 75 74 6c 69 6e 65 2d 6e 65 78 74 2d 68 65 61    64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20  | outline-next-heading)........... | 
| a1fa0 |  20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74    20 28 70 6f 69 6e 74 29 20 69 6e 74 6f 20 65 6e  | .........collect.(point).into.en | 
| a1fc0 |  64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65  | ds....................finally.re | 
| a1fe0 |  74 75 72 6e 20 28 63 6f 6e 73 20 70 72 6f 6d 70    74 2d 65 6e 64 20 65 6e 64 73 29 29 29 29 0a 20  | turn.(cons.prompt-end.ends)))).. | 
| a2000 |  20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65    6c 2d 2d 77 69 74 68 2d 62 75 66 66 65 72 2d 63  | ...........(gptel--with-buffer-c | 
| a2020 |  6f 70 79 20 6f 72 67 2d 62 75 66 20 6e 69 6c 20    6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20  | opy.org-buf.nil.nil............. | 
| a2040 |  20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 73    74 61 72 74 20 69 6e 20 73 74 61 72 74 2d 62 6f  | ..(cl-loop.for.start.in.start-bo | 
| a2060 |  75 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20  | unds........................for. | 
| a2080 |  65 6e 64 20 69 6e 20 65 6e 64 2d 62 6f 75 6e 64    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | end.in.end-bounds............... | 
| a20a0 |  20 20 20 20 20 20 20 20 20 64 6f 20 28 69 6e 73    65 72 74 2d 62 75 66 66 65 72 2d 73 75 62 73 74  | .........do.(insert-buffer-subst | 
| a20c0 |  72 69 6e 67 20 6f 72 67 2d 62 75 66 20 73 74 61    72 74 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20  | ring.org-buf.start.end)......... | 
| a20e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74  | ...............(goto-char.(point | 
| a2100 |  2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72  | -min)))...............(goto-char | 
| a2120 |  20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74  | .(point-max))...............(gpt | 
| a2140 |  65 6c 2d 6f 72 67 2d 2d 75 6e 65 73 63 61 70 65    2d 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 29 0a 20  | el-org--unescape-tool-results).. | 
| a2160 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70    74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 62  | .............(gptel-org--strip-b | 
| a2180 |  6c 6f 63 6b 2d 68 65 61 64 65 72 73 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65  | lock-headers)...............(whe | 
| a21a0 |  6e 20 67 70 74 65 6c 2d 6f 72 67 2d 69 67 6e 6f    72 65 2d 65 6c 65 6d 65 6e 74 73 20 28 67 70 74  | n.gptel-org-ignore-elements.(gpt | 
| a21c0 |  65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 65 6c    65 6d 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20  | el-org--strip-elements))........ | 
| a21e0 |  20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d    62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20  | .......(current-buffer))))...... | 
| a2200 |  20 3b 3b 20 43 72 65 61 74 65 20 70 72 6f 6d 70    74 20 74 68 65 20 75 73 75 61 6c 20 77 61 79 0a  | .;;.Create.prompt.the.usual.way. | 
| a2220 |  20 20 20 20 20 20 28 6c 65 74 20 28 28 6f 72 67    2d 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75  | ......(let.((org-buf.(current-bu | 
| a2240 |  66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 62 65 67 20 28 70 6f 69 6e 74 2d 6d  | ffer)).............(beg.(point-m | 
| a2260 |  69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 67    70 74 65 6c 2d 2d 77 69 74 68 2d 62 75 66 66 65  | in))).........(gptel--with-buffe | 
| a2280 |  72 2d 63 6f 70 79 20 6f 72 67 2d 62 75 66 20 62    65 67 20 70 72 6f 6d 70 74 2d 65 6e 64 0a 20 20  | r-copy.org-buf.beg.prompt-end... | 
| a22a0 |  20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f    72 67 2d 2d 75 6e 65 73 63 61 70 65 2d 74 6f 6f  | ........(gptel-org--unescape-too | 
| a22c0 |  6c 2d 72 65 73 75 6c 74 73 29 0a 20 20 20 20 20    20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d  | l-results)...........(gptel-org- | 
| a22e0 |  2d 73 74 72 69 70 2d 62 6c 6f 63 6b 2d 68 65 61    64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20  | -strip-block-headers)........... | 
| a2300 |  28 77 68 65 6e 20 67 70 74 65 6c 2d 6f 72 67 2d    69 67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 20  | (when.gptel-org-ignore-elements. | 
| a2320 |  28 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69    70 2d 65 6c 65 6d 65 6e 74 73 29 29 0a 20 20 20  | (gptel-org--strip-elements)).... | 
| a2340 |  20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d    62 75 66 66 65 72 29 29 29 29 29 29 0a 0a 28 64  | .......(current-buffer))))))..(d | 
| a2360 |  65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d    73 74 72 69 70 2d 65 6c 65 6d 65 6e 74 73 20 28  | efun.gptel-org--strip-elements.( | 
| a2380 |  29 0a 20 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20    65 6c 65 6d 65 6e 74 73 20 69 6e 20 60 67 70 74  | )..."Remove.all.elements.in.`gpt | 
| a23a0 |  65 6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c    65 6d 65 6e 74 73 27 20 66 72 6f 6d 20 74 68 65  | el-org-ignore-elements'.from.the | 
| a23c0 |  0a 70 72 6f 6d 70 74 2e 22 0a 20 20 28 6c 65 74    20 28 28 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 6f  | .prompt."...(let.((major-mode.'o | 
| a23e0 |  72 67 2d 6d 6f 64 65 29 20 65 6c 65 6d 65 6e 74    2d 6d 61 72 6b 65 72 73 29 0a 20 20 20 20 28 69  | rg-mode).element-markers).....(i | 
| a2400 |  66 20 28 65 71 75 61 6c 20 27 28 70 72 6f 70 65    72 74 79 2d 64 72 61 77 65 72 29 20 67 70 74 65  | f.(equal.'(property-drawer).gpte | 
| a2420 |  6c 2d 6f 72 67 2d 69 67 6e 6f 72 65 2d 65 6c 65    6d 65 6e 74 73 29 0a 20 20 20 20 20 20 20 20 28  | l-org-ignore-elements).........( | 
| a2440 |  73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20    20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63  | save-excursion...........(goto-c | 
| a2460 |  68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29    0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c  | har.(point-min))...........(whil | 
| a2480 |  65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72    77 61 72 64 20 6f 72 67 2d 70 72 6f 70 65 72 74  | e.(re-search-forward.org-propert | 
| a24a0 |  79 2d 64 72 61 77 65 72 2d 72 65 20 6e 69 6c 20    74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b  | y-drawer-re.nil.t).............; | 
| a24c0 |  3b 20 3b 3b 20 53 6c 6f 77 65 72 20 62 75 74 20    61 63 63 75 72 61 74 65 0a 20 20 20 20 20 20 20  | ;.;;.Slower.but.accurate........ | 
| a24e0 |  20 20 20 20 20 3b 3b 20 28 6c 65 74 20 28 28 64    72 61 77 65 72 20 28 6f 72 67 2d 65 6c 65 6d 65  | .....;;.(let.((drawer.(org-eleme | 
| a2500 |  6e 74 2d 61 74 2d 70 6f 69 6e 74 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 20 20  | nt-at-point))).............;;... | 
| a2520 |  28 77 68 65 6e 20 28 6f 72 67 2d 65 6c 65 6d 65    6e 74 2d 74 79 70 65 2d 70 20 64 72 61 77 65 72  | (when.(org-element-type-p.drawer | 
| a2540 |  20 27 70 72 6f 70 65 72 74 79 2d 64 72 61 77 65    72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b  | .'property-drawer).............; | 
| a2560 |  3b 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65    67 69 6f 6e 20 28 6f 72 67 2d 65 6c 65 6d 65 6e  | ;.....(delete-region.(org-elemen | 
| a2580 |  74 2d 62 65 67 69 6e 20 64 72 61 77 65 72 29 20    28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 65 6e 64  | t-begin.drawer).(org-element-end | 
| a25a0 |  20 64 72 61 77 65 72 29 29 29 29 0a 0a 20 20 20    20 20 20 20 20 20 20 20 20 3b 3b 20 46 61 73 74  | .drawer))))..............;;.Fast | 
| a25c0 |  20 62 75 74 20 69 6e 65 78 61 63 74 2c 20 63 61    6e 20 68 61 76 65 20 66 61 6c 73 65 20 70 6f 73  | .but.inexact,.can.have.false.pos | 
| a25e0 |  69 74 69 76 65 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f  | itives.............(delete-regio | 
| a2600 |  6e 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69    6e 67 20 30 29 20 28 6d 61 74 63 68 2d 65 6e 64  | n.(match-beginning.0).(match-end | 
| a2620 |  20 30 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20    4e 4f 54 45 3a 20 50 61 72 73 69 6e 67 20 74 68  | .0)))).......;;.NOTE:.Parsing.th | 
| a2640 |  65 20 62 75 66 66 65 72 20 69 73 20 65 78 74 72    65 6d 65 6c 79 20 73 6c 6f 77 2e 20 20 41 76 6f  | e.buffer.is.extremely.slow...Avo | 
| a2660 |  69 64 20 74 68 69 73 20 70 61 74 68 20 75 6e 6c    65 73 73 0a 20 20 20 20 20 20 3b 3b 20 72 65 71  | id.this.path.unless.......;;.req | 
| a2680 |  75 69 72 65 64 2e 0a 20 20 20 20 20 20 3b 3b 20    4e 4f 54 45 3a 20 60 6f 72 67 2d 65 6c 65 6d 65  | uired........;;.NOTE:.`org-eleme | 
| a26a0 |  6e 74 2d 6d 61 70 27 20 74 61 6b 65 73 20 61 20    74 68 69 72 64 20 4b 45 45 50 2d 44 45 46 45 52  | nt-map'.takes.a.third.KEEP-DEFER | 
| a26c0 |  52 45 44 20 61 72 67 75 6d 65 6e 74 20 69 6e 20    6e 65 77 65 72 0a 20 20 20 20 20 20 3b 3b 20 4f  | RED.argument.in.newer.......;;.O | 
| a26e0 |  72 67 20 76 65 72 73 69 6f 6e 73 0a 20 20 20 20    20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6d  | rg.versions.......(org-element-m | 
| a2700 |  61 70 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d    70 61 72 73 65 2d 62 75 66 66 65 72 20 27 65 6c  | ap.(org-element-parse-buffer.'el | 
| a2720 |  65 6d 65 6e 74 20 6e 69 6c 29 0a 20 20 20 20 20    20 20 20 20 20 67 70 74 65 6c 2d 6f 72 67 2d 69  | ement.nil)...........gptel-org-i | 
| a2740 |  67 6e 6f 72 65 2d 65 6c 65 6d 65 6e 74 73 0a 20    20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28  | gnore-elements.........(lambda.( | 
| a2760 |  6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20    28 70 75 73 68 20 28 6c 69 73 74 20 28 67 70 74  | node)...........(push.(list.(gpt | 
| a2780 |  65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e 74 2d    62 65 67 69 6e 20 6e 6f 64 65 29 0a 20 20 20 20  | el-org--element-begin.node)..... | 
| a27a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6c  | ..................(gptel-org--el | 
| a27c0 |  65 6d 65 6e 74 2d 65 6e 64 20 6e 6f 64 65 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ement-end.node))................ | 
| a27e0 |  20 65 6c 65 6d 65 6e 74 2d 6d 61 72 6b 65 72 73    29 29 29 0a 20 20 20 20 20 20 28 64 6f 6c 69 73  | .element-markers))).......(dolis | 
| a2800 |  74 20 28 62 6f 75 6e 64 73 20 65 6c 65 6d 65 6e    74 2d 6d 61 72 6b 65 72 73 29 0a 20 20 20 20 20  | t.(bounds.element-markers)...... | 
| a2820 |  20 20 20 28 61 70 70 6c 79 20 23 27 64 65 6c 65    74 65 2d 72 65 67 69 6f 6e 20 62 6f 75 6e 64 73  | ...(apply.#'delete-region.bounds | 
| a2840 |  29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70    74 65 6c 2d 6f 72 67 2d 2d 73 74 72 69 70 2d 62  | )))))..(defun.gptel-org--strip-b | 
| a2860 |  6c 6f 63 6b 2d 68 65 61 64 65 72 73 20 28 29 0a    20 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 67 70  | lock-headers.()..."Remove.all.gp | 
| a2880 |  74 65 6c 2d 73 70 65 63 69 66 69 63 20 62 6c 6f    63 6b 20 68 65 61 64 65 72 73 20 61 6e 64 20 66  | tel-specific.block.headers.and.f | 
| a28a0 |  6f 6f 74 65 72 73 2e 0a 45 76 65 72 79 20 6c 69    6e 65 20 74 68 61 74 20 6d 61 74 63 68 65 73 20  | ooters..Every.line.that.matches. | 
| a28c0 |  77 69 6c 6c 20 62 65 20 72 65 6d 6f 76 65 64 20    65 6e 74 69 72 65 6c 79 2e 0a 0a 54 68 69 73 20  | will.be.removed.entirely...This. | 
| a28e0 |  72 65 6d 6f 76 61 6c 20 69 73 20 6e 65 63 65 73    73 61 72 79 20 74 6f 20 61 76 6f 69 64 20 61 75  | removal.is.necessary.to.avoid.au | 
| a2900 |  74 6f 2d 6d 69 6d 69 63 72 79 20 62 79 20 4c 4c    4d 73 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63  | to-mimicry.by.LLMs."...(save-exc | 
| a2920 |  75 72 73 69 6f 6e 0a 20 20 20 20 28 67 6f 74 6f    2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e  | ursion.....(goto-char.(point-min | 
| a2940 |  29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 72    65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64  | )).....(while.(re-search-forward | 
| a2960 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 78    20 6c 69 6e 65 2d 73 74 61 72 74 20 28 6c 69 74  | .............(rx.line-start.(lit | 
| a2980 |  65 72 61 6c 20 22 23 2b 22 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28  | eral."#+").................(or.( | 
| a29a0 |  6c 69 74 65 72 61 6c 20 22 62 65 67 69 6e 22 29    20 28 6c 69 74 65 72 61 6c 20 22 65 6e 64 22 29  | literal."begin").(literal."end") | 
| a29c0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6f 72 20 28 6c 69 74 65 72 61 6c 20 22  | ).................(or.(literal." | 
| a29e0 |  5f 74 6f 6f 6c 22 29 20 28 6c 69 74 65 72 61 6c    20 22 5f 72 65 61 73 6f 6e 69 6e 67 22 29 29 29  | _tool").(literal."_reasoning"))) | 
| a2a00 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c    20 74 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74  | .............nil.t).......(delet | 
| a2a20 |  65 2d 72 65 67 69 6f 6e 20 28 6d 61 74 63 68 2d    62 65 67 69 6e 6e 69 6e 67 20 30 29 0a 20 20 20  | e-region.(match-beginning.0).... | 
| a2a40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6d 69 6e 20 28 70 6f 69 6e 74 2d 6d 61  | ..................(min.(point-ma | 
| a2a60 |  78 29 20 28 31 2b 20 28 6c 69 6e 65 2d 65 6e 64    2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 29 29 29  | x).(1+.(line-end-position))))))) | 
| a2a80 |  0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f    72 67 2d 2d 75 6e 65 73 63 61 70 65 2d 74 6f 6f  | ..(defun.gptel-org--unescape-too | 
| a2aa0 |  6c 2d 72 65 73 75 6c 74 73 20 28 29 0a 20 20 22    55 6e 64 6f 20 65 73 63 61 70 65 73 20 64 6f 6e  | l-results.()..."Undo.escapes.don | 
| a2ac0 |  65 20 74 6f 20 6b 65 65 70 20 72 65 73 75 6c 74    73 20 66 72 6f 6d 20 65 73 63 61 70 69 6e 67 20  | e.to.keep.results.from.escaping. | 
| a2ae0 |  62 6c 6f 63 6b 73 2e 0a 53 63 61 6e 73 20 62 61    63 6b 77 61 72 64 20 66 6f 72 20 67 70 74 65 6c  | blocks..Scans.backward.for.gptel | 
| a2b00 |  20 74 6f 6f 6c 20 74 65 78 74 20 70 72 6f 70 65    72 74 79 2c 20 72 65 61 64 73 20 74 68 65 20 61  | .tool.text.property,.reads.the.a | 
| a2b20 |  72 67 75 6d 65 6e 74 73 2c 20 74 68 65 6e 0a 75    6e 65 73 63 61 70 65 73 20 74 68 65 20 72 65 6d  | rguments,.then.unescapes.the.rem | 
| a2b40 |  61 69 6e 64 65 72 2e 22 0a 20 20 28 73 61 76 65    2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28  | ainder."...(save-excursion.....( | 
| a2b60 |  67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74    2d 6d 61 78 29 29 0a 20 20 20 20 28 6c 65 74 20  | goto-char.(point-max)).....(let. | 
| a2b80 |  28 28 70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74    29 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65  | ((prev-pt.(point))).......(while | 
| a2ba0 |  20 28 3e 20 70 72 65 76 2d 70 74 20 28 70 6f 69    6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20  | .(>.prev-pt.(point-min))........ | 
| a2bc0 |  20 28 67 6f 74 6f 2d 63 68 61 72 0a 20 20 20 20    20 20 20 20 20 28 70 72 65 76 69 6f 75 73 2d 73  | .(goto-char..........(previous-s | 
| a2be0 |  69 6e 67 6c 65 2d 63 68 61 72 2d 70 72 6f 70 65    72 74 79 2d 63 68 61 6e 67 65 20 28 70 6f 69 6e  | ingle-char-property-change.(poin | 
| a2c00 |  74 29 20 27 67 70 74 65 6c 29 29 0a 20 20 20 20    20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 70 20  | t).'gptel)).........(let.((prop. | 
| a2c20 |  28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72    74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65  | (get-text-property.(point).'gpte | 
| a2c40 |  6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 62 61 63 6b 77 61 72 64 2d 70 72 6f 67  | l))...............(backward-prog | 
| a2c60 |  72 65 73 73 20 28 70 6f 69 6e 74 29 29 29 0a 20    20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28  | ress.(point)))...........(when.( | 
| a2c80 |  65 71 20 28 63 61 72 2d 73 61 66 65 20 70 72 6f    70 29 20 27 74 6f 6f 6c 29 0a 20 20 20 20 20 20  | eq.(car-safe.prop).'tool)....... | 
| a2ca0 |  20 20 20 20 20 20 3b 3b 20 55 73 65 72 20 65 64    69 74 73 20 74 6f 20 63 6c 65 61 6e 20 75 70 20  | ......;;.User.edits.to.clean.up. | 
| a2cc0 |  63 61 6e 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20    69 6e 73 65 72 74 20 61 20 74 6f 6f 6c 2d 63 61  | can.potentially.insert.a.tool-ca | 
| a2ce0 |  6c 6c 20 68 65 61 64 65 72 0a 20 20 20 20 20 20    20 20 20 20 20 20 3b 3b 20 74 68 61 74 20 69 73  | ll.header.............;;.that.is | 
| a2d00 |  20 70 72 6f 70 65 72 74 69 7a 65 64 2e 20 20 54    6f 6f 6c 20 63 61 6c 6c 20 68 65 61 64 65 72 73  | .propertized...Tool.call.headers | 
| a2d20 |  20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 0a 20    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 70 72  | .should.not.be.............;;.pr | 
| a2d40 |  6f 70 65 72 74 69 7a 65 64 2e 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f  | opertized..............(when.(lo | 
| a2d60 |  6f 6b 69 6e 67 2d 61 74 2d 70 20 22 5b 5b 3a 73    70 61 63 65 3a 5d 5d 2a 23 5c 5c 2b 62 65 67 69  | oking-at-p."[[:space:]]*#\\+begi | 
| a2d80 |  6e 5f 74 6f 6f 6c 22 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61  | n_tool")...............(goto-cha | 
| a2da0 |  72 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | r.(match-end.0))).............(c | 
| a2dc0 |  6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69    6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ondition-case.nil............... | 
| a2de0 |  20 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74    2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20  | ..(read.(current-buffer))....... | 
| a2e00 |  20 20 20 20 20 20 20 20 28 28 65 6e 64 2d 6f 66    2d 66 69 6c 65 20 69 6e 76 61 6c 69 64 2d 72 65  | ........((end-of-file.invalid-re | 
| a2e20 |  61 64 2d 73 79 6e 74 61 78 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61  | ad-syntax)................(messa | 
| a2e40 |  67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65    61 64 20 74 6f 6f 6c 20 61 72 67 75 6d 65 6e 74  | ge."Could.not.read.tool.argument | 
| a2e60 |  73 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 54 4f 44 4f 20 74 68 69 73 20 63  | s"))).............;;.TODO.this.c | 
| a2e80 |  6f 64 65 20 69 73 20 61 62 6c 65 20 74 6f 20 70    75 74 20 74 68 65 20 70 6f 69 6e 74 20 62 65 68  | ode.is.able.to.put.the.point.beh | 
| a2ea0 |  69 6e 64 20 70 72 65 76 2d 70 74 2c 20 77 68 69    63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b  | ind.prev-pt,.which.............; | 
| a2ec0 |  3b 20 6d 61 6b 65 73 20 74 68 65 20 72 65 67 69    6f 6e 20 69 6e 76 65 72 74 65 64 2e 20 20 54 68  | ;.makes.the.region.inverted...Th | 
| a2ee0 |  65 20 60 6d 61 78 27 20 63 61 74 63 68 65 73 20    74 68 69 73 2c 20 62 75 74 20 72 65 61 6c 6c 79  | e.`max'.catches.this,.but.really | 
| a2f00 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    60 72 65 61 64 27 20 61 6e 64 20 60 6c 6f 6f 6b  | .............;;.`read'.and.`look | 
| a2f20 |  69 6e 67 2d 61 74 27 20 61 72 65 20 74 68 65 20    63 75 6c 70 72 69 74 73 2e 20 20 42 61 64 6c 79  | ing-at'.are.the.culprits...Badly | 
| a2f40 |  20 66 6f 72 6d 65 64 20 74 6f 6f 6c 0a 20 20 20    20 20 20 20 20 20 20 20 20 3b 3b 20 62 6c 6f 63  | .formed.tool.............;;.bloc | 
| a2f60 |  6b 73 20 63 61 6e 20 6c 65 61 64 20 74 6f 20 74    68 69 73 20 62 65 69 6e 67 20 6e 65 63 65 73 73  | ks.can.lead.to.this.being.necess | 
| a2f80 |  61 72 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 6f 72 67 2d 75 6e 65 73 63 61 70 65 2d 63  | ary..............(org-unescape-c | 
| a2fa0 |  6f 64 65 2d 69 6e 2d 72 65 67 69 6f 6e 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6d 69 6e 20  | ode-in-region..............(min. | 
| a2fc0 |  70 72 65 76 2d 70 74 20 28 70 6f 69 6e 74 29 29    20 70 72 65 76 2d 70 74 29 29 0a 20 20 20 20 20  | prev-pt.(point)).prev-pt))...... | 
| a2fe0 |  20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20    28 73 65 74 71 20 70 72 65 76 2d 70 74 20 62 61  | .....(goto-char.(setq.prev-pt.ba | 
| a3000 |  63 6b 77 61 72 64 2d 70 72 6f 67 72 65 73 73 29    29 29 29 29 29 29 0a 0a 3b 3b 20 48 61 6e 64 6c  | ckward-progress)))))))..;;.Handl | 
| a3020 |  65 20 6d 65 64 69 61 20 6c 69 6e 6b 73 20 69 6e    20 74 68 65 20 62 75 66 66 65 72 0a 28 63 6c 2d  | e.media.links.in.the.buffer.(cl- | 
| a3040 |  64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d    2d 70 61 72 73 65 2d 6d 65 64 69 61 2d 6c 69 6e  | defmethod.gptel--parse-media-lin | 
| a3060 |  6b 73 20 28 28 5f 6d 6f 64 65 20 28 65 71 6c 20    27 6f 72 67 2d 6d 6f 64 65 29 29 20 62 65 67 20  | ks.((_mode.(eql.'org-mode)).beg. | 
| a3080 |  65 6e 64 29 0a 20 20 22 50 61 72 73 65 20 74 65    78 74 20 61 6e 64 20 61 63 74 69 6f 6e 61 62 6c  | end)..."Parse.text.and.actionabl | 
| a30a0 |  65 20 6c 69 6e 6b 73 20 62 65 74 77 65 65 6e 20    42 45 47 20 61 6e 64 20 45 4e 44 2e 0a 0a 52 65  | e.links.between.BEG.and.END...Re | 
| a30c0 |  74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 74    68 65 20 66 6f 72 6d 0a 20 28 28 3a 74 65 78 74  | turn.a.list.of.the.form..((:text | 
| a30e0 |  20 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 0a    20 20 28 3a 6d 65 64 69 61 20 5c 22 2f 70 61 74  | .\"some.text\")...(:media.\"/pat | 
| a3100 |  68 2f 74 6f 2f 6d 65 64 69 61 2e 70 6e 67 5c 22    20 3a 6d 69 6d 65 20 5c 22 69 6d 61 67 65 2f 70  | h/to/media.png\".:mime.\"image/p | 
| a3120 |  6e 67 5c 22 29 0a 20 20 28 3a 74 65 78 74 20 5c    22 4d 6f 72 65 20 74 65 78 74 5c 22 29 29 0a 66  | ng\")...(:text.\"More.text\")).f | 
| a3140 |  6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74    6f 20 74 68 65 20 75 73 65 72 20 70 72 6f 6d 70  | or.inclusion.into.the.user.promp | 
| a3160 |  74 20 66 6f 72 20 74 68 65 20 67 70 74 65 6c 20    72 65 71 75 65 73 74 2e 22 0a 20 20 28 72 65 71  | t.for.the.gptel.request."...(req | 
| a3180 |  75 69 72 65 20 27 6d 61 69 6c 63 61 70 29 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | uire.'mailcap).................. | 
| a31a0 |  20 20 3b 46 49 58 4d 45 20 41 76 6f 69 64 20 74    68 69 73 20 73 6f 6d 65 68 6f 77 0a 20 20 28 6c  | ..;FIXME.Avoid.this.somehow...(l | 
| a31c0 |  65 74 20 28 28 70 61 72 74 73 29 20 28 66 72 6f    6d 2d 70 74 29 20 28 6d 69 6d 65 29 0a 20 20 20  | et.((parts).(from-pt).(mime).... | 
| a31e0 |  20 20 20 20 20 28 6c 69 6e 6b 2d 72 65 67 65 78    20 28 63 6f 6e 63 61 74 20 22 5c 5c 28 3f 3a 22  | .....(link-regex.(concat."\\(?:" | 
| a3200 |  20 6f 72 67 2d 6c 69 6e 6b 2d 62 72 61 63 6b 65    74 2d 72 65 20 22 5c 5c 7c 22 0a 20 20 20 20 20  | .org-link-bracket-re."\\|"...... | 
| a3220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 6f 72 67 2d 6c 69 6e 6b 2d  | .......................org-link- | 
| a3240 |  61 6e 67 6c 65 2d 72 65 20 22 5c 5c 29 22 29 29    29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75  | angle-re."\\)"))).....(save-excu | 
| a3260 |  72 73 69 6f 6e 0a 20 20 20 20 20 20 28 73 65 74    71 20 66 72 6f 6d 2d 70 74 20 28 67 6f 74 6f 2d  | rsion.......(setq.from-pt.(goto- | 
| a3280 |  63 68 61 72 20 62 65 67 29 29 0a 20 20 20 20 20    20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72  | char.beg)).......(while.(re-sear | 
| a32a0 |  63 68 2d 66 6f 72 77 61 72 64 20 6c 69 6e 6b 2d    72 65 67 65 78 20 65 6e 64 20 74 29 0a 20 20 20  | ch-forward.link-regex.end.t).... | 
| a32c0 |  20 20 20 20 20 28 73 65 74 71 20 6d 69 6d 65 20    6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 77 68  | .....(setq.mime.nil).........(wh | 
| a32e0 |  65 6e 2d 6c 65 74 2a 20 28 28 6c 69 6e 6b 20 28    6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 63 6f 6e 74  | en-let*.((link.(org-element-cont | 
| a3300 |  65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 28 67 70 74 65  | ext)).....................((gpte | 
| a3320 |  6c 2d 6f 72 67 2d 2d 6c 69 6e 6b 2d 73 74 61 6e    64 61 6c 6f 6e 65 2d 70 20 6c 69 6e 6b 29 29 0a  | l-org--link-standalone-p.link)). | 
| a3340 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 72 61 77 2d 6c 69 6e 6b 20 28 6f  | ....................(raw-link.(o | 
| a3360 |  72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65    72 74 79 20 3a 72 61 77 2d 6c 69 6e 6b 20 6c 69  | rg-element-property.:raw-link.li | 
| a3380 |  6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 70 61 74 68 20 28  | nk)).....................(path.( | 
| a33a0 |  6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70    65 72 74 79 20 3a 70 61 74 68 20 6c 69 6e 6b 29  | org-element-property.:path.link) | 
| a33c0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 74 79 70 65 20 28 6f 72 67  | ).....................(type.(org | 
| a33e0 |  2d 65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74    79 20 3a 74 79 70 65 20 6c 69 6e 6b 29 29 0a 20  | -element-property.:type.link)).. | 
| a3400 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 46 49 58 4d 45 20 54 68 69 73  | ...................;;.FIXME.This | 
| a3420 |  20 69 73 20 6e 6f 74 20 61 20 67 6f 6f 64 20 70    6c 61 63 65 20 74 6f 20 63 68 65 63 6b 20 66 6f  | .is.not.a.good.place.to.check.fo | 
| a3440 |  72 20 75 72 6c 20 63 61 70 61 62 69 6c 69 74 79    21 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | r.url.capability!............... | 
| a3460 |  20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 74    79 70 65 20 60 28 22 61 74 74 61 63 68 6d 65 6e  | ......((member.type.`("attachmen | 
| a3480 |  74 22 20 22 66 69 6c 65 22 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t"."file"....................... | 
| a34a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40    28 61 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 6f 64  | ..............,@(and.(gptel--mod | 
| a34c0 |  65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 27 75 72    6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | el-capable-p.'url).............. | 
| a34e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 27 28 22 68 74 74  | ..........................'("htt | 
| a3500 |  70 22 20 22 68 74 74 70 73 22 20 22 66 74 70 22    29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  | p"."https"."ftp")))))).......... | 
| a3520 |  20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20    20 20 28 28 6d 65 6d 62 65 72 20 74 79 70 65 20  | .(cond............((member.type. | 
| a3540 |  27 28 22 66 69 6c 65 22 20 22 61 74 74 61 63 68    6d 65 6e 74 22 29 29 0a 20 20 20 20 20 20 20 20  | '("file"."attachment"))......... | 
| a3560 |  20 20 20 20 28 69 66 20 28 66 69 6c 65 2d 72 65    61 64 61 62 6c 65 2d 70 20 70 61 74 68 29 0a 20  | ....(if.(file-readable-p.path).. | 
| a3580 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66    20 28 6f 72 20 28 6e 6f 74 20 28 67 70 74 65 6c  | .............(if.(or.(not.(gptel | 
| a35a0 |  2d 2d 66 69 6c 65 2d 62 69 6e 61 72 79 2d 70 20    70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20  | --file-binary-p.path)).......... | 
| a35c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e    64 20 28 73 65 74 71 20 6d 69 6d 65 20 28 6d 61  | .............(and.(setq.mime.(ma | 
| a35e0 |  69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65 2d    74 6f 2d 6d 69 6d 65 2d 74 79 70 65 20 70 61 74  | ilcap-file-name-to-mime-type.pat | 
| a3600 |  68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | h))............................( | 
| a3620 |  67 70 74 65 6c 2d 2d 6d 6f 64 65 6c 2d 6d 69 6d    65 2d 63 61 70 61 62 6c 65 2d 70 20 6d 69 6d 65  | gptel--model-mime-capable-p.mime | 
| a3640 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 72 6f 67 6e 20 20 20 20  | )))...................(progn.... | 
| a3660 |  20 20 20 20 20 20 20 20 20 20 20 20 3b 20 74 65    78 74 20 66 69 6c 65 20 6f 72 20 73 75 70 70 6f  | ............;.text.file.or.suppo | 
| a3680 |  72 74 65 64 20 62 69 6e 61 72 79 20 66 69 6c 65    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rted.binary.file................ | 
| a36a0 |  20 20 20 20 20 3b 3b 20 63 6f 6c 6c 65 63 74 20    74 65 78 74 20 75 70 20 74 6f 20 6c 69 6e 6b 0a  | .....;;.collect.text.up.to.link. | 
| a36c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28  | ....................(when-let*.( | 
| a36e0 |  28 74 65 78 74 20 28 62 75 66 66 65 72 2d 73 75    62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65  | (text.(buffer-substring-no-prope | 
| a3700 |  72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rties........................... | 
| a3720 |  20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f    6d 2d 70 74 20 28 67 70 74 65 6c 2d 6f 72 67 2d  | .............from-pt.(gptel-org- | 
| a3740 |  2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6c    69 6e 6b 29 29 29 29 0a 20 20 20 20 20 20 20 20  | -element-begin.link))))......... | 
| a3760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75    6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 62 6c  | ..............(unless.(string-bl | 
| a3780 |  61 6e 6b 2d 70 20 74 65 78 74 29 20 28 70 75 73    68 20 28 6c 69 73 74 20 3a 74 65 78 74 20 74 65  | ank-p.text).(push.(list.:text.te | 
| a37a0 |  78 74 29 20 70 61 72 74 73 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | xt).parts))).................... | 
| a37c0 |  20 3b 3b 20 63 6f 6c 6c 65 63 74 20 6c 69 6e 6b    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .;;.collect.link................ | 
| a37e0 |  20 20 20 20 20 28 70 75 73 68 20 28 69 66 20 6d    69 6d 65 20 28 6c 69 73 74 20 3a 6d 65 64 69 61  | .....(push.(if.mime.(list.:media | 
| a3800 |  20 70 61 74 68 20 3a 6d 69 6d 65 20 6d 69 6d 65    29 20 28 6c 69 73 74 20 3a 74 65 78 74 66 69 6c  | .path.:mime.mime).(list.:textfil | 
| a3820 |  65 20 70 61 74 68 29 29 20 70 61 72 74 73 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.path)).parts)................. | 
| a3840 |  20 20 20 20 28 73 65 74 71 20 66 72 6f 6d 2d 70    74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20  | ....(setq.from-pt.(point)))..... | 
| a3860 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73    73 61 67 65 20 22 49 67 6e 6f 72 69 6e 67 20 75  | ............(message."Ignoring.u | 
| a3880 |  6e 73 75 70 70 6f 72 74 65 64 20 62 69 6e 61 72    79 20 66 69 6c 65 20 5c 22 25 73 5c 22 2e 22 20  | nsupported.binary.file.\"%s\".". | 
| a38a0 |  70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 49  | path))...............(message."I | 
| a38c0 |  67 6e 6f 72 69 6e 67 20 69 6e 61 63 63 65 73 73    69 62 6c 65 20 66 69 6c 65 20 5c 22 25 73 5c 22  | gnoring.inaccessible.file.\"%s\" | 
| a38e0 |  2e 22 20 70 61 74 68 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 28 28 61 6e 64 20 28 6d 65 6d  | .".path)))............((and.(mem | 
| a3900 |  62 65 72 20 74 79 70 65 20 27 28 22 68 74 74 70    22 20 22 68 74 74 70 73 22 20 22 66 74 70 22 29  | ber.type.'("http"."https"."ftp") | 
| a3920 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 65 74 71 20 6d 69 6d 65 20 28 6d  | )..................(setq.mime.(m | 
| a3940 |  61 69 6c 63 61 70 2d 66 69 6c 65 2d 6e 61 6d 65    2d 74 6f 2d 6d 69 6d 65 2d 74 79 70 65 20 70 61  | ailcap-file-name-to-mime-type.pa | 
| a3960 |  74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6d 6f  | th))..................(gptel--mo | 
| a3980 |  64 65 6c 2d 63 61 70 61 62 6c 65 2d 70 20 6d 69    6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | del-capable-p.mime))............ | 
| a39a0 |  20 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 65 78 74    20 75 70 20 74 6f 20 74 68 69 73 20 69 6d 61 67  | .;;.Collect.text.up.to.this.imag | 
| a39c0 |  65 2c 20 61 6e 64 20 63 6f 6c 6c 65 63 74 20 74    68 69 73 20 69 6d 61 67 65 20 75 72 6c 0a 20 20  | e,.and.collect.this.image.url... | 
| a39e0 |  20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d    6c 65 74 2a 20 28 28 74 65 78 74 20 28 62 75 66  | ..........(when-let*.((text.(buf | 
| a3a00 |  66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f    2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20  | fer-substring-no-properties..... | 
| a3a20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 2d  | ...........................from- | 
| a3a40 |  70 74 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65    6c 65 6d 65 6e 74 2d 62 65 67 69 6e 20 6c 69 6e  | pt.(gptel-org--element-begin.lin | 
| a3a60 |  6b 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72  | k))))...............(unless.(str | 
| a3a80 |  69 6e 67 2d 62 6c 61 6e 6b 2d 70 20 74 65 78 74    29 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 74  | ing-blank-p.text).(push.(list.:t | 
| a3aa0 |  65 78 74 20 74 65 78 74 29 20 70 61 72 74 73 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  | ext.text).parts))).............( | 
| a3ac0 |  70 75 73 68 20 28 6c 69 73 74 20 3a 75 72 6c 20    72 61 77 2d 6c 69 6e 6b 20 3a 6d 69 6d 65 20 6d  | push.(list.:url.raw-link.:mime.m | 
| a3ae0 |  69 6d 65 29 20 70 61 72 74 73 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 72  | ime).parts).............(setq.fr | 
| a3b00 |  6f 6d 2d 70 74 20 28 70 6f 69 6e 74 29 29 29 29    29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73  | om-pt.(point)))))).......(unless | 
| a3b20 |  20 28 3d 20 66 72 6f 6d 2d 70 74 20 65 6e 64 29    0a 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28  | .(=.from-pt.end).........(push.( | 
| a3b40 |  6c 69 73 74 20 3a 74 65 78 74 20 28 62 75 66 66    65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d  | list.:text.(buffer-substring-no- | 
| a3b60 |  70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 2d    70 74 20 65 6e 64 29 29 20 70 61 72 74 73 29 29  | properties.from-pt.end)).parts)) | 
| a3b80 |  29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20    70 61 72 74 73 29 29 29 0a 0a 28 64 65 66 75 6e  | ).....(nreverse.parts)))..(defun | 
| a3ba0 |  20 67 70 74 65 6c 2d 6f 72 67 2d 2d 6c 69 6e 6b    2d 73 74 61 6e 64 61 6c 6f 6e 65 2d 70 20 28 6f  | .gptel-org--link-standalone-p.(o | 
| a3bc0 |  62 6a 65 63 74 29 0a 20 20 22 43 68 65 63 6b 20    69 66 20 6c 69 6e 6b 20 4f 42 4a 45 43 54 20 69  | bject)..."Check.if.link.OBJECT.i | 
| a3be0 |  73 20 6f 6e 20 61 20 6c 69 6e 65 20 62 79 20 69    74 73 65 6c 66 2e 22 0a 20 20 3b 3b 20 53 70 65  | s.on.a.line.by.itself."...;;.Spe | 
| a3c00 |  63 69 66 79 20 61 6e 63 65 73 74 6f 72 20 54 59    50 45 53 20 61 73 20 6c 69 73 74 20 28 23 32 34  | cify.ancestor.TYPES.as.list.(#24 | 
| a3c20 |  35 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20    28 28 70 61 72 20 28 6f 72 67 2d 65 6c 65 6d 65  | 5)...(when-let*.((par.(org-eleme | 
| a3c40 |  6e 74 2d 6c 69 6e 65 61 67 65 20 6f 62 6a 65 63    74 20 27 28 70 61 72 61 67 72 61 70 68 29 29 29  | nt-lineage.object.'(paragraph))) | 
| a3c60 |  29 0a 20 20 20 20 28 61 6e 64 20 28 3d 20 28 67    70 74 65 6c 2d 6f 72 67 2d 2d 65 6c 65 6d 65 6e  | ).....(and.(=.(gptel-org--elemen | 
| a3c80 |  74 2d 62 65 67 69 6e 20 6f 62 6a 65 63 74 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76  | t-begin.object).............(sav | 
| a3ca0 |  65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d  | e-excursion...............(goto- | 
| a3cc0 |  63 68 61 72 20 28 6f 72 67 2d 65 6c 65 6d 65 6e    74 2d 70 72 6f 70 65 72 74 79 20 3a 63 6f 6e 74  | char.(org-element-property.:cont | 
| a3ce0 |  65 6e 74 73 2d 62 65 67 69 6e 20 70 61 72 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ents-begin.par))...............( | 
| a3d00 |  73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61    72 64 20 22 5c 74 20 22 29 0a 20 20 20 20 20 20  | skip-chars-forward."\t.")....... | 
| a3d20 |  20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 29    29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........(point)))............... | 
| a3d40 |  20 20 3b 61 63 63 6f 75 6e 74 20 66 6f 72 20 6c    65 61 64 69 6e 67 20 73 70 61 63 65 20 62 65 66  | ..;account.for.leading.space.bef | 
| a3d60 |  6f 72 65 20 6f 62 6a 65 63 74 0a 20 20 20 20 20    20 20 20 20 28 3c 3d 20 28 2d 20 28 6f 72 67 2d  | ore.object..........(<=.(-.(org- | 
| a3d80 |  65 6c 65 6d 65 6e 74 2d 70 72 6f 70 65 72 74 79    20 3a 63 6f 6e 74 65 6e 74 73 2d 65 6e 64 20 70  | element-property.:contents-end.p | 
| a3da0 |  61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74  | ar).................(org-element | 
| a3dc0 |  2d 70 72 6f 70 65 72 74 79 20 3a 65 6e 64 20 6f    62 6a 65 63 74 29 29 0a 20 20 20 20 20 20 20 20  | -property.:end.object))......... | 
| a3de0 |  20 20 20 20 20 31 29 29 29 29 0a 0a 28 64 65 66    75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65  | .....1))))..(defun.gptel-org--se | 
| a3e00 |  6e 64 2d 77 69 74 68 2d 70 72 6f 70 73 20 28 73    65 6e 64 2d 66 75 6e 20 26 72 65 73 74 20 61 72  | nd-with-props.(send-fun.&rest.ar | 
| a3e20 |  67 73 29 0a 20 20 22 43 6f 6e 64 69 74 69 6f 6e    61 6c 6c 79 20 6d 6f 64 69 66 79 20 53 45 4e 44  | gs)..."Conditionally.modify.SEND | 
| a3e40 |  2d 46 55 4e 27 73 20 63 61 6c 6c 69 6e 67 20 65    6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 0a 49 66 20  | -FUN's.calling.environment...If. | 
| a3e60 |  69 6e 20 61 6e 20 4f 72 67 20 62 75 66 66 65 72    20 75 6e 64 65 72 20 61 20 68 65 61 64 69 6e 67  | in.an.Org.buffer.under.a.heading | 
| a3e80 |  20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 73 74    6f 72 65 64 20 67 70 74 65 6c 0a 63 6f 6e 66 69  | .containing.a.stored.gptel.confi | 
| a3ea0 |  67 75 72 61 74 69 6f 6e 2c 20 75 73 65 20 74 68    61 74 20 66 6f 72 20 72 65 71 75 65 73 74 73 20  | guration,.use.that.for.requests. | 
| a3ec0 |  69 6e 73 74 65 61 64 2e 20 20 54 68 69 73 20 69    6e 63 6c 75 64 65 73 20 74 68 65 0a 73 79 73 74  | instead...This.includes.the.syst | 
| a3ee0 |  65 6d 20 6d 65 73 73 61 67 65 2c 20 6d 6f 64 65    6c 20 61 6e 64 20 70 72 6f 76 69 64 65 72 20 28  | em.message,.model.and.provider.( | 
| a3f00 |  62 61 63 6b 65 6e 64 29 2c 20 61 6d 6f 6e 67 20    6f 74 68 65 72 0a 70 61 72 61 6d 65 74 65 72 73  | backend),.among.other.parameters | 
| a3f20 |  2e 0a 0a 41 52 47 53 20 61 72 65 20 74 68 65 20    6f 72 69 67 69 6e 61 6c 20 66 75 6e 63 74 69 6f  | ...ARGS.are.the.original.functio | 
| a3f40 |  6e 20 63 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73    2e 22 0a 20 20 28 69 66 20 28 64 65 72 69 76 65  | n.call.arguments."...(if.(derive | 
| a3f60 |  64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f    64 65 29 0a 20 20 20 20 20 20 28 70 63 61 73 65  | d-mode-p.'org-mode).......(pcase | 
| a3f80 |  2d 6c 65 74 20 28 28 60 28 2c 67 70 74 65 6c 2d    2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20  | -let.((`(,gptel--system-message. | 
| a3fa0 |  2c 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 2c    67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20  | ,gptel-backend.,gptel-model..... | 
| a3fc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 2c 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74  | .................,gptel-temperat | 
| a3fe0 |  75 72 65 20 2c 67 70 74 65 6c 2d 6d 61 78 2d 74    6f 6b 65 6e 73 29 0a 20 20 20 20 20 20 20 20 20  | ure.,gptel-max-tokens).......... | 
| a4000 |  20 20 20 20 20 20 20 20 20 20 28 73 65 71 2d 6d    61 70 6e 20 28 6c 61 6d 62 64 61 20 28 61 20 62  | ..........(seq-mapn.(lambda.(a.b | 
| a4020 |  29 20 28 6f 72 20 61 20 62 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ).(or.a.b))..................... | 
| a4040 |  20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d    6f 72 67 2d 2d 65 6e 74 72 79 2d 70 72 6f 70 65  | .........(gptel-org--entry-prope | 
| a4060 |  72 74 69 65 73 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rties).......................... | 
| a4080 |  20 20 20 20 28 6c 69 73 74 20 67 70 74 65 6c 2d    2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20  | ....(list.gptel--system-message. | 
| a40a0 |  67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70    74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20  | gptel-backend.gptel-model....... | 
| a40c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74  | .............................gpt | 
| a40e0 |  65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 67    70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29  | el-temperature.gptel-max-tokens) | 
| a4100 |  29 29 29 0a 20 20 20 20 20 20 20 20 28 61 70 70    6c 79 20 73 65 6e 64 2d 66 75 6e 20 61 72 67 73  | ))).........(apply.send-fun.args | 
| a4120 |  29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 73 65    6e 64 2d 66 75 6e 20 61 72 67 73 29 29 29 0a 0a  | )).....(apply.send-fun.args))).. | 
| a4140 |  28 61 64 76 69 63 65 2d 61 64 64 20 27 67 70 74    65 6c 2d 73 65 6e 64 20 3a 61 72 6f 75 6e 64 20  | (advice-add.'gptel-send.:around. | 
| a4160 |  23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65 6e    64 2d 77 69 74 68 2d 70 72 6f 70 73 29 0a 28 61  | #'gptel-org--send-with-props).(a | 
| a4180 |  64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c    2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 20 3a 61  | dvice-add.'gptel--suffix-send.:a | 
| a41a0 |  72 6f 75 6e 64 20 23 27 67 70 74 65 6c 2d 6f 72    67 2d 2d 73 65 6e 64 2d 77 69 74 68 2d 70 72 6f  | round.#'gptel-org--send-with-pro | 
| a41c0 |  70 73 29 0a 0a 3b 3b 20 3b 3b 20 4e 4f 54 45 3a    20 42 61 73 69 63 20 75 73 65 73 20 69 6e 20 6f  | ps)..;;.;;.NOTE:.Basic.uses.in.o | 
| a41e0 |  72 67 2d 6d 6f 64 65 20 61 72 65 20 63 6f 76 65    72 65 64 20 62 79 20 61 64 76 69 73 69 6e 67 20  | rg-mode.are.covered.by.advising. | 
| a4200 |  67 70 74 65 6c 2d 73 65 6e 64 20 61 6e 64 0a 3b    3b 20 3b 3b 20 67 70 74 65 6c 2d 2d 73 75 66 66  | gptel-send.and.;;.;;.gptel--suff | 
| a4220 |  69 78 2d 73 65 6e 64 2e 20 20 46 6f 72 20 63 75    73 74 6f 6d 20 63 6f 6d 6d 61 6e 64 73 20 69 74  | ix-send...For.custom.commands.it | 
| a4240 |  20 6d 69 67 68 74 20 62 65 20 6e 65 63 65 73 73    61 72 79 20 74 6f 20 61 64 76 69 73 65 0a 3b 3b  | .might.be.necessary.to.advise.;; | 
| a4260 |  20 3b 3b 20 67 70 74 65 6c 2d 72 65 71 75 65 73    74 20 69 6e 73 74 65 61 64 2e 0a 3b 3b 20 28 61  | .;;.gptel-request.instead..;;.(a | 
| a4280 |  64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c    2d 72 65 71 75 65 73 74 20 3a 61 72 6f 75 6e 64  | dvice-add.'gptel-request.:around | 
| a42a0 |  20 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65    6e 64 2d 77 69 74 68 2d 70 72 6f 70 73 29 0a 0a  | .#'gptel-org--send-with-props).. | 
| a42c0 |  0c 0a 3b 3b 3b 20 53 61 76 69 6e 67 20 61 6e 64    20 72 65 73 74 6f 72 69 6e 67 20 73 74 61 74 65  | ..;;;.Saving.and.restoring.state | 
| a42e0 |  0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72    67 2d 2d 65 6e 74 72 79 2d 70 72 6f 70 65 72 74  | .(defun.gptel-org--entry-propert | 
| a4300 |  69 65 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70    74 29 0a 20 20 22 46 69 6e 64 20 67 70 74 65 6c  | ies.(&optional.pt)..."Find.gptel | 
| a4320 |  20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 70    72 6f 70 65 72 74 69 65 73 20 73 74 6f 72 65 64  | .configuration.properties.stored | 
| a4340 |  20 61 74 20 50 54 2e 22 0a 20 20 28 70 63 61 73    65 2d 6c 65 74 0a 20 20 20 20 20 20 28 28 60 28  | .at.PT."...(pcase-let.......((`( | 
| a4360 |  2c 73 79 73 74 65 6d 20 2c 62 61 63 6b 65 6e 64    20 2c 6d 6f 64 65 6c 20 2c 74 65 6d 70 65 72 61  | ,system.,backend.,model.,tempera | 
| a4380 |  74 75 72 65 20 2c 74 6f 6b 65 6e 73 20 2c 6e 75    6d 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 70  | ture.,tokens.,num)..........(map | 
| a43a0 |  63 61 72 0a 20 20 20 20 20 20 20 20 20 20 28 6c    61 6d 62 64 61 20 28 70 72 6f 70 29 20 28 6f 72  | car...........(lambda.(prop).(or | 
| a43c0 |  67 2d 65 6e 74 72 79 2d 67 65 74 20 28 6f 72 20    70 74 20 28 70 6f 69 6e 74 29 29 20 70 72 6f 70  | g-entry-get.(or.pt.(point)).prop | 
| a43e0 |  20 27 73 65 6c 65 63 74 69 76 65 29 29 0a 20 20    20 20 20 20 20 20 20 20 27 28 22 47 50 54 45 4c  | .'selective))...........'("GPTEL | 
| a4400 |  5f 53 59 53 54 45 4d 22 20 22 47 50 54 45 4c 5f    42 41 43 4b 45 4e 44 22 20 22 47 50 54 45 4c 5f  | _SYSTEM"."GPTEL_BACKEND"."GPTEL_ | 
| a4420 |  4d 4f 44 45 4c 22 0a 20 20 20 20 20 20 20 20 20    20 20 20 22 47 50 54 45 4c 5f 54 45 4d 50 45 52  | MODEL"............."GPTEL_TEMPER | 
| a4440 |  41 54 55 52 45 22 20 22 47 50 54 45 4c 5f 4d 41    58 5f 54 4f 4b 45 4e 53 22 0a 20 20 20 20 20 20  | ATURE"."GPTEL_MAX_TOKENS"....... | 
| a4460 |  20 20 20 20 20 20 22 47 50 54 45 4c 5f 4e 55 4d    5f 4d 45 53 53 41 47 45 53 5f 54 4f 5f 53 45 4e  | ......"GPTEL_NUM_MESSAGES_TO_SEN | 
| a4480 |  44 22 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e    20 73 79 73 74 65 6d 0a 20 20 20 20 20 20 28 73  | D")))).....(when.system.......(s | 
| a44a0 |  65 74 71 20 73 79 73 74 65 6d 20 28 73 74 72 69    6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 5c 6e 22  | etq.system.(string-replace."\\n" | 
| a44c0 |  20 22 5c 6e 22 20 73 79 73 74 65 6d 29 29 29 0a    20 20 20 20 28 77 68 65 6e 20 62 61 63 6b 65 6e  | ."\n".system))).....(when.backen | 
| a44e0 |  64 0a 20 20 20 20 20 20 28 73 65 74 71 20 62 61    63 6b 65 6e 64 20 28 61 6c 69 73 74 2d 67 65 74  | d.......(setq.backend.(alist-get | 
| a4500 |  20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d    6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20  | .backend.gptel--known-backends.. | 
| a4520 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69  | ..............................ni | 
| a4540 |  6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 29 29    0a 20 20 20 20 28 77 68 65 6e 20 6d 6f 64 65 6c  | l.nil.#'equal))).....(when.model | 
| a4560 |  20 28 73 65 74 71 20 6d 6f 64 65 6c 20 28 67 70    74 65 6c 2d 2d 69 6e 74 65 72 6e 20 6d 6f 64 65  | .(setq.model.(gptel--intern.mode | 
| a4580 |  6c 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 74    65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20  | l))).....(when.temperature...... | 
| a45a0 |  20 28 73 65 74 71 20 74 65 6d 70 65 72 61 74 75    72 65 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75  | .(setq.temperature.(gptel--to-nu | 
| a45c0 |  6d 62 65 72 20 74 65 6d 70 65 72 61 74 75 72 65    29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 74 6f  | mber.temperature))).....(when.to | 
| a45e0 |  6b 65 6e 73 20 28 73 65 74 71 20 74 6f 6b 65 6e    73 20 28 67 70 74 65 6c 2d 2d 74 6f 2d 6e 75 6d  | kens.(setq.tokens.(gptel--to-num | 
| a4600 |  62 65 72 20 74 6f 6b 65 6e 73 29 29 29 0a 20 20    20 20 28 77 68 65 6e 20 6e 75 6d 20 28 73 65 74  | ber.tokens))).....(when.num.(set | 
| a4620 |  71 20 6e 75 6d 20 28 67 70 74 65 6c 2d 2d 74 6f    2d 6e 75 6d 62 65 72 20 6e 75 6d 29 29 29 0a 20  | q.num.(gptel--to-number.num))).. | 
| a4640 |  20 20 20 28 6c 69 73 74 20 73 79 73 74 65 6d 20    62 61 63 6b 65 6e 64 20 6d 6f 64 65 6c 20 74 65  | ...(list.system.backend.model.te | 
| a4660 |  6d 70 65 72 61 74 75 72 65 20 74 6f 6b 65 6e 73    20 6e 75 6d 29 29 29 0a 0a 28 64 65 66 75 6e 20  | mperature.tokens.num)))..(defun. | 
| a4680 |  67 70 74 65 6c 2d 6f 72 67 2d 2d 72 65 73 74 6f    72 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 52  | gptel-org--restore-state.()..."R | 
| a46a0 |  65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 74 61    74 65 20 66 6f 72 20 4f 72 67 20 62 75 66 66 65  | estore.gptel.state.for.Org.buffe | 
| a46c0 |  72 73 20 77 68 65 6e 20 74 75 72 6e 69 6e 67 20    6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e  | rs.when.turning.on.`gptel-mode'. | 
| a46e0 |  22 0a 20 20 28 73 61 76 65 2d 72 65 73 74 72 69    63 74 69 6f 6e 0a 20 20 20 20 28 6c 65 74 20 28  | "...(save-restriction.....(let.( | 
| a4700 |  28 6d 6f 64 69 66 69 65 64 20 28 62 75 66 66 65    72 2d 6d 6f 64 69 66 69 65 64 2d 70 29 29 29 0a  | (modified.(buffer-modified-p))). | 
| a4720 |  20 20 20 20 20 20 28 77 69 64 65 6e 29 0a 20 20    20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63  | ......(widen).......(condition-c | 
| a4740 |  61 73 65 20 73 74 61 74 75 73 0a 20 20 20 20 20    20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20  | ase.status...........(progn..... | 
| a4760 |  20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65    74 2a 20 28 28 62 6f 75 6e 64 73 20 28 6f 72 67  | ........(when-let*.((bounds.(org | 
| a4780 |  2d 65 6e 74 72 79 2d 67 65 74 20 28 70 6f 69 6e    74 2d 6d 69 6e 29 20 22 47 50 54 45 4c 5f 42 4f  | -entry-get.(point-min)."GPTEL_BO | 
| a47a0 |  55 4e 44 53 22 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72  | UNDS")))...............(gptel--r | 
| a47c0 |  65 73 74 6f 72 65 2d 70 72 6f 70 73 20 28 72 65    61 64 20 62 6f 75 6e 64 73 29 29 29 0a 20 20 20  | estore-props.(read.bounds))).... | 
| a47e0 |  20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d    6c 65 74 20 28 28 60 28 2c 73 79 73 74 65 6d 20  | .........(pcase-let.((`(,system. | 
| a4800 |  2c 62 61 63 6b 65 6e 64 20 2c 6d 6f 64 65 6c 20    2c 74 65 6d 70 65 72 61 74 75 72 65 20 2c 74 6f  | ,backend.,model.,temperature.,to | 
| a4820 |  6b 65 6e 73 20 2c 6e 75 6d 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | kens.,num)...................... | 
| a4840 |  20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d    65 6e 74 72 79 2d 70 72 6f 70 65 72 74 69 65 73  | ....(gptel-org--entry-properties | 
| a4860 |  20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77  | .(point-min))))...............(w | 
| a4880 |  68 65 6e 20 73 79 73 74 65 6d 20 28 73 65 74 71    2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 73 79  | hen.system.(setq-local.gptel--sy | 
| a48a0 |  73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 73    74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20  | stem-message.system))........... | 
| a48c0 |  20 20 20 20 28 69 66 20 62 61 63 6b 65 6e 64 20    28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65  | ....(if.backend.(setq-local.gpte | 
| a48e0 |  6c 2d 62 61 63 6b 65 6e 64 20 62 61 63 6b 65 6e    64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | l-backend.backend).............. | 
| a4900 |  20 20 20 28 6d 65 73 73 61 67 65 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75  | ...(message..................(su | 
| a4920 |  62 73 74 69 74 75 74 65 2d 63 6f 6d 6d 61 6e 64    2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20  | bstitute-command-keys........... | 
| a4940 |  20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ........(concat................. | 
| a4960 |  20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 61 63    74 69 76 61 74 65 20 67 70 74 65 6c 20 62 61 63  | ..."Could.not.activate.gptel.bac | 
| a4980 |  6b 65 6e 64 20 5c 22 25 73 5c 22 21 20 20 22 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | kend.\"%s\"!.."................. | 
| a49a0 |  20 20 20 22 53 77 69 74 63 68 20 62 61 63 6b 65    6e 64 73 20 77 69 74 68 20 5c 5c 5b 75 6e 69 76  | ..."Switch.backends.with.\\[univ | 
| a49c0 |  65 72 73 61 6c 2d 61 72 67 75 6d 65 6e 74 5d 20    5c 5c 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 0a  | ersal-argument].\\[gptel-send]". | 
| a49e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 22 20 62 65 66 6f 72 65 20 75 73 69 6e  | ...................".before.usin | 
| a4a00 |  67 20 67 70 74 65 6c 2e 22 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63  | g.gptel."))..................bac | 
| a4a20 |  6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 77 68 65 6e 20 6d 6f 64 65 6c  | kend))...............(when.model | 
| a4a40 |  20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74    65 6c 2d 6d 6f 64 65 6c 20 6d 6f 64 65 6c 29 29  | .(setq-local.gptel-model.model)) | 
| a4a60 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    77 68 65 6e 20 74 65 6d 70 65 72 61 74 75 72 65  | ...............(when.temperature | 
| a4a80 |  20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74    65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 74  | .(setq-local.gptel-temperature.t | 
| a4aa0 |  65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e  | emperature))...............(when | 
| a4ac0 |  20 74 6f 6b 65 6e 73 20 28 73 65 74 71 2d 6c 6f    63 61 6c 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f  | .tokens.(setq-local.gptel-max-to | 
| a4ae0 |  6b 65 6e 73 20 74 6f 6b 65 6e 73 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65  | kens.tokens))...............(whe | 
| a4b00 |  6e 20 6e 75 6d 20 28 73 65 74 71 2d 6c 6f 63 61    6c 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73  | n.num.(setq-local.gptel--num-mes | 
| a4b20 |  73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 20 6e 75    6d 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 3a  | sages-to-send.num)))).........(: | 
| a4b40 |  73 75 63 63 65 73 73 20 28 6d 65 73 73 61 67 65    20 22 67 70 74 65 6c 20 63 68 61 74 20 72 65 73  | success.(message."gptel.chat.res | 
| a4b60 |  74 6f 72 65 64 2e 22 29 29 0a 20 20 20 20 20 20    20 20 28 65 72 72 6f 72 20 28 6d 65 73 73 61 67  | tored.")).........(error.(messag | 
| a4b80 |  65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 73    74 6f 72 65 20 67 70 74 65 6c 20 73 74 61 74 65  | e."Could.not.restore.gptel.state | 
| a4ba0 |  2c 20 73 6f 72 72 79 21 20 45 72 72 6f 72 3a 20    25 73 22 20 73 74 61 74 75 73 29 29 29 0a 20 20  | ,.sorry!.Error:.%s".status)))... | 
| a4bc0 |  20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d    6d 6f 64 69 66 69 65 64 2d 70 20 6d 6f 64 69 66  | ....(set-buffer-modified-p.modif | 
| a4be0 |  69 65 64 29 29 29 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 70 72  | ied))))..(defun.gptel-org-set-pr | 
| a4c00 |  6f 70 65 72 74 69 65 73 20 28 70 74 20 26 6f 70    74 69 6f 6e 61 6c 20 6d 73 67 29 0a 20 20 22 53  | operties.(pt.&optional.msg)..."S | 
| a4c20 |  74 6f 72 65 20 74 68 65 20 61 63 74 69 76 65 20    67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74  | tore.the.active.gptel.configurat | 
| a4c40 |  69 6f 6e 20 75 6e 64 65 72 20 74 68 65 20 63 75    72 72 65 6e 74 20 68 65 61 64 69 6e 67 2e 0a 0a  | ion.under.the.current.heading... | 
| a4c60 |  54 68 65 20 61 63 74 69 76 65 20 67 70 74 65 6c    20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 69  | The.active.gptel.configuration.i | 
| a4c80 |  6e 63 6c 75 64 65 73 20 74 68 65 20 63 75 72 72    65 6e 74 20 73 79 73 74 65 6d 0a 6d 65 73 73 61  | ncludes.the.current.system.messa | 
| a4ca0 |  67 65 2c 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64    65 6c 20 61 6e 64 20 70 72 6f 76 69 64 65 72 20  | ge,.language.model.and.provider. | 
| a4cc0 |  28 62 61 63 6b 65 6e 64 29 2c 20 61 6e 64 20 61    64 64 69 74 69 6f 6e 61 6c 0a 73 65 74 74 69 6e  | (backend),.and.additional.settin | 
| a4ce0 |  67 73 20 77 68 65 6e 20 61 70 70 6c 69 63 61 62    6c 65 2e 0a 0a 50 54 20 69 73 20 74 68 65 20 63  | gs.when.applicable...PT.is.the.c | 
| a4d00 |  75 72 73 6f 72 20 70 6f 73 69 74 69 6f 6e 20 62    79 20 64 65 66 61 75 6c 74 2e 20 20 49 66 20 4d  | ursor.position.by.default...If.M | 
| a4d20 |  53 47 20 69 73 0a 6e 6f 6e 2d 6e 69 6c 20 28 64    65 66 61 75 6c 74 29 2c 20 64 69 73 70 6c 61 79  | SG.is.non-nil.(default),.display | 
| a4d40 |  20 61 20 6d 65 73 73 61 67 65 20 61 66 74 65 72    77 61 72 64 73 2e 22 0a 20 20 28 69 6e 74 65 72  | .a.message.afterwards."...(inter | 
| a4d60 |  61 63 74 69 76 65 20 28 6c 69 73 74 20 28 70 6f    69 6e 74 29 20 74 29 29 0a 20 20 28 6f 72 67 2d  | active.(list.(point).t))...(org- | 
| a4d80 |  65 6e 74 72 79 2d 70 75 74 20 70 74 20 22 47 50    54 45 4c 5f 4d 4f 44 45 4c 22 20 28 67 70 74 65  | entry-put.pt."GPTEL_MODEL".(gpte | 
| a4da0 |  6c 2d 2d 6d 6f 64 65 6c 2d 6e 61 6d 65 20 67 70    74 65 6c 2d 6d 6f 64 65 6c 29 29 0a 20 20 28 6f  | l--model-name.gptel-model))...(o | 
| a4dc0 |  72 67 2d 65 6e 74 72 79 2d 70 75 74 20 70 74 20    22 47 50 54 45 4c 5f 42 41 43 4b 45 4e 44 22 20  | rg-entry-put.pt."GPTEL_BACKEND". | 
| a4de0 |  28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e    61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e  | (gptel-backend-name.gptel-backen | 
| a4e00 |  64 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 65    71 75 61 6c 20 28 64 65 66 61 75 6c 74 2d 76 61  | d))...(unless.(equal.(default-va | 
| a4e20 |  6c 75 65 20 27 67 70 74 65 6c 2d 74 65 6d 70 65    72 61 74 75 72 65 29 20 67 70 74 65 6c 2d 74 65  | lue.'gptel-temperature).gptel-te | 
| a4e40 |  6d 70 65 72 61 74 75 72 65 29 0a 20 20 20 20 28    6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 20 70 74  | mperature).....(org-entry-put.pt | 
| a4e60 |  20 22 47 50 54 45 4c 5f 54 45 4d 50 45 52 41 54    55 52 45 22 0a 20 20 20 20 20 20 20 20 20 20 20  | ."GPTEL_TEMPERATURE"............ | 
| a4e80 |  20 20 20 20 20 20 20 20 28 6e 75 6d 62 65 72 2d    74 6f 2d 73 74 72 69 6e 67 20 67 70 74 65 6c 2d  | ........(number-to-string.gptel- | 
| a4ea0 |  74 65 6d 70 65 72 61 74 75 72 65 29 29 29 0a 20    20 28 77 68 65 6e 20 28 6e 61 74 6e 75 6d 70 20  | temperature)))...(when.(natnump. | 
| a4ec0 |  67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61    67 65 73 2d 74 6f 2d 73 65 6e 64 29 0a 20 20 20  | gptel--num-messages-to-send).... | 
| a4ee0 |  20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 20    70 74 20 22 47 50 54 45 4c 5f 4e 55 4d 5f 4d 45  | .(org-entry-put.pt."GPTEL_NUM_ME | 
| a4f00 |  53 53 41 47 45 53 5f 54 4f 5f 53 45 4e 44 22 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | SSAGES_TO_SEND"................. | 
| a4f20 |  20 20 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74    72 69 6e 67 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d  | ...(number-to-string.gptel--num- | 
| a4f40 |  6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64    29 29 29 0a 20 20 28 6f 72 67 2d 65 6e 74 72 79  | messages-to-send)))...(org-entry | 
| a4f60 |  2d 70 75 74 20 70 74 20 22 47 50 54 45 4c 5f 53    59 53 54 45 4d 22 0a 20 20 20 20 20 20 20 20 20  | -put.pt."GPTEL_SYSTEM".......... | 
| a4f80 |  20 20 20 20 20 20 20 20 28 61 6e 64 2d 6c 65 74    2a 20 28 28 6d 73 67 20 28 63 61 72 2d 73 61 66  | ........(and-let*.((msg.(car-saf | 
| a4fa0 |  65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e............................... | 
| a4fc0 |  20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73    65 2d 64 69 72 65 63 74 69 76 65 0a 20 20 20 20  | ....(gptel--parse-directive..... | 
| a4fe0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67  | ...............................g | 
| a5000 |  70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73    73 61 67 65 29 29 29 29 0a 20 20 20 20 20 20 20  | ptel--system-message))))........ | 
| a5020 |  20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72    69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22  | ............(string-replace."\n" | 
| a5040 |  20 22 5c 5c 6e 22 20 6d 73 67 29 29 29 0a 20 20    28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d  | ."\\n".msg)))...(when.gptel-max- | 
| a5060 |  74 6f 6b 65 6e 73 0a 20 20 20 20 28 6f 72 67 2d    65 6e 74 72 79 2d 70 75 74 0a 20 20 20 20 20 70  | tokens.....(org-entry-put......p | 
| a5080 |  74 20 22 47 50 54 45 4c 5f 4d 41 58 5f 54 4f 4b    45 4e 53 22 20 28 6e 75 6d 62 65 72 2d 74 6f 2d  | t."GPTEL_MAX_TOKENS".(number-to- | 
| a50a0 |  73 74 72 69 6e 67 20 67 70 74 65 6c 2d 6d 61 78    2d 74 6f 6b 65 6e 73 29 29 29 0a 20 20 28 77 68  | string.gptel-max-tokens)))...(wh | 
| a50c0 |  65 6e 20 6d 73 67 0a 20 20 20 20 28 6d 65 73 73    61 67 65 20 22 41 64 64 65 64 20 67 70 74 65 6c  | en.msg.....(message."Added.gptel | 
| a50e0 |  20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 74    6f 20 63 75 72 72 65 6e 74 20 68 65 61 64 6c 69  | .configuration.to.current.headli | 
| a5100 |  6e 65 2e 22 29 29 29 0a 0a 28 64 65 66 75 6e 20    67 70 74 65 6c 2d 6f 72 67 2d 2d 73 61 76 65 2d  | ne.")))..(defun.gptel-org--save- | 
| a5120 |  73 74 61 74 65 20 28 29 0a 20 20 22 57 72 69 74    65 20 74 68 65 20 67 70 74 65 6c 20 73 74 61 74  | state.()..."Write.the.gptel.stat | 
| a5140 |  65 20 74 6f 20 74 68 65 20 4f 72 67 20 62 75 66    66 65 72 20 61 73 20 4f 72 67 20 70 72 6f 70 65  | e.to.the.Org.buffer.as.Org.prope | 
| a5160 |  72 74 69 65 73 2e 22 0a 20 20 28 6f 72 67 2d 77    69 74 68 2d 77 69 64 65 2d 62 75 66 66 65 72 0a  | rties."...(org-with-wide-buffer. | 
| a5180 |  20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70    6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 28 77  | ...(goto-char.(point-min))....(w | 
| a51a0 |  68 65 6e 20 28 6f 72 67 2d 61 74 2d 68 65 61 64    69 6e 67 2d 70 29 0a 20 20 20 20 20 28 6f 72 67  | hen.(org-at-heading-p)......(org | 
| a51c0 |  2d 6f 70 65 6e 2d 6c 69 6e 65 20 31 29 29 0a 20    20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74  | -open-line.1))....(gptel-org-set | 
| a51e0 |  2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69    6e 74 2d 6d 69 6e 29 29 0a 20 20 20 3b 3b 20 53  | -properties.(point-min))....;;.S | 
| a5200 |  61 76 65 20 72 65 73 70 6f 6e 73 65 20 62 6f 75    6e 64 61 72 69 65 73 0a 20 20 20 28 6c 65 74 72  | ave.response.boundaries....(letr | 
| a5220 |  65 63 20 28 28 77 72 69 74 65 2d 62 6f 75 6e 64    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ec.((write-bounds..............( | 
| a5240 |  6c 61 6d 62 64 61 20 28 61 74 74 65 6d 70 74 73    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lambda.(attempts)............... | 
| a5260 |  20 28 6c 65 74 2a 20 28 28 62 6f 75 6e 64 73 20    28 67 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66  | .(let*.((bounds.(gptel--get-buff | 
| a5280 |  65 72 2d 62 6f 75 6e 64 73 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | er-bounds))..................... | 
| a52a0 |  20 20 3b 3b 20 66 69 72 73 74 20 76 61 6c 75 65    20 6f 66 20 28 28 70 72 6f 70 20 2e 20 28 28 62  | ..;;.first.value.of.((prop...((b | 
| a52c0 |  65 67 20 65 6e 64 20 76 61 6c 29 2e 2e 2e 29 29    2e 2e 2e 29 0a 20 20 20 20 20 20 20 20 20 20 20  | eg.end.val)...))...)............ | 
| a52e0 |  20 20 20 20 20 20 20 20 20 20 20 28 6f 66 66 73    65 74 20 28 63 61 61 64 61 72 20 62 6f 75 6e 64  | ...........(offset.(caadar.bound | 
| a5300 |  73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 6f 66 66 73 65  | s)).......................(offse | 
| a5320 |  74 2d 6d 61 72 6b 65 72 20 28 73 65 74 2d 6d 61    72 6b 65 72 20 28 6d 61 6b 65 2d 6d 61 72 6b 65  | t-marker.(set-marker.(make-marke | 
| a5340 |  72 29 20 6f 66 66 73 65 74 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f  | r).offset)))..................(o | 
| a5360 |  72 67 2d 65 6e 74 72 79 2d 70 75 74 20 28 70 6f    69 6e 74 2d 6d 69 6e 29 20 22 47 50 54 45 4c 5f  | rg-entry-put.(point-min)."GPTEL_ | 
| a5380 |  42 4f 55 4e 44 53 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | BOUNDS"......................... | 
| a53a0 |  20 20 20 20 20 20 20 20 28 70 72 69 6e 31 2d 74    6f 2d 73 74 72 69 6e 67 20 28 67 70 74 65 6c 2d  | ........(prin1-to-string.(gptel- | 
| a53c0 |  2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e    64 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | -get-buffer-bounds)))........... | 
| a53e0 |  20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e    64 20 28 6e 6f 74 20 28 3d 20 28 6d 61 72 6b 65  | .......(when.(and.(not.(=.(marke | 
| a5400 |  72 2d 70 6f 73 69 74 69 6f 6e 20 6f 66 66 73 65    74 2d 6d 61 72 6b 65 72 29 20 6f 66 66 73 65 74  | r-position.offset-marker).offset | 
| a5420 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | )).............................( | 
| a5440 |  3e 20 61 74 74 65 6d 70 74 73 20 30 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | >.attempts.0)).................. | 
| a5460 |  20 20 28 66 75 6e 63 61 6c 6c 20 77 72 69 74 65    2d 62 6f 75 6e 64 73 20 28 31 2d 20 61 74 74 65  | ..(funcall.write-bounds.(1-.atte | 
| a5480 |  6d 70 74 73 29 29 29 29 29 29 29 0a 20 20 20 20    20 28 66 75 6e 63 61 6c 6c 20 77 72 69 74 65 2d  | mpts)))))))......(funcall.write- | 
| a54a0 |  62 6f 75 6e 64 73 20 36 29 29 29 29 0a 0a 0c 0a    3b 3b 3b 20 54 72 61 6e 73 66 6f 72 6d 69 6e 67  | bounds.6))))....;;;.Transforming | 
| a54c0 |  20 72 65 73 70 6f 6e 73 65 73 0a 3b 3b 3b 23 23    23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e  | .responses.;;;###autoload.(defun | 
| a54e0 |  20 67 70 74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d    6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 20 28 73  | .gptel--convert-markdown->org.(s | 
| a5500 |  74 72 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 73    74 72 69 6e 67 20 53 54 52 20 66 72 6f 6d 20 6d  | tr)..."Convert.string.STR.from.m | 
| a5520 |  61 72 6b 64 6f 77 6e 20 74 6f 20 6f 72 67 20 6d    61 72 6b 75 70 2e 0a 0a 54 68 69 73 20 69 73 20  | arkdown.to.org.markup...This.is. | 
| a5540 |  61 20 76 65 72 79 20 62 61 73 69 63 20 63 6f 6e    76 65 72 74 65 72 20 74 68 61 74 20 68 61 6e 64  | a.very.basic.converter.that.hand | 
| a5560 |  6c 65 73 20 6f 6e 6c 79 20 61 20 66 65 77 20 6d    61 72 6b 75 70 0a 65 6c 65 6d 65 6e 74 73 2e 22  | les.only.a.few.markup.elements." | 
| a5580 |  0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75    66 66 65 72 0a 20 20 20 20 28 69 6e 73 65 72 74  | ...(with-temp-buffer.....(insert | 
| a55a0 |  20 73 74 72 29 0a 20 20 20 20 28 67 6f 74 6f 2d    63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29  | .str).....(goto-char.(point-min) | 
| a55c0 |  29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 72 65    2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20  | ).....(while.(re-search-forward. | 
| a55e0 |  22 60 2b 5c 5c 7c 5c 5c 2a 5c 5c 7b 31 2c 32 5c    5c 7d 5c 5c 7c 5f 5c 5c 7c 5e 23 2b 22 20 6e 69  | "`+\\|\\*\\{1,2\\}\\|_\\|^#+".ni | 
| a5600 |  6c 20 74 29 0a 20 20 20 20 20 20 28 70 63 61 73    65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20  | l.t).......(pcase.(match-string. | 
| a5620 |  30 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 61    6e 64 6c 65 20 62 61 63 6b 74 69 63 6b 73 0a 20  | 0).........;;.Handle.backticks.. | 
| a5640 |  20 20 20 20 20 20 20 28 28 61 6e 64 20 28 67 75    61 72 64 20 28 65 71 20 28 63 68 61 72 2d 62 65  | .......((and.(guard.(eq.(char-be | 
| a5660 |  66 6f 72 65 29 20 3f 60 29 29 20 74 69 63 6b 73    29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65  | fore).?`)).ticks)..........(gpte | 
| a5680 |  6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63    65 2d 6d 61 72 6b 65 72 20 28 6c 65 6e 67 74 68  | l--replace-source-marker.(length | 
| a56a0 |  20 74 69 63 6b 73 29 29 0a 20 20 20 20 20 20 20    20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61  | .ticks))..........(save-match-da | 
| a56c0 |  74 61 0a 20 20 20 20 20 20 20 20 20 20 20 28 63    61 74 63 68 20 27 62 6c 6f 63 6b 2d 65 6e 64 0a  | ta............(catch.'block-end. | 
| a56e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68    69 6c 65 20 28 73 65 61 72 63 68 2d 66 6f 72 77  | .............(while.(search-forw | 
| a5700 |  61 72 64 20 74 69 63 6b 73 20 6e 69 6c 20 74 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ard.ticks.nil.t)................ | 
| a5720 |  28 75 6e 6c 65 73 73 20 28 6f 72 20 28 65 71 20    28 63 68 61 72 2d 62 65 66 6f 72 65 20 28 6d 61  | (unless.(or.(eq.(char-before.(ma | 
| a5740 |  74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29    29 20 3f 60 29 0a 20 20 20 20 20 20 20 20 20 20  | tch-beginning.0)).?`)........... | 
| a5760 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 65 71 20 28 63 68 61 72 2d 61 66 74 65 72  | .................(eq.(char-after | 
| a5780 |  29 20 3f 60 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d  | ).?`))..................(gptel-- | 
| a57a0 |  72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d    61 72 6b 65 72 20 28 6c 65 6e 67 74 68 20 74 69  | replace-source-marker.(length.ti | 
| a57c0 |  63 6b 73 29 20 27 65 6e 64 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72  | cks).'end)..................(thr | 
| a57e0 |  6f 77 20 27 62 6c 6f 63 6b 2d 65 6e 64 20 6e 69    6c 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20  | ow.'block-end.nil))))))......... | 
| a5800 |  3b 3b 20 48 61 6e 64 6c 65 20 68 65 61 64 69 6e    67 73 0a 20 20 20 20 20 20 20 20 28 28 61 6e 64  | ;;.Handle.headings.........((and | 
| a5820 |  20 28 67 75 61 72 64 20 28 65 71 20 28 63 68 61    72 2d 62 65 66 6f 72 65 29 20 3f 23 29 29 20 68  | .(guard.(eq.(char-before).?#)).h | 
| a5840 |  65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20    20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20  | eading)..........(cond.......... | 
| a5860 |  20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5b    5b 3a 73 70 61 63 65 3a 5d 5d 22 29 20 20 20 3b  | .((looking-at."[[:space:]]")...; | 
| a5880 |  48 61 6e 64 6c 65 20 68 65 61 64 69 6e 67 73 0a    20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65  | Handle.headings............(dele | 
| a58a0 |  74 65 2d 72 65 67 69 6f 6e 20 28 6c 69 6e 65 2d    62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69  | te-region.(line-beginning-positi | 
| a58c0 |  6f 6e 29 20 28 70 6f 69 6e 74 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20  | on).(point))............(insert. | 
| a58e0 |  28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 6c 65    6e 67 74 68 20 68 65 61 64 69 6e 67 29 20 3f 2a  | (make-string.(length.heading).?* | 
| a5900 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28    6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2b 62  | )))...........((looking-at."\\+b | 
| a5920 |  65 67 69 6e 5f 73 72 63 22 29 20 3b 4f 76 65 72    65 61 67 65 72 20 4c 4c 4d 20 73 77 69 74 63 68  | egin_src").;Overeager.LLM.switch | 
| a5940 |  65 64 20 74 6f 20 75 73 69 6e 67 20 4f 72 67 20    73 72 63 20 62 6c 6f 63 6b 73 0a 20 20 20 20 20  | ed.to.using.Org.src.blocks...... | 
| a5960 |  20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63    68 2d 64 61 74 61 20 28 72 65 2d 73 65 61 72 63  | ......(save-match-data.(re-searc | 
| a5980 |  68 2d 66 6f 72 77 61 72 64 20 22 5e 23 5c 5c 2b    65 6e 64 5f 73 72 63 22 20 6e 69 6c 20 74 29 29  | h-forward."^#\\+end_src".nil.t)) | 
| a59a0 |  29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48    61 6e 64 6c 65 20 65 6d 70 68 61 73 69 73 0a 20  | ))).........;;.Handle.emphasis.. | 
| a59c0 |  20 20 20 20 20 20 20 28 22 2a 2a 22 20 28 63 6f    6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .......("**".(cond.............. | 
| a59e0 |  20 20 3b 3b 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61    74 20 22 5c 5c 2a 5c 5c 28 3f 3a 5b 5b 3a 77 6f  | ..;;.((looking-at."\\*\\(?:[[:wo | 
| a5a00 |  72 64 3a 5d 5d 5c 5c 7c 5c 73 5c 5c 29 22 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b  | rd:]]\\|\s\\)")................; | 
| a5a20 |  3b 20 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20    31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ;..(delete-char.1))............. | 
| a5a40 |  20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63    6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a  | ...((looking-back."\\(?:[[:word: | 
| a5a60 |  5d 5b 3a 70 75 6e 63 74 3a 5d 5c 6e 5d 5c 5c 7c    5c 73 5c 5c 29 5c 5c 2a 5c 5c 7b 32 5c 5c 7d 22  | ][:punct:]\n]\\|\s\\)\\*\\{2\\}" | 
| a5a80 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| a5aa0 |  6d 61 78 20 28 2d 20 28 70 6f 69 6e 74 29 20 33    29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a  | max.(-.(point).3).(point-min))). | 
| a5ac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31 29  | ................(delete-char.-1) | 
| a5ae0 |  29 29 29 0a 20 20 20 20 20 20 20 20 28 22 2a 22    0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a  | ))).........("*"..........(cond. | 
| a5b00 |  20 20 20 20 20 20 20 20 20 20 28 28 73 61 76 65    2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20  | ..........((save-match-data..... | 
| a5b20 |  20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 6f    72 20 28 3d 20 28 70 6f 69 6e 74 29 20 32 29 0a  | .........(and.(or.(=.(point).2). | 
| a5b40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 62  | ......................(looking-b | 
| a5b60 |  61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61    63 65 3a 5d 5d 5c 5c 7c 5c 73 5c 5c 29 5c 5c 28  | ack."\\(?:[[:space:]]\\|\s\\)\\( | 
| a5b80 |  3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ?:_\\|\\*\\)"................... | 
| a5ba0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6d 61 78 20 28 2d 20 28 70 6f 69 6e 74  | ..................(max.(-.(point | 
| a5bc0 |  29 20 32 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ).2).(point-min))))............. | 
| a5be0 |  20 20 20 20 20 20 28 6e 6f 74 20 28 6c 6f 6f 6b    69 6e 67 2d 61 74 20 22 5b 5b 3a 73 70 61 63 65  | ......(not.(looking-at."[[:space | 
| a5c00 |  3a 5d 5d 5c 5c 7c 5c 73 22 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 3b 3b 20 50 6f 73 73  | :]]\\|\s"))))............;;.Poss | 
| a5c20 |  69 62 6c 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f    66 20 65 6d 70 68 61 73 69 73 0a 20 20 20 20 20  | ible.beginning.of.emphasis...... | 
| a5c40 |  20 20 20 20 20 20 28 61 6e 64 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63  | ......(and.............(save-exc | 
| a5c60 |  75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20  | ursion...............(when.(and. | 
| a5c80 |  28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61    72 64 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65  | (re-search-forward.(regexp-quote | 
| a5ca0 |  20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(match-string.0)).............. | 
| a5cc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| a5ce0 |  6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f    6e 29 20 74 29 0a 20 20 20 20 20 20 20 20 20 20  | line-end-position).t)........... | 
| a5d00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5b 5b 3a 73  | ...............(looking-at."[[:s | 
| a5d20 |  70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5d    5c 5c 7c 5c 73 22 29 0a 20 20 20 20 20 20 20 20  | pace:][:punct:]]\\|\s")......... | 
| a5d40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6e 6f 74 20 28 6c 6f 6f 6b 69 6e 67 2d 62  | .................(not.(looking-b | 
| a5d60 |  61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61    63 65 5d 5d 5c 5c 7c 5c 73 5c 5c 29 5c 5c 28 3f  | ack."\\(?:[[:space]]\\|\s\\)\\(? | 
| a5d80 |  3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 22 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | :_\\|\\*\\)".................... | 
| a5da0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 2d  | .........................(max.(- | 
| a5dc0 |  20 28 70 6f 69 6e 74 29 20 32 29 20 28 70 6f 69    6e 74 2d 6d 69 6e 29 29 29 29 29 0a 20 20 20 20  | .(point).2).(point-min)))))..... | 
| a5de0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c    65 74 65 2d 63 68 61 72 20 2d 31 29 20 28 69 6e  | ............(delete-char.-1).(in | 
| a5e00 |  73 65 72 74 20 22 2f 22 29 20 74 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e  | sert."/").t)).............(progn | 
| a5e20 |  20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31    29 20 28 69 6e 73 65 72 74 20 22 2f 22 29 29 29  | .(delete-char.-1).(insert."/"))) | 
| a5e40 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 28 73 61    76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20  | )...........((save-excursion.... | 
| a5e60 |  20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72    65 2d 65 72 72 6f 72 73 20 28 62 61 63 6b 77 61  | ..........(ignore-errors.(backwa | 
| a5e80 |  72 64 2d 63 68 61 72 20 32 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6f 72 20 28 61 6e  | rd-char.2))..............(or.(an | 
| a5ea0 |  64 20 28 62 6f 62 70 29 20 28 6c 6f 6f 6b 69 6e    67 2d 61 74 20 22 5c 5c 2a 5b 5b 3a 73 70 61 63  | d.(bobp).(looking-at."\\*[[:spac | 
| a5ec0 |  65 3a 5d 5d 22 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e  | e:]]"))..................(lookin | 
| a5ee0 |  67 2d 61 74 20 22 5c 5c 28 3f 3a 24 5c 5c 7c 5c    5c 60 5c 5c 29 5c 6e 5c 5c 2a 5b 5b 3a 73 70 61  | g-at."\\(?:$\\|\\`\\)\n\\*[[:spa | 
| a5f00 |  63 65 3a 5d 5d 22 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 42 75 6c 6c 65 74 20 70  | ce:]]")))............;;.Bullet.p | 
| a5f20 |  6f 69 6e 74 2c 20 72 65 70 6c 61 63 65 20 77 69    74 68 20 68 79 70 68 65 6e 0a 20 20 20 20 20 20  | oint,.replace.with.hyphen....... | 
| a5f40 |  20 20 20 20 20 28 64 65 6c 65 74 65 2d 63 68 61    72 20 2d 31 29 20 28 69 6e 73 65 72 74 20 22 2d  | .....(delete-char.-1).(insert."- | 
| a5f60 |  22 29 29 29 29 29 29 0a 20 20 20 20 28 62 75 66    66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 0a 28  | ")))))).....(buffer-string)))..( | 
| a5f80 |  64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 70    6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d 61 72 6b  | defun.gptel--replace-source-mark | 
| a5fa0 |  65 72 20 28 6e 75 6d 2d 74 69 63 6b 73 20 26 6f    70 74 69 6f 6e 61 6c 20 65 6e 64 29 0a 20 20 22  | er.(num-ticks.&optional.end)..." | 
| a5fc0 |  52 65 70 6c 61 63 65 20 6d 61 72 6b 64 6f 77 6e    20 73 74 79 6c 65 20 62 61 63 6b 74 69 63 6b 73  | Replace.markdown.style.backticks | 
| a5fe0 |  20 77 69 74 68 20 4f 72 67 20 65 71 75 69 76 61    6c 65 6e 74 73 2e 0a 0a 4e 55 4d 2d 54 49 43 4b  | .with.Org.equivalents...NUM-TICK | 
| a6000 |  53 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20    6f 66 20 62 61 63 6b 74 69 63 6b 73 20 62 65 69  | S.is.the.number.of.backticks.bei | 
| a6020 |  6e 67 20 72 65 70 6c 61 63 65 64 2e 20 20 49 66    20 45 4e 44 20 69 73 0a 74 72 75 65 20 74 68 65  | ng.replaced...If.END.is.true.the | 
| a6040 |  73 65 20 61 72 65 20 5c 22 65 6e 64 69 6e 67 5c    22 20 62 61 63 6b 74 69 63 6b 73 2e 0a 0a 54 68  | se.are.\"ending\".backticks...Th | 
| a6060 |  69 73 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66    6f 72 20 75 73 65 20 69 6e 20 74 68 65 20 6d 61  | is.is.intended.for.use.in.the.ma | 
| a6080 |  72 6b 64 6f 77 6e 20 74 6f 20 6f 72 67 20 73 74    72 65 61 6d 20 63 6f 6e 76 65 72 74 65 72 2e 22  | rkdown.to.org.stream.converter." | 
| a60a0 |  0a 20 20 28 6c 65 74 20 28 28 66 72 6f 6d 20 28    6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20  | ...(let.((from.(match-beginning. | 
| a60c0 |  30 29 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65    2d 72 65 67 69 6f 6e 20 66 72 6f 6d 20 28 70 6f  | 0))).....(delete-region.from.(po | 
| a60e0 |  69 6e 74 29 29 0a 20 20 20 20 28 69 66 20 28 61    6e 64 20 28 3d 20 6e 75 6d 2d 74 69 63 6b 73 20  | int)).....(if.(and.(=.num-ticks. | 
| a6100 |  33 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20  | 3)..............(save-excursion. | 
| a6120 |  28 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 6c 69    6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | (beginning-of-line)............. | 
| a6140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72  | .................(skip-chars-for | 
| a6160 |  77 61 72 64 20 22 20 5c 74 22 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ward.".\t")..................... | 
| a6180 |  20 20 20 20 20 20 20 20 20 28 65 71 20 28 70 6f    69 6e 74 29 20 66 72 6f 6d 29 29 29 0a 20 20 20  | .........(eq.(point).from))).... | 
| a61a0 |  20 20 20 20 20 28 69 6e 73 65 72 74 20 28 69 66    20 65 6e 64 20 22 23 2b 65 6e 64 5f 73 72 63 22  | .....(insert.(if.end."#+end_src" | 
| a61c0 |  20 22 23 2b 62 65 67 69 6e 5f 73 72 63 20 22 29    29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20  | ."#+begin_src.")).......(insert. | 
| a61e0 |  22 3d 22 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61    75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67  | "="))))..;;;###autoload.(defun.g | 
| a6200 |  70 74 65 6c 2d 2d 73 74 72 65 61 6d 2d 63 6f 6e    76 65 72 74 2d 6d 61 72 6b 64 6f 77 6e 2d 3e 6f  | ptel--stream-convert-markdown->o | 
| a6220 |  72 67 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72    29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 4d 61  | rg.(start-marker)..."Return.a.Ma | 
| a6240 |  72 6b 64 6f 77 6e 20 74 6f 20 4f 72 67 20 63 6f    6e 76 65 72 74 65 72 2e 0a 0a 54 68 69 73 20 66  | rkdown.to.Org.converter...This.f | 
| a6260 |  75 6e 63 74 69 6f 6e 20 70 61 72 73 65 73 20 61    20 73 74 72 65 61 6d 20 6f 66 20 4d 61 72 6b 64  | unction.parses.a.stream.of.Markd | 
| a6280 |  6f 77 6e 20 74 65 78 74 20 74 6f 20 4f 72 67 0a    63 6f 6e 74 69 6e 75 6f 75 73 6c 79 20 77 68 65  | own.text.to.Org.continuously.whe | 
| a62a0 |  6e 20 69 74 20 69 73 20 63 61 6c 6c 65 64 20 77    69 74 68 20 73 75 63 63 65 73 73 69 76 65 20 63  | n.it.is.called.with.successive.c | 
| a62c0 |  68 75 6e 6b 73 20 6f 66 20 74 68 65 0a 74 65 78    74 20 73 74 72 65 61 6d 2e 0a 0a 53 54 41 52 54  | hunks.of.the.text.stream...START | 
| a62e0 |  2d 4d 41 52 4b 45 52 20 69 73 20 75 73 65 64 20    74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  | -MARKER.is.used.to.identify.the. | 
| a6300 |  63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 70 72    6f 63 65 73 73 20 77 68 65 6e 0a 63 6c 65 61 6e  | corresponding.process.when.clean | 
| a6320 |  69 6e 67 20 75 70 20 61 66 74 65 72 2e 22 0a 20    20 28 6c 65 74 72 65 63 20 28 28 69 6e 2d 73 72  | ing.up.after."...(letrec.((in-sr | 
| a6340 |  63 2d 62 6c 6f 63 6b 20 6e 69 6c 29 20 20 20 20    20 20 20 20 20 20 20 3b 65 78 70 6c 69 63 69 74  | c-block.nil)...........;explicit | 
| a6360 |  20 6e 69 6c 20 74 6f 20 61 64 64 72 65 73 73 20    42 55 47 20 23 31 38 33 0a 20 20 20 20 20 20 20  | .nil.to.address.BUG.#183........ | 
| a6380 |  20 20 20 20 28 69 6e 2d 6f 72 67 2d 73 72 63 2d    62 6c 6f 63 6b 20 6e 69 6c 29 0a 20 20 20 20 20  | ....(in-org-src-block.nil)...... | 
| a63a0 |  20 20 20 20 20 20 28 74 65 6d 70 2d 62 75 66 20    3b 20 4e 4f 54 45 3a 20 53 77 69 74 63 68 20 74  | ......(temp-buf.;.NOTE:.Switch.t | 
| a63c0 |  6f 20 60 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d    62 75 66 66 65 72 27 20 61 66 74 65 72 20 77 65  | o.`generate-new-buffer'.after.we | 
| a63e0 |  20 64 72 6f 70 20 45 6d 61 63 73 20 32 37 2e 31    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70  | .drop.Emacs.27.1.............(gp | 
| a6400 |  74 65 6c 2d 2d 74 65 6d 70 2d 62 75 66 66 65 72    20 22 20 2a 67 70 74 65 6c 2d 74 65 6d 70 2a 22  | tel--temp-buffer.".*gptel-temp*" | 
| a6420 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73    74 61 72 74 2d 70 74 20 28 6d 61 6b 65 2d 6d 61  | ))............(start-pt.(make-ma | 
| a6440 |  72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 28 74 69 63 6b 73 2d 74 6f 74 61 6c 20 30  | rker))............(ticks-total.0 | 
| a6460 |  29 20 20 20 20 20 20 3b 4d 41 59 42 45 20 73 68    6f 75 6c 64 20 77 65 20 6c 65 74 2d 62 69 6e 64  | )......;MAYBE.should.we.let-bind | 
| a6480 |  20 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63    68 20 68 65 72 65 3f 0a 20 20 20 20 20 20 20 20  | .case-fold-search.here?......... | 
| a64a0 |  20 20 20 28 63 6c 65 61 6e 75 70 2d 66 6e 0a 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62  | ...(cleanup-fn.............(lamb | 
| a64c0 |  64 61 20 28 62 65 67 20 5f 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28  | da.(beg._)...............(when.( | 
| a64e0 |  61 6e 64 20 28 65 71 75 61 6c 20 62 65 67 20 28    6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20  | and.(equal.beg.(marker-position. | 
| a6500 |  73 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | start-marker)).................. | 
| a6520 |  20 20 20 20 20 20 20 20 28 65 71 20 28 63 75 72    72 65 6e 74 2d 62 75 66 66 65 72 29 20 28 6d 61  | ........(eq.(current-buffer).(ma | 
| a6540 |  72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72    74 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20  | rker-buffer.start-marker)))..... | 
| a6560 |  20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65    6e 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70  | ............(when.(buffer-live-p | 
| a6580 |  20 28 67 65 74 2d 62 75 66 66 65 72 20 74 65 6d    70 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20  | .(get-buffer.temp-buf))......... | 
| a65a0 |  20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d    61 72 6b 65 72 20 73 74 61 72 74 2d 70 74 20 6e  | ..........(set-marker.start-pt.n | 
| a65c0 |  69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66  | il)...................(kill-buff | 
| a65e0 |  65 72 20 74 65 6d 70 2d 62 75 66 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72  | er.temp-buf)).................(r | 
| a6600 |  65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 67 70 74 65    6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d  | emove-hook.'gptel-post-response- | 
| a6620 |  66 75 6e 63 74 69 6f 6e 73 20 63 6c 65 61 6e 75    70 2d 66 6e 29 29 29 29 29 0a 20 20 20 20 28 61  | functions.cleanup-fn))))).....(a | 
| a6640 |  64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70    6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e  | dd-hook.'gptel-post-response-fun | 
| a6660 |  63 74 69 6f 6e 73 20 63 6c 65 61 6e 75 70 2d 66    6e 29 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28  | ctions.cleanup-fn).....(lambda.( | 
| a6680 |  73 74 72 29 0a 20 20 20 20 20 20 28 6c 65 74 20    28 28 6e 6f 6f 70 2d 70 29 20 28 74 69 63 6b 73  | str).......(let.((noop-p).(ticks | 
| a66a0 |  20 30 29 29 0a 20 20 20 20 20 20 20 20 28 77 69    74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65  | .0)).........(with-current-buffe | 
| a66c0 |  72 20 28 67 65 74 2d 62 75 66 66 65 72 20 74 65    6d 70 2d 62 75 66 29 0a 20 20 20 20 20 20 20 20  | r.(get-buffer.temp-buf)......... | 
| a66e0 |  20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f    6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f  | ..(save-excursion.(goto-char.(po | 
| a6700 |  69 6e 74 2d 6d 61 78 29 29 20 28 69 6e 73 65 72    74 20 73 74 72 29 29 0a 20 20 20 20 20 20 20 20  | int-max)).(insert.str))......... | 
| a6720 |  20 20 28 77 68 65 6e 20 28 6d 61 72 6b 65 72 2d    70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 70  | ..(when.(marker-position.start-p | 
| a6740 |  74 29 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 74    61 72 74 2d 70 74 29 29 0a 20 20 20 20 20 20 20  | t).(goto-char.start-pt))........ | 
| a6760 |  20 20 20 28 77 68 65 6e 20 69 6e 2d 73 72 63 2d    62 6c 6f 63 6b 20 28 73 65 74 71 20 74 69 63 6b  | ...(when.in-src-block.(setq.tick | 
| a6780 |  73 20 74 69 63 6b 73 2d 74 6f 74 61 6c 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d  | s.ticks-total))...........(save- | 
| a67a0 |  65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65  | excursion.............(while.(re | 
| a67c0 |  2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20    22 60 5c 5c 7c 5c 5c 2a 5c 5c 7b 31 2c 32 5c 5c  | -search-forward."`\\|\\*\\{1,2\\ | 
| a67e0 |  7d 5c 5c 7c 5f 5c 5c 7c 5e 23 2b 22 20 6e 69 6c    20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | }\\|_\\|^#+".nil.t)............. | 
| a6800 |  20 20 28 70 63 61 73 65 20 28 6d 61 74 63 68 2d    73 74 72 69 6e 67 20 30 29 0a 20 20 20 20 20 20  | ..(pcase.(match-string.0)....... | 
| a6820 |  20 20 20 20 20 20 20 20 20 20 28 22 60 22 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........("`".................. | 
| a6840 |  3b 3b 20 43 6f 75 6e 74 20 6e 75 6d 62 65 72 20    6f 66 20 63 6f 6e 73 65 63 75 74 69 76 65 20 62  | ;;.Count.number.of.consecutive.b | 
| a6860 |  61 63 6b 74 69 63 6b 73 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 77  | ackticks..................(backw | 
| a6880 |  61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c  | ard-char)..................(whil | 
| a68a0 |  65 20 28 61 6e 64 20 28 63 68 61 72 2d 61 66 74    65 72 29 20 28 65 71 20 28 63 68 61 72 2d 61 66  | e.(and.(char-after).(eq.(char-af | 
| a68c0 |  74 65 72 29 20 3f 60 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f  | ter).?`))....................(fo | 
| a68e0 |  72 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | rward-char)....................( | 
| a6900 |  69 66 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20    28 63 6c 2d 64 65 63 66 20 74 69 63 6b 73 29 20  | if.in-src-block.(cl-decf.ticks). | 
| a6920 |  28 63 6c 2d 69 6e 63 66 20 74 69 63 6b 73 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (cl-incf.ticks)))............... | 
| a6940 |  20 20 20 3b 3b 20 53 65 74 20 74 68 65 20 76 65    72 62 61 74 69 6d 20 73 74 61 74 65 20 6f 66 20  | ...;;.Set.the.verbatim.state.of. | 
| a6960 |  74 68 65 20 70 61 72 73 65 72 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20  | the.parser..................(if. | 
| a6980 |  28 61 6e 64 20 28 65 6f 62 70 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (and.(eobp)..................... | 
| a69a0 |  20 20 20 20 20 20 3b 3b 20 53 70 65 63 69 61 6c    20 63 61 73 65 20 68 65 75 72 69 73 74 69 63 3a  | ......;;.Special.case.heuristic: | 
| a69c0 |  20 49 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65    20 65 6e 64 73 20 77 69 74 68 0a 20 20 20 20 20  | .If.the.response.ends.with...... | 
| a69e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 5e 60 60 60 20 77 65 20  | .....................;;.^```.we. | 
| a6a00 |  64 6f 6e 27 74 20 77 61 69 74 20 66 6f 72 20 6d    6f 72 65 20 69 6e 70 75 74 2e 0a 20 20 20 20 20  | don't.wait.for.more.input....... | 
| a6a20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 46 49 58 4d 45 3a 20 54  | .....................;;.FIXME:.T | 
| a6a40 |  68 69 73 20 63 61 6e 20 68 61 76 65 20 66 61 6c    73 65 20 70 6f 73 69 74 69 76 65 73 2e 0a 20 20  | his.can.have.false.positives.... | 
| a6a60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 73 61  | ........................(not.(sa | 
| a6a80 |  76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 62 65    67 69 6e 6e 69 6e 67 2d 6f 66 2d 6c 69 6e 65 29  | ve-excursion.(beginning-of-line) | 
| a6aa0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| a6ac0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5e 60 60  | ................(looking-at."^`` | 
| a6ae0 |  60 24 22 29 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | `$"))))......................;;. | 
| a6b00 |  45 6e 64 20 6f 66 20 69 6e 70 75 74 20 3d 3e 20    74 68 65 72 65 20 63 6f 75 6c 64 20 62 65 20 6d  | End.of.input.=>.there.could.be.m | 
| a6b20 |  6f 72 65 20 62 61 63 6b 74 69 63 6b 73 20 63 6f    6d 69 6e 67 2c 0a 20 20 20 20 20 20 20 20 20 20  | ore.backticks.coming,........... | 
| a6b40 |  20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 6f    20 77 65 20 77 61 69 74 20 66 6f 72 20 6d 6f 72  | ...........;;.so.we.wait.for.mor | 
| a6b60 |  65 20 69 6e 70 75 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72  | e.input......................(pr | 
| a6b80 |  6f 67 6e 20 28 73 65 74 71 20 6e 6f 6f 70 2d 70    20 74 29 20 28 73 65 74 2d 6d 61 72 6b 65 72 20  | ogn.(setq.noop-p.t).(set-marker. | 
| a6ba0 |  73 74 61 72 74 2d 70 74 20 28 6d 61 74 63 68 2d    62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20  | start-pt.(match-beginning.0))).. | 
| a6bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 57 65 20 72 65 61 63 68 65 64 20  | ..................;;.We.reached. | 
| a6be0 |  61 20 63 68 61 72 61 63 74 65 72 20 6f 74 68 65    72 20 74 68 61 6e 20 61 20 62 61 63 6b 74 69 63  | a.character.other.than.a.backtic | 
| a6c00 |  6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20  | k....................(cond...... | 
| a6c20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b    3b 20 54 69 63 6b 73 20 62 61 6c 61 6e 63 65 64  | ...............;;.Ticks.balanced | 
| a6c40 |  2c 20 65 6e 64 20 73 72 63 20 62 6c 6f 63 6b 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ,.end.src.block................. | 
| a6c60 |  20 20 20 20 28 28 3d 20 74 69 63 6b 73 20 30 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....((=.ticks.0)................ | 
| a6c80 |  20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65    74 71 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20  | ......(progn.(setq.in-src-block. | 
| a6ca0 |  6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nil)............................ | 
| a6cc0 |  20 28 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65    2d 73 6f 75 72 63 65 2d 6d 61 72 6b 65 72 20 74  | .(gptel--replace-source-marker.t | 
| a6ce0 |  69 63 6b 73 2d 74 6f 74 61 6c 20 27 65 6e 64 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | icks-total.'end))).............. | 
| a6d00 |  20 20 20 20 20 20 20 3b 3b 20 50 6f 73 69 74 69    76 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 63  | .......;;.Positive.number.of.tic | 
| a6d20 |  6b 73 2c 20 73 74 61 72 74 20 61 6e 20 73 72 63    20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20  | ks,.start.an.src.block.......... | 
| a6d40 |  20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64    20 28 3e 20 74 69 63 6b 73 20 30 29 20 28 6e 6f  | ...........((and.(>.ticks.0).(no | 
| a6d60 |  74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.in-src-block))................ | 
| a6d80 |  20 20 20 20 20 20 28 73 65 74 71 20 74 69 63 6b    73 2d 74 6f 74 61 6c 20 74 69 63 6b 73 0a 20 20  | ......(setq.ticks-total.ticks... | 
| a6da0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 69 6e 2d 73 72 63 2d  | .........................in-src- | 
| a6dc0 |  62 6c 6f 63 6b 20 74 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67  | block.t)......................(g | 
| a6de0 |  70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f    75 72 63 65 2d 6d 61 72 6b 65 72 20 74 69 63 6b  | ptel--replace-source-marker.tick | 
| a6e00 |  73 2d 74 6f 74 61 6c 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b  | s-total)).....................;; | 
| a6e20 |  20 4e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72    20 6f 66 20 74 69 63 6b 73 20 6f 72 20 69 6e 20  | .Negative.number.of.ticks.or.in. | 
| a6e40 |  61 20 73 72 63 20 62 6c 6f 63 6b 20 61 6c 72 65    61 64 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20  | a.src.block.already,............ | 
| a6e60 |  20 20 20 20 20 20 20 20 20 3b 3b 20 72 65 73 65    74 20 74 69 63 6b 73 0a 20 20 20 20 20 20 20 20  | .........;;.reset.ticks......... | 
| a6e80 |  20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28    73 65 74 71 20 74 69 63 6b 73 20 74 69 63 6b 73  | ............(t.(setq.ticks.ticks | 
| a6ea0 |  2d 74 6f 74 61 6c 29 29 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48  | -total))))).................;;.H | 
| a6ec0 |  61 6e 64 6c 65 20 68 65 61 64 69 6e 67 73 20 61    6e 64 20 6d 69 73 67 75 69 64 65 64 20 23 2b 62  | andle.headings.and.misguided.#+b | 
| a6ee0 |  65 67 69 6e 5f 73 72 63 20 74 65 78 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28  | egin_src.text.................(( | 
| a6f00 |  61 6e 64 20 28 67 75 61 72 64 20 28 61 6e 64 20    28 65 71 20 28 63 68 61 72 2d 62 65 66 6f 72 65  | and.(guard.(and.(eq.(char-before | 
| a6f20 |  29 20 3f 23 29 20 28 6f 72 20 28 6e 6f 74 20 69    6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 20 69 6e 2d  | ).?#).(or.(not.in-src-block).in- | 
| a6f40 |  6f 72 67 2d 73 72 63 2d 62 6c 6f 63 6b 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | org-src-block)))................ | 
| a6f60 |  20 20 20 20 20 20 20 68 65 61 64 69 6e 67 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .......heading)................. | 
| a6f80 |  20 28 69 66 20 69 6e 2d 6f 72 67 2d 73 72 63 2d    62 6c 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20  | .(if.in-org-src-block........... | 
| a6fa0 |  20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66    20 77 65 20 61 72 65 20 69 6e 73 69 64 65 20 61  | ...........;;.If.we.are.inside.a | 
| a6fc0 |  6e 20 4f 72 67 2d 73 74 79 6c 65 20 73 72 63 20    62 6c 6f 63 6b 2c 20 6c 6f 6f 6b 20 66 6f 72 20  | n.Org-style.src.block,.look.for. | 
| a6fe0 |  23 2b 65 6e 64 5f 73 72 63 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | #+end_src......................( | 
| a7000 |  63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 28 3c 20 28  | cond.......................((<.( | 
| a7020 |  2d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 28 70    6f 69 6e 74 29 29 20 38 29 20 3b 6e 6f 74 20 65  | -.(point-max).(point)).8).;not.e | 
| a7040 |  6e 6f 75 67 68 20 69 6e 66 6f 72 6d 61 74 69 6f    6e 20 74 6f 20 63 6c 6f 73 65 20 4f 72 67 20 73  | nough.information.to.close.Org.s | 
| a7060 |  72 63 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rc.block........................ | 
| a7080 |  28 73 65 74 71 20 6e 6f 6f 70 2d 70 20 74 29 20    28 73 65 74 2d 6d 61 72 6b 65 72 20 73 74 61 72  | (setq.noop-p.t).(set-marker.star | 
| a70a0 |  74 2d 70 74 20 28 6d 61 74 63 68 2d 62 65 67 69    6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20  | t-pt.(match-beginning.0)))...... | 
| a70c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c  | .................((looking-at."\ | 
| a70e0 |  5c 2b 65 6e 64 5f 73 72 63 22 29 20 3b 43 6c 6f    73 65 20 4f 72 67 20 73 72 63 20 62 6c 6f 63 6b  | \+end_src").;Close.Org.src.block | 
| a7100 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 6e  | ........................(setq.in | 
| a7120 |  2d 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 20 69    6e 2d 6f 72 67 2d 73 72 63 2d 62 6c 6f 63 6b 20  | -src-block.nil.in-org-src-block. | 
| a7140 |  6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3b 3b 20 4f 74 68  | nil)))....................;;.Oth | 
| a7160 |  65 72 77 69 73 65 20 63 68 65 63 6b 20 66 6f 72    20 4d 61 72 6b 64 6f 77 6e 20 68 65 61 64 69 6e  | erwise.check.for.Markdown.headin | 
| a7180 |  67 73 2c 20 6f 72 20 66 6f 72 20 23 2b 62 65 67    69 6e 5f 73 72 63 0a 20 20 20 20 20 20 20 20 20  | gs,.or.for.#+begin_src.......... | 
| a71a0 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........(cond................. | 
| a71c0 |  20 20 20 20 28 28 65 6f 62 70 29 20 20 20 20 20    20 20 3b 20 4e 6f 74 20 65 6e 6f 75 67 68 20 69  | ....((eobp).......;.Not.enough.i | 
| a71e0 |  6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74    20 74 68 65 20 68 65 61 64 69 6e 67 20 79 65 74  | nformation.about.the.heading.yet | 
| a7200 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 73 65 74 71 20 6e 6f 6f 70  | ......................(setq.noop | 
| a7220 |  2d 70 20 74 29 20 28 73 65 74 2d 6d 61 72 6b 65    72 20 73 74 61 72 74 2d 70 74 20 28 6d 61 74 63  | -p.t).(set-marker.start-pt.(matc | 
| a7240 |  68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | h-beginning.0)))................ | 
| a7260 |  20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61    74 20 22 5b 5b 3a 73 70 61 63 65 3a 5d 5d 22 29  | .....((looking-at."[[:space:]]") | 
| a7280 |  20 3b 20 43 6f 6e 76 65 72 74 20 6d 61 72 6b 64    6f 77 6e 20 68 65 61 64 69 6e 67 20 74 6f 20 4f  | .;.Convert.markdown.heading.to.O | 
| a72a0 |  72 67 20 68 65 61 64 69 6e 67 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rg.heading...................... | 
| a72c0 |  28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28    6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70  | (delete-region.(line-beginning-p | 
| a72e0 |  6f 73 69 74 69 6f 6e 29 20 28 70 6f 69 6e 74 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | osition).(point))............... | 
| a7300 |  20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28    6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 6c 65 6e  | .......(insert.(make-string.(len | 
| a7320 |  67 74 68 20 68 65 61 64 69 6e 67 29 20 3f 2a 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | gth.heading).?*))).............. | 
| a7340 |  20 20 20 20 20 20 20 28 28 3c 20 28 2d 20 28 70    6f 69 6e 74 2d 6d 61 78 29 20 28 70 6f 69 6e 74  | .......((<.(-.(point-max).(point | 
| a7360 |  29 29 20 31 31 29 20 3b 4e 6f 74 20 65 6e 6f 75    67 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74  | )).11).;Not.enough.information.t | 
| a7380 |  6f 20 63 68 65 63 6b 20 69 66 20 4f 72 67 20 73    72 63 20 62 6c 6f 63 6b 0a 20 20 20 20 20 20 20  | o.check.if.Org.src.block........ | 
| a73a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73    65 74 71 20 6e 6f 6f 70 2d 70 20 74 29 20 28 73  | ..............(setq.noop-p.t).(s | 
| a73c0 |  65 74 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d    70 74 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e  | et-marker.start-pt.(match-beginn | 
| a73e0 |  69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c  | ing.0))).....................((l | 
| a7400 |  6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2b 62 65    67 69 6e 5f 73 72 63 20 22 29 20 3b 4f 76 65 72  | ooking-at."\\+begin_src.").;Over | 
| a7420 |  65 61 67 65 72 20 4c 4c 4d 20 73 77 69 74 63 68    65 64 20 74 6f 20 75 73 69 6e 67 20 4f 72 67 20  | eager.LLM.switched.to.using.Org. | 
| a7440 |  73 72 63 20 62 6c 6f 63 6b 73 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | src.blocks...................... | 
| a7460 |  28 73 65 74 71 20 69 6e 2d 73 72 63 2d 62 6c 6f    63 6b 20 74 20 69 6e 2d 6f 72 67 2d 73 72 63 2d  | (setq.in-src-block.t.in-org-src- | 
| a7480 |  62 6c 6f 63 6b 20 74 29 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | block.t))))).................;;. | 
| a74a0 |  48 61 6e 64 6c 65 20 6f 74 68 65 72 20 63 68 61    72 73 3a 20 65 6d 70 68 61 73 69 73 2c 20 62 6f  | Handle.other.chars:.emphasis,.bo | 
| a74c0 |  6c 64 20 61 6e 64 20 62 75 6c 6c 65 74 20 69 74    65 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ld.and.bullet.items............. | 
| a74e0 |  20 20 20 20 28 28 61 6e 64 20 22 2a 2a 22 20 28    67 75 61 72 64 20 28 6e 6f 74 20 69 6e 2d 73 72  | ....((and."**".(guard.(not.in-sr | 
| a7500 |  63 2d 62 6c 6f 63 6b 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e  | c-block)))..................(con | 
| a7520 |  64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3b 3b 20 54 4f 44 4f 20 4e 6f 74 20  | d...................;;.TODO.Not. | 
| a7540 |  73 75 72 65 20 77 68 79 20 74 68 69 73 20 62 72    61 6e 63 68 20 77 61 73 20 6e 65 65 64 65 64 0a  | sure.why.this.branch.was.needed. | 
| a7560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 28 28 6c 6f 6f 6b 69 6e 67 2d 61  | ..................;;.((looking-a | 
| a7580 |  74 20 22 5c 5c 2a 5c 5c 28 3f 3a 5b 5b 3a 77 6f    72 64 3a 5d 5d 5c 5c 7c 5c 73 5c 5c 29 22 29 20  | t."\\*\\(?:[[:word:]]\\|\s\\)"). | 
| a75a0 |  28 64 65 6c 65 74 65 2d 63 68 61 72 20 31 29 29    0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | (delete-char.1))................ | 
| a75c0 |  20 20 20 20 3b 3b 20 4c 6f 6f 6b 69 6e 67 20 62    61 63 6b 20 61 74 20 22 77 2a 2a 22 20 6f 72 20  | ....;;.Looking.back.at."w**".or. | 
| a75e0 |  22 20 2a 2a 22 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 6e  | ".**"...................((lookin | 
| a7600 |  67 2d 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a    77 6f 72 64 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5c  | g-back."\\(?:[[:word:][:punct:]\ | 
| a7620 |  6e 5d 5c 5c 7c 5c 73 5c 5c 29 5c 5c 2a 5c 5c 7b    32 5c 5c 7d 22 0a 20 20 20 20 20 20 20 20 20 20  | n]\\|\s\\)\\*\\{2\\}"........... | 
| a7640 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6d 61 78 20 28 2d 20 28  | .......................(max.(-.( | 
| a7660 |  70 6f 69 6e 74 29 20 33 29 20 28 70 6f 69 6e 74    2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20  | point).3).(point-min)))......... | 
| a7680 |  20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65    74 65 2d 63 68 61 72 20 2d 31 29 29 29 29 0a 20  | ...........(delete-char.-1)))).. | 
| a76a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    28 61 6e 64 20 22 2a 22 20 28 67 75 61 72 64 20  | ...............((and."*".(guard. | 
| a76c0 |  28 6e 6f 74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63    6b 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | (not.in-src-block)))............ | 
| a76e0 |  20 20 20 20 20 20 28 69 66 20 28 65 6f 62 70 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......(if.(eobp)................ | 
| a7700 |  20 20 20 20 20 20 3b 3b 20 4e 6f 74 20 65 6e 6f    75 67 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  | ......;;.Not.enough.information. | 
| a7720 |  61 62 6f 75 74 20 74 68 65 20 22 2a 22 20 79 65    74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | about.the."*".yet............... | 
| a7740 |  20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73    65 74 71 20 6e 6f 6f 70 2d 70 20 74 29 20 28 73  | .......(progn.(setq.noop-p.t).(s | 
| a7760 |  65 74 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d    70 74 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e  | et-marker.start-pt.(match-beginn | 
| a7780 |  69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 22  | ing.0)))....................;;." | 
| a77a0 |  2a 22 20 69 73 20 65 69 74 68 65 72 20 65 6d 70    68 61 73 69 73 20 6f 72 20 61 20 62 75 6c 6c 65  | *".is.either.emphasis.or.a.bulle | 
| a77c0 |  74 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65  | t.point....................(save | 
| a77e0 |  2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -match-data..................... | 
| a7800 |  20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .(save-excursion................ | 
| a7820 |  20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d    65 72 72 6f 72 73 20 28 62 61 63 6b 77 61 72 64  | ........(ignore-errors.(backward | 
| a7840 |  2d 63 68 61 72 20 32 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -char.2))....................... | 
| a7860 |  20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | .(cond.........................( | 
| a7880 |  28 61 6e 64 20 20 20 20 20 3b 20 41 74 20 62 6f    62 2c 20 75 6e 64 65 72 73 63 6f 72 65 2f 61 73  | (and.....;.At.bob,.underscore/as | 
| a78a0 |  74 65 72 69 73 6b 20 66 6f 6c 6c 6f 77 65 64 20    62 79 20 77 6f 72 64 0a 20 20 20 20 20 20 20 20  | terisk.followed.by.word......... | 
| a78c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6f 72 20 28 61 6e 64 20 28 62 6f 62 70  | ..................(or.(and.(bobp | 
| a78e0 |  29 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c    5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 5c 5c  | ).(looking-at."\\(?:_\\|\\*\\)\\ | 
| a7900 |  28 5b 5e 5b 3a 73 70 61 63 65 3a 5d 5b 3a 70 75    6e 63 74 3a 5d 5d 5c 5c 7c 24 5c 5c 29 22 29 29  | ([^[:space:][:punct:]]\\|$\\)")) | 
| a7920 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| a7940 |  6c 6f 6f 6b 69 6e 67 2d 61 74 20 3b 20 77 6f 72    64 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 75 6e  | looking-at.;.word.followed.by.un | 
| a7960 |  64 65 72 73 63 6f 72 65 2f 61 73 74 65 72 69 73    6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | derscore/asterisk............... | 
| a7980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 5b 5e 5b 3a 73 70 61 63 65 3a 5d 5c 6e 5d  | ................."[^[:space:]\n] | 
| a79a0 |  5c 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 5c    5c 28 3f 3a 5b 5b 3a 73 70 61 63 65 3a 5d 5b 3a  | \\(?:_\\|\\*\\)\\(?:[[:space:][: | 
| a79c0 |  70 75 6e 63 74 3a 5d 5d 5c 5c 7c 24 5c 5c 29 22    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | punct:]]\\|$\\)")............... | 
| a79e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 3b 20 75 6e  | ................(looking-at.;.un | 
| a7a00 |  64 65 72 73 63 6f 72 65 2f 61 73 74 65 72 69 73    6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 77 6f  | derscore/asterisk.followed.by.wo | 
| a7a20 |  72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | rd.............................. | 
| a7a40 |  20 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 65    3a 5d 5d 5c 5c 29 5c 5c 28 3f 3a 5f 5c 5c 7c 5c  | .."\\(?:[[:space:]]\\)\\(?:_\\|\ | 
| a7a60 |  5c 2a 5c 5c 29 5c 5c 28 5b 5e 5b 3a 73 70 61 63    65 3a 5d 5d 5c 5c 7c 24 5c 5c 29 22 29 29 0a 20  | \*\\)\\([^[:space:]]\\|$\\)")).. | 
| a7a80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 6c  | .........................(not.(l | 
| a7aa0 |  6f 6f 6b 69 6e 67 2d 61 74 20 22 5b 5b 3a 70 75    6e 63 74 3a 5d 5d 5c 5c 28 3f 3a 5f 5c 5c 7c 5c  | ooking-at."[[:punct:]]\\(?:_\\|\ | 
| a7ac0 |  5c 2a 5c 5c 29 5b 5b 3a 70 75 6e 63 74 3a 5d 5d    22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | \*\\)[[:punct:]]")))............ | 
| a7ae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 45 6d 70 68 61 73 69 73 2c 20 72 65 70 6c 61  | ..............;;.Emphasis,.repla | 
| a7b00 |  63 65 20 77 69 74 68 20 73 6c 61 73 68 65 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ce.with.slashes................. | 
| a7b20 |  20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72    64 2d 63 68 61 72 20 28 69 66 20 28 62 6f 62 70  | .........(forward-char.(if.(bobp | 
| a7b40 |  29 20 31 20 32 29 29 20 28 64 65 6c 65 74 65 2d    63 68 61 72 20 2d 31 29 20 28 69 6e 73 65 72 74  | ).1.2)).(delete-char.-1).(insert | 
| a7b60 |  20 22 2f 22 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ."/")).........................( | 
| a7b80 |  28 6f 72 20 28 61 6e 64 20 28 62 6f 62 70 29 20    28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2a  | (or.(and.(bobp).(looking-at."\\* | 
| a7ba0 |  5b 5b 3a 73 70 61 63 65 3a 5d 5d 22 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | [[:space:]]")).................. | 
| a7bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f    6b 69 6e 67 2d 61 74 20 22 5c 5c 28 3f 3a 24 5c  | ............(looking-at."\\(?:$\ | 
| a7be0 |  5c 7c 5c 5c 60 5c 5c 29 5c 6e 5c 5c 2a 5b 5b 3a    73 70 61 63 65 3a 5d 5d 22 29 29 0a 20 20 20 20  | \|\\`\\)\n\\*[[:space:]]"))..... | 
| a7c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 42 75 6c 6c 65 74 20 70  | .....................;;.Bullet.p | 
| a7c20 |  6f 69 6e 74 2c 20 72 65 70 6c 61 63 65 20 77 69    74 68 20 68 79 70 68 65 6e 0a 20 20 20 20 20 20  | oint,.replace.with.hyphen....... | 
| a7c40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72  | ...................(forward-char | 
| a7c60 |  20 28 69 66 20 28 62 6f 62 70 29 20 31 20 32 29    29 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d  | .(if.(bobp).1.2)).(delete-char.- | 
| a7c80 |  31 29 20 28 69 6e 73 65 72 74 20 22 2d 22 29 29    29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20  | 1).(insert."-"))))))))))........ | 
| a7ca0 |  20 20 20 28 69 66 20 6e 6f 6f 70 2d 70 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66  | ...(if.noop-p...............(buf | 
| a7cc0 |  66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70    6f 69 6e 74 29 20 73 74 61 72 74 2d 70 74 29 0a  | fer-substring.(point).start-pt). | 
| a7ce0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f    67 31 20 28 62 75 66 66 65 72 2d 73 75 62 73 74  | ............(prog1.(buffer-subst | 
| a7d00 |  72 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 70 6f    69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20  | ring.(point).(point-max))....... | 
| a7d20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65    74 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 70  | .............(set-marker.start-p | 
| a7d40 |  74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29    29 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20  | t.(point-max)))))))))..(provide. | 
| a7d60 |  27 67 70 74 65 6c 2d 6f 72 67 29 0a 3b 3b 3b 20    67 70 74 65 6c 2d 6f 72 67 2e 65 6c 20 65 6e 64  | 'gptel-org).;;;.gptel-org.el.end | 
| a7d80 |  73 20 68 65 72 65 0a 0a 3b 3b 20 53 69 6c 65 6e    63 65 20 77 61 72 6e 69 6e 67 73 20 61 62 6f 75  | s.here..;;.Silence.warnings.abou | 
| a7da0 |  74 20 60 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 74    79 70 65 2d 70 27 20 61 6e 64 20 60 6f 72 67 2d  | t.`org-element-type-p'.and.`org- | 
| a7dc0 |  65 6c 65 6d 65 6e 74 2d 70 61 72 65 6e 74 27 2c    20 73 65 65 20 23 32 39 34 2e 0a 3b 3b 20 4c 6f  | element-parent',.see.#294..;;.Lo | 
| a7de0 |  63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b    3b 20 62 79 74 65 2d 63 6f 6d 70 69 6c 65 2d 77  | cal.Variables:.;;.byte-compile-w | 
| a7e00 |  61 72 6e 69 6e 67 73 3a 20 28 6e 6f 74 20 75 6e    72 65 73 6f 6c 76 65 64 29 0a 3b 3b 20 45 6e 64  | arnings:.(not.unresolved).;;.End | 
| a7e20 |  3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | :............................... | 
| a7e40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7e60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7e80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7ea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7ec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7ee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7f00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7f20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7f40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7f60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7f80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7fa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7fc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a7fe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8000 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8060 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8080 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a80a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a80c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a80e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8100 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8120 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a81a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a81c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a81e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8200 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8260 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8280 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a82a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a82c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a82e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8300 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8320 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a83a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a83c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a83e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8400 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8420 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8440 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8460 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8480 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a84a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a84c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a84e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8500 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8520 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8540 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8560 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8580 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a85a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a85c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a85e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8600 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8660 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8680 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a86a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a86c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a86e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8700 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8720 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a87a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a87c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a87e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8800 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8820 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8840 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8860 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8880 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a88a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a88c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a88e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8900 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8920 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a89a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a89c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a89e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8a00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8a20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8a40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8a60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8a80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8aa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8ac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8ae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8b00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8b20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8c00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8c20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8c40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8c60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8c80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8ca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8cc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8ce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8d00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8d20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8e00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8e20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8e40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8e60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8e80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8ea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8ec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8ee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8f00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8f20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8f40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8f60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8f80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8fa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8fc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a8fe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9000 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9060 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9080 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a90a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a90c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a90e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9100 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9120 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a91a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a91c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a91e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9200 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9260 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9280 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a92a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a92c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a92e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9300 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9320 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a93a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a93c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a93e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9400 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9420 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9440 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9460 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9480 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a94a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a94c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a94e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9500 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9520 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9540 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9560 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9580 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a95a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a95c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a95e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9600 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9660 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9680 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a96a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a96c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a96e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9700 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9720 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a97a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a97c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a97e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9800 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9820 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9840 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9860 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9880 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a98a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a98c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a98e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9900 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9920 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a99a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a99c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a99e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9a00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9a20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9a40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9a60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9a80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9aa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9ac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9ae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9b00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9b20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9c00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9c20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9c40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9c60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9c80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9ca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9cc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9ce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9d00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9d20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9e00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9e20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9e40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9e60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9e80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9ea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9ec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9ee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9f00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9f20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9f40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9f60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9f80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9fa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9fc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| a9fe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ |