Write the coder turn down, and close its thread on every path
A coder session never called `POST /api/v1/threads/{id}/events`. It opened a
thread, ran its turns, and revoked, so the server's only terminal act was a
cancellation: 31 of the 50 most recent threads on one account read
`error_code: cancelled` with "The thread was cancelled before it reported.",
over runs that had printed a correct answer and exited 0 (#106).
The turn now records itself as it happens, in the vocabulary `--resume` reads
and `docs/2026-08-24-coder-account-integration-audit.md` fixes: `turn.user`
before the first model call, `turn.reasoning` whole, one `tool.ran` per call
carrying its arguments and result, and `turn.assistant` with the turn's usage
and call count.
The half that keeps it honest is the failure. A refused proxy, a stream that
broke, an exhausted step budget, and an interrupted session each record
`turn.failed` and never a `turn.assistant` — a record saying every session
succeeded would be exactly as wrong as one saying every session was cancelled.
Recording is best effort, because a transcript the server will not take is no
reason to throw away an answer a reader is waiting on, but a refused append is
kept in `record_failures` and reported rather than swallowed.
`close()` was called from one place — the headless path. The interactive
session and every delegated child relied on the `Drop` impl, which spawns a
`DELETE` onto whatever runtime is still up and may never be polled; the audit
in #89 found two threads still open from long-dead sessions, and a thread left
open holds its grant's remaining budget. It is now awaited on the interactive,
plain, and delegated paths (#107). `run_tui` awaits its actor with a bound
instead of aborting it, and the actor revokes on its way out.
And the spend it returns is read. The one caller dropped it, so the CLI printed
its own client-side accumulation and nothing could notice the two diverging.
`spend_line` reports the server's figure and names the gap when there is one.
What this does not do: a thread's own `report` and `error_code` still read as
cancelled. `Threads.finish/2` — the only thing that writes a real report and
leaves `error_code` empty — has no HTTP route and no caller outside tests, so
`DELETE` → `Threads.cancel/2` is the only terminal act a client can perform.
The transcript is now right; the thread's summary fields need a server route.
Refs #106, #107, #89.
Write the coder turn down, and close its thread on every path
Deploy story
What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.
Not deployed through the forge lane
No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.
Changed files
-
modified
crates/openagents-cli/src/cli.rs -
modified
crates/openagents-cli/src/delegate.rs -
modified
crates/openagents-cli/src/interactive.rs -
modified
crates/openagents-cli/src/resume.rs -
modified
crates/openagents-cli/src/runtime.rs -
modified
crates/openagents-cli/tests/delegate_test.rs -
modified
crates/openagents-cli/tests/runtime_test.rs
Diff
7 files changed, +1125 -45
crates/openagents-cli/src/cli.rs modified +12 -2
@@ -4386,8 +4386,18 @@ async fn run_headless_coder(
| 4386 | 4386 |
|
| 4387 | 4387 |
|
| 4388 | 4388 |
|
| 4389 |
|
|
| 4390 |
|
|
| 4389 |
|
|
| 4390 |
|
|
| 4391 |
|
|
| 4392 |
|
|
| 4393 |
|
|
| 4394 |
|
|
| 4395 |
|
|
| 4396 |
|
|
| 4397 |
|
|
| 4398 |
|
|
| 4399 |
|
|
| 4400 |
|
|
| 4391 | 4401 |
|
| 4392 | 4402 |
|
| 4393 | 4403 |
|
crates/openagents-cli/src/delegate.rs modified +41 -14
@@ -519,23 +519,50 @@ async fn run_proxy_child(
| 519 | 519 |
|
| 520 | 520 |
|
| 521 | 521 |
|
| 522 |
|
|
| 523 |
|
|
| 522 |
|
|
| 523 |
|
|
| 524 |
|
|
| 525 |
|
|
| 526 |
|
|
| 527 |
|
|
| 528 |
|
|
| 529 |
|
|
| 530 |
|
|
| 531 |
|
|
| 532 |
|
|
| 533 |
|
|
| 534 |
|
|
| 535 |
|
|
| 536 |
|
|
| 537 |
|
|
| 538 |
|
|
| 539 |
|
|
| 540 |
|
|
| 541 |
|
|
| 542 |
|
|
| 543 |
|
|
| 544 |
|
|
| 545 |
|
|
| 546 |
|
|
| 547 |
|
|
| 548 |
|
|
| 549 |
|
|
| 550 |
|
|
| 551 |
|
|
| 524 | 552 |
|
| 525 |
|
|
| 553 |
|
|
| 526 | 554 |
|
| 527 |
|
|
| 555 |
|
|
| 556 |
|
|
| 557 |
|
|
| 558 |
|
|
| 559 |
|
|
| 560 |
|
|
| 561 |
|
|
| 528 | 562 |
|
| 529 |
|
|
| 530 |
|
|
| 531 |
|
|
| 532 |
|
|
| 533 |
|
|
| 534 |
|
|
| 535 |
|
|
| 536 |
|
|
| 537 |
|
|
| 538 |
|
|
| 563 |
|
|
| 564 |
|
|
| 565 |
|
|
| 539 | 566 |
|
| 540 | 567 |
|
| 541 | 568 |
|
crates/openagents-cli/src/interactive.rs modified +61 -6
@@ -143,6 +143,12 @@ pub enum TurnEvent {
| 143 | 143 |
|
| 144 | 144 |
|
| 145 | 145 |
|
| 146 |
|
|
| 147 |
|
|
| 148 |
|
|
| 149 |
|
|
| 150 |
|
|
| 151 |
|
|
| 146 | 152 |
|
| 147 | 153 |
|
| 148 | 154 |
|
@@ -858,7 +864,31 @@ where
| 858 | 864 |
|
| 859 | 865 |
|
| 860 | 866 |
|
| 867 |
|
|
| 868 |
|
|
| 869 |
|
|
| 870 |
|
|
| 871 |
|
|
| 872 |
|
|
| 873 |
|
|
| 874 |
|
|
| 875 |
|
|
| 876 |
|
|
| 877 |
|
|
| 878 |
|
|
| 879 |
|
|
| 880 |
|
|
| 881 |
|
|
| 882 |
|
|
| 883 |
|
|
| 884 |
|
|
| 885 |
|
|
| 861 | 886 |
|
| 887 |
|
|
| 888 |
|
|
| 889 |
|
|
| 890 |
|
|
| 891 |
|
|
| 862 | 892 |
|
| 863 | 893 |
|
| 864 | 894 |
|
@@ -887,7 +917,7 @@ pub async fn runtime_actor(
| 887 | 917 |
|
| 888 | 918 |
|
| 889 | 919 |
|
| 890 |
|
|
| 920 |
|
|
| 891 | 921 |
|
| 892 | 922 |
|
| 893 | 923 |
|
@@ -896,7 +926,7 @@ pub async fn runtime_actor(
| 896 | 926 |
|
| 897 | 927 |
|
| 898 | 928 |
|
| 899 |
|
|
| 929 |
|
|
| 900 | 930 |
|
| 901 | 931 |
|
| 902 | 932 |
|
@@ -932,7 +962,7 @@ pub async fn runtime_actor(
| 932 | 962 |
|
| 933 | 963 |
|
| 934 | 964 |
|
| 935 |
|
|
| 965 |
|
|
| 936 | 966 |
|
| 937 | 967 |
|
| 938 | 968 |
|
@@ -952,6 +982,9 @@ pub async fn runtime_actor(
| 952 | 982 |
|
| 953 | 983 |
|
| 954 | 984 |
|
| 985 |
|
|
| 986 |
|
|
| 987 |
|
|
| 955 | 988 |
|
| 956 | 989 |
|
| 957 | 990 |
|
@@ -1137,7 +1170,23 @@ pub async fn run_tui(
| 1137 | 1170 |
|
| 1138 | 1171 |
|
| 1139 | 1172 |
|
| 1140 |
|
|
| 1173 |
|
|
| 1174 |
|
|
| 1175 |
|
|
| 1176 |
|
|
| 1177 |
|
|
| 1178 |
|
|
| 1179 |
|
|
| 1180 |
|
|
| 1181 |
|
|
| 1182 |
|
|
| 1183 |
|
|
| 1184 |
|
|
| 1185 |
|
|
| 1186 |
|
|
| 1187 |
|
|
| 1188 |
|
|
| 1189 |
|
|
| 1141 | 1190 |
|
| 1142 | 1191 |
|
| 1143 | 1192 |
|
@@ -1206,7 +1255,7 @@ async fn run_without_a_terminal(
| 1206 | 1255 |
|
| 1207 | 1256 |
|
| 1208 | 1257 |
|
| 1209 |
|
|
| 1258 |
|
|
| 1210 | 1259 |
|
| 1211 | 1260 |
|
| 1212 | 1261 |
|
@@ -1214,7 +1263,13 @@ async fn run_without_a_terminal(
| 1214 | 1263 |
|
| 1215 | 1264 |
|
| 1216 | 1265 |
|
| 1217 |
|
|
| 1266 |
|
|
| 1267 |
|
|
| 1268 |
|
|
| 1269 |
|
|
| 1270 |
|
|
| 1271 |
|
|
| 1272 |
|
|
| 1218 | 1273 |
|
| 1219 | 1274 |
|
| 1220 | 1275 |
|
crates/openagents-cli/src/resume.rs modified +9 -5
@@ -29,11 +29,15 @@
| 29 | 29 |
|
| 30 | 30 |
|
| 31 | 31 |
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 37 | 41 |
|
| 38 | 42 |
|
| 39 | 43 |
|
crates/openagents-cli/src/runtime.rs modified +291 -16
@@ -19,6 +19,26 @@
| 19 | 19 |
|
| 20 | 20 |
|
| 21 | 21 |
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 22 | 42 |
|
| 23 | 43 |
|
| 24 | 44 |
|
@@ -57,6 +77,12 @@ pub const OLLAMA_HOST: &str = "http://127.0.0.1:11434";
| 57 | 77 |
|
| 58 | 78 |
|
| 59 | 79 |
|
| 80 |
|
|
| 81 |
|
|
| 82 |
|
|
| 83 |
|
|
| 84 |
|
|
| 85 |
|
|
| 60 | 86 |
|
| 61 | 87 |
|
| 62 | 88 |
|
@@ -233,6 +259,85 @@ pub struct InferenceGrant {
| 233 | 259 |
|
| 234 | 260 |
|
| 235 | 261 |
|
| 262 |
|
|
| 263 |
|
|
| 264 |
|
|
| 265 |
|
|
| 266 |
|
|
| 267 |
|
|
| 268 |
|
|
| 269 |
|
|
| 270 |
|
|
| 271 |
|
|
| 272 |
|
|
| 273 |
|
|
| 274 |
|
|
| 275 |
|
|
| 276 |
|
|
| 277 |
|
|
| 278 |
|
|
| 279 |
|
|
| 280 |
|
|
| 281 |
|
|
| 282 |
|
|
| 283 |
|
|
| 284 |
|
|
| 285 |
|
|
| 286 |
|
|
| 287 |
|
|
| 288 |
|
|
| 289 |
|
|
| 290 |
|
|
| 291 |
|
|
| 292 |
|
|
| 293 |
|
|
| 294 |
|
|
| 295 |
|
|
| 296 |
|
|
| 297 |
|
|
| 298 |
|
|
| 299 |
|
|
| 300 |
|
|
| 301 |
|
|
| 302 |
|
|
| 303 |
|
|
| 304 |
|
|
| 305 |
|
|
| 306 |
|
|
| 307 |
|
|
| 308 |
|
|
| 309 |
|
|
| 310 |
|
|
| 311 |
|
|
| 312 |
|
|
| 313 |
|
|
| 314 |
|
|
| 315 |
|
|
| 316 |
|
|
| 317 |
|
|
| 318 |
|
|
| 319 |
|
|
| 320 |
|
|
| 321 |
|
|
| 322 |
|
|
| 323 |
|
|
| 324 |
|
|
| 325 |
|
|
| 326 |
|
|
| 327 |
|
|
| 328 |
|
|
| 329 |
|
|
| 330 |
|
|
| 331 |
|
|
| 332 |
|
|
| 333 |
|
|
| 334 |
|
|
| 335 |
|
|
| 336 |
|
|
| 337 |
|
|
| 338 |
|
|
| 339 |
|
|
| 340 |
|
|
| 236 | 341 |
|
| 237 | 342 |
|
| 238 | 343 |
|
@@ -259,6 +364,22 @@ pub struct CoderRuntimeSession {
| 259 | 364 |
|
| 260 | 365 |
|
| 261 | 366 |
|
| 367 |
|
|
| 368 |
|
|
| 369 |
|
|
| 370 |
|
|
| 371 |
|
|
| 372 |
|
|
| 373 |
|
|
| 374 |
|
|
| 375 |
|
|
| 376 |
|
|
| 377 |
|
|
| 378 |
|
|
| 379 |
|
|
| 380 |
|
|
| 381 |
|
|
| 382 |
|
|
| 262 | 383 |
|
| 263 | 384 |
|
| 264 | 385 |
|
@@ -302,6 +423,9 @@ impl CoderRuntimeSession {
| 302 | 423 |
|
| 303 | 424 |
|
| 304 | 425 |
|
| 426 |
|
|
| 427 |
|
|
| 428 |
|
|
| 305 | 429 |
|
| 306 | 430 |
|
| 307 | 431 |
|
@@ -677,6 +801,91 @@ impl CoderRuntimeSession {
| 677 | 801 |
|
| 678 | 802 |
|
| 679 | 803 |
|
| 804 |
|
|
| 805 |
|
|
| 806 |
|
|
| 807 |
|
|
| 808 |
|
|
| 809 |
|
|
| 810 |
|
|
| 811 |
|
|
| 812 |
|
|
| 813 |
|
|
| 814 |
|
|
| 815 |
|
|
| 816 |
|
|
| 817 |
|
|
| 818 |
|
|
| 819 |
|
|
| 820 |
|
|
| 821 |
|
|
| 822 |
|
|
| 823 |
|
|
| 824 |
|
|
| 825 |
|
|
| 826 |
|
|
| 827 |
|
|
| 828 |
|
|
| 829 |
|
|
| 830 |
|
|
| 831 |
|
|
| 832 |
|
|
| 833 |
|
|
| 834 |
|
|
| 835 |
|
|
| 836 |
|
|
| 837 |
|
|
| 838 |
|
|
| 839 |
|
|
| 840 |
|
|
| 841 |
|
|
| 842 |
|
|
| 843 |
|
|
| 844 |
|
|
| 845 |
|
|
| 846 |
|
|
| 847 |
|
|
| 848 |
|
|
| 849 |
|
|
| 850 |
|
|
| 851 |
|
|
| 852 |
|
|
| 853 |
|
|
| 854 |
|
|
| 855 |
|
|
| 856 |
|
|
| 857 |
|
|
| 858 |
|
|
| 859 |
|
|
| 860 |
|
|
| 861 |
|
|
| 862 |
|
|
| 863 |
|
|
| 864 |
|
|
| 865 |
|
|
| 866 |
|
|
| 867 |
|
|
| 868 |
|
|
| 869 |
|
|
| 870 |
|
|
| 871 |
|
|
| 872 |
|
|
| 873 |
|
|
| 874 |
|
|
| 875 |
|
|
| 876 |
|
|
| 877 |
|
|
| 878 |
|
|
| 879 |
|
|
| 880 |
|
|
| 881 |
|
|
| 882 |
|
|
| 883 |
|
|
| 884 |
|
|
| 885 |
|
|
| 886 |
|
|
| 887 |
|
|
| 888 |
|
|
| 680 | 889 |
|
| 681 | 890 |
|
| 682 | 891 |
|
@@ -706,17 +915,22 @@ impl CoderRuntimeSession {
| 706 | 915 |
|
| 707 | 916 |
|
| 708 | 917 |
|
| 918 |
|
|
| 709 | 919 |
|
| 710 | 920 |
|
| 711 |
|
|
| 921 |
|
|
| 712 | 922 |
|
| 713 | 923 |
|
| 714 |
|
|
| 715 |
|
|
| 924 |
|
|
| 925 |
|
|
| 926 |
|
|
| 927 |
|
|
| 928 |
|
|
| 716 | 929 |
|
| 717 | 930 |
|
| 718 | 931 |
|
| 719 | 932 |
|
| 933 |
|
|
| 720 | 934 |
|
| 721 | 935 |
|
| 722 | 936 |
|
@@ -741,6 +955,10 @@ impl CoderRuntimeSession {
| 741 | 955 |
|
| 742 | 956 |
|
| 743 | 957 |
|
| 958 |
|
|
| 959 |
|
|
| 960 |
|
|
| 961 |
|
|
| 744 | 962 |
|
| 745 | 963 |
|
| 746 | 964 |
|
@@ -785,15 +1003,16 @@ impl CoderRuntimeSession {
| 785 | 1003 |
|
| 786 | 1004 |
|
| 787 | 1005 |
|
| 788 |
|
|
| 1006 |
|
|
| 789 | 1007 |
|
| 790 | 1008 |
|
| 791 | 1009 |
|
| 792 |
|
|
| 793 |
|
|
| 1010 |
|
|
| 1011 |
|
|
| 794 | 1012 |
|
| 795 | 1013 |
|
| 796 |
|
|
| 1014 |
|
|
| 1015 |
|
|
| 797 | 1016 |
|
| 798 | 1017 |
|
| 799 | 1018 |
|
@@ -804,11 +1023,16 @@ impl CoderRuntimeSession {
| 804 | 1023 |
|
| 805 | 1024 |
|
| 806 | 1025 |
|
| 807 |
|
|
| 1026 |
|
|
| 808 | 1027 |
|
| 809 | 1028 |
|
| 810 |
|
|
| 811 |
|
|
| 1029 |
|
|
| 1030 |
|
|
| 1031 |
|
|
| 1032 |
|
|
| 1033 |
|
|
| 1034 |
|
|
| 1035 |
|
|
| 812 | 1036 |
|
| 813 | 1037 |
|
| 814 | 1038 |
|
@@ -823,6 +1047,14 @@ impl CoderRuntimeSession {
| 823 | 1047 |
|
| 824 | 1048 |
|
| 825 | 1049 |
|
| 1050 |
|
|
| 1051 |
|
|
| 1052 |
|
|
| 1053 |
|
|
| 1054 |
|
|
| 1055 |
|
|
| 1056 |
|
|
| 1057 |
|
|
| 826 | 1058 |
|
| 827 | 1059 |
|
| 828 | 1060 |
|
@@ -842,24 +1074,55 @@ impl CoderRuntimeSession {
| 842 | 1074 |
|
| 843 | 1075 |
|
| 844 | 1076 |
|
| 1077 |
|
|
| 1078 |
|
|
| 845 | 1079 |
|
| 846 | 1080 |
|
| 847 | 1081 |
|
| 848 |
|
|
| 1082 |
|
|
| 1083 |
|
|
| 1084 |
|
|
| 849 | 1085 |
|
| 850 | 1086 |
|
| 851 | 1087 |
|
| 852 |
|
|
| 1088 |
|
|
| 853 | 1089 |
|
| 854 | 1090 |
|
| 855 |
|
|
| 856 |
|
|
| 1091 |
|
|
| 1092 |
|
|
| 857 | 1093 |
|
| 858 | 1094 |
|
| 859 | 1095 |
|
| 860 | 1096 |
|
| 1097 |
|
|
| 1098 |
|
|
| 1099 |
|
|
| 1100 |
|
|
| 1101 |
|
|
| 1102 |
|
|
| 1103 |
|
|
| 1104 |
|
|
| 1105 |
|
|
| 1106 |
|
|
| 1107 |
|
|
| 1108 |
|
|
| 1109 |
|
|
| 1110 |
|
|
| 1111 |
|
|
| 1112 |
|
|
| 1113 |
|
|
| 1114 |
|
|
| 1115 |
|
|
| 1116 |
|
|
| 1117 |
|
|
| 1118 |
|
|
| 1119 |
|
|
| 1120 |
|
|
| 861 | 1121 |
|
| 862 |
|
|
| 1122 |
|
|
| 1123 |
|
|
| 1124 |
|
|
| 1125 |
|
|
| 863 | 1126 |
|
| 864 | 1127 |
|
| 865 | 1128 |
|
@@ -883,6 +1146,7 @@ impl CoderRuntimeSession {
| 883 | 1146 |
|
| 884 | 1147 |
|
| 885 | 1148 |
|
| 1149 |
|
|
| 886 | 1150 |
|
| 887 | 1151 |
|
| 888 | 1152 |
|
@@ -892,6 +1156,12 @@ impl CoderRuntimeSession {
| 892 | 1156 |
|
| 893 | 1157 |
|
| 894 | 1158 |
|
| 1159 |
|
|
| 1160 |
|
|
| 1161 |
|
|
| 1162 |
|
|
| 1163 |
|
|
| 1164 |
|
|
| 895 | 1165 |
|
| 896 | 1166 |
|
| 897 | 1167 |
|
@@ -899,6 +1169,7 @@ impl CoderRuntimeSession {
| 899 | 1169 |
|
| 900 | 1170 |
|
| 901 | 1171 |
|
| 1172 |
|
|
| 902 | 1173 |
|
| 903 | 1174 |
|
| 904 | 1175 |
|
@@ -1087,7 +1358,11 @@ impl CoderRuntimeSession {
| 1087 | 1358 |
|
| 1088 | 1359 |
|
| 1089 | 1360 |
|
| 1090 |
|
|
| 1361 |
|
|
| 1362 |
|
|
| 1363 |
|
|
| 1364 |
|
|
| 1365 |
|
|
| 1091 | 1366 |
|
| 1092 | 1367 |
|
| 1093 | 1368 |
|
crates/openagents-cli/tests/delegate_test.rs modified +174
@@ -333,3 +333,177 @@ fn an_unknown_lane_is_not_silently_ox_alpha() {
| 333 | 333 |
|
| 334 | 334 |
|
| 335 | 335 |
|
| 336 |
|
|
| 337 |
|
|
| 338 |
|
|
| 339 |
|
|
| 340 |
|
|
| 341 |
|
|
| 342 |
|
|
| 343 |
|
|
| 344 |
|
|
| 345 |
|
|
| 346 |
|
|
| 347 |
|
|
| 348 |
|
|
| 349 |
|
|
| 350 |
|
|
| 351 |
|
|
| 352 |
|
|
| 353 |
|
|
| 354 |
|
|
| 355 |
|
|
| 356 |
|
|
| 357 |
|
|
| 358 |
|
|
| 359 |
|
|
| 360 |
|
|
| 361 |
|
|
| 362 |
|
|
| 363 |
|
|
| 364 |
|
|
| 365 |
|
|
| 366 |
|
|
| 367 |
|
|
| 368 |
|
|
| 369 |
|
|
| 370 |
|
|
| 371 |
|
|
| 372 |
|
|
| 373 |
|
|
| 374 |
|
|
| 375 |
|
|
| 376 |
|
|
| 377 |
|
|
| 378 |
|
|
| 379 |
|
|
| 380 |
|
|
| 381 |
|
|
| 382 |
|
|
| 383 |
|
|
| 384 |
|
|
| 385 |
|
|
| 386 |
|
|
| 387 |
|
|
| 388 |
|
|
| 389 |
|
|
| 390 |
|
|
| 391 |
|
|
| 392 |
|
|
| 393 |
|
|
| 394 |
|
|
| 395 |
|
|
| 396 |
|
|
| 397 |
|
|
| 398 |
|
|
| 399 |
|
|
| 400 |
|
|
| 401 |
|
|
| 402 |
|
|
| 403 |
|
|
| 404 |
|
|
| 405 |
|
|
| 406 |
|
|
| 407 |
|
|
| 408 |
|
|
| 409 |
|
|
| 410 |
|
|
| 411 |
|
|
| 412 |
|
|
| 413 |
|
|
| 414 |
|
|
| 415 |
|
|
| 416 |
|
|
| 417 |
|
|
| 418 |
|
|
| 419 |
|
|
| 420 |
|
|
| 421 |
|
|
| 422 |
|
|
| 423 |
|
|
| 424 |
|
|
| 425 |
|
|
| 426 |
|
|
| 427 |
|
|
| 428 |
|
|
| 429 |
|
|
| 430 |
|
|
| 431 |
|
|
| 432 |
|
|
| 433 |
|
|
| 434 |
|
|
| 435 |
|
|
| 436 |
|
|
| 437 |
|
|
| 438 |
|
|
| 439 |
|
|
| 440 |
|
|
| 441 |
|
|
| 442 |
|
|
| 443 |
|
|
| 444 |
|
|
| 445 |
|
|
| 446 |
|
|
| 447 |
|
|
| 448 |
|
|
| 449 |
|
|
| 450 |
|
|
| 451 |
|
|
| 452 |
|
|
| 453 |
|
|
| 454 |
|
|
| 455 |
|
|
| 456 |
|
|
| 457 |
|
|
| 458 |
|
|
| 459 |
|
|
| 460 |
|
|
| 461 |
|
|
| 462 |
|
|
| 463 |
|
|
| 464 |
|
|
| 465 |
|
|
| 466 |
|
|
| 467 |
|
|
| 468 |
|
|
| 469 |
|
|
| 470 |
|
|
| 471 |
|
|
| 472 |
|
|
| 473 |
|
|
| 474 |
|
|
| 475 |
|
|
| 476 |
|
|
| 477 |
|
|
| 478 |
|
|
| 479 |
|
|
| 480 |
|
|
| 481 |
|
|
| 482 |
|
|
| 483 |
|
|
| 484 |
|
|
| 485 |
|
|
| 486 |
|
|
| 487 |
|
|
| 488 |
|
|
| 489 |
|
|
| 490 |
|
|
| 491 |
|
|
| 492 |
|
|
| 493 |
|
|
| 494 |
|
|
| 495 |
|
|
| 496 |
|
|
| 497 |
|
|
| 498 |
|
|
| 499 |
|
|
| 500 |
|
|
| 501 |
|
|
| 502 |
|
|
| 503 |
|
|
| 504 |
|
|
| 505 |
|
|
| 506 |
|
|
| 507 |
|
|
| 508 |
|
|
| 509 |
|
crates/openagents-cli/tests/runtime_test.rs modified +537 -2
@@ -32,6 +32,9 @@ enum Reply {
| 32 | 32 |
|
| 33 | 33 |
|
| 34 | 34 |
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 35 | 38 |
|
| 36 | 39 |
|
| 37 | 40 |
|
@@ -82,7 +85,15 @@ where
| 82 | 85 |
|
| 83 | 86 |
|
| 84 | 87 |
|
| 85 |
|
|
| 88 |
|
|
| 89 |
|
|
| 90 |
|
|
| 91 |
|
|
| 92 |
|
|
| 93 |
|
|
| 94 |
|
|
| 95 |
|
|
| 96 |
|
|
| 86 | 97 |
|
| 87 | 98 |
|
| 88 | 99 |
|
@@ -368,10 +379,12 @@ async fn a_second_turn_reuses_the_first_turns_thread() {
| 368 | 379 |
|
| 369 | 380 |
|
| 370 | 381 |
|
| 382 |
|
|
| 383 |
|
|
| 371 | 384 |
|
| 372 | 385 |
|
| 373 | 386 |
|
| 374 |
|
|
| 387 |
|
|
| 375 | 388 |
|
| 376 | 389 |
|
| 377 | 390 |
|
@@ -929,3 +942,525 @@ async fn the_second_turn_carries_what_the_first_turn_answered() {
| 929 | 942 |
|
| 930 | 943 |
|
| 931 | 944 |
|
| 945 |
|
|
| 946 |
|
|
| 947 |
|
|
| 948 |
|
|
| 949 |
|
|
| 950 |
|
|
| 951 |
|
|
| 952 |
|
|
| 953 |
|
|
| 954 |
|
|
| 955 |
|
|
| 956 |
|
|
| 957 |
|
|
| 958 |
|
|
| 959 |
|
|
| 960 |
|
|
| 961 |
|
|
| 962 |
|
|
| 963 |
|
|
| 964 |
|
|
| 965 |
|
|
| 966 |
|
|
| 967 |
|
|
| 968 |
|
|
| 969 |
|
|
| 970 |
|
|
| 971 |
|
|
| 972 |
|
|
| 973 |
|
|
| 974 |
|
|
| 975 |
|
|
| 976 |
|
|
| 977 |
|
|
| 978 |
|
|
| 979 |
|
|
| 980 |
|
|
| 981 |
|
|
| 982 |
|
|
| 983 |
|
|
| 984 |
|
|
| 985 |
|
|
| 986 |
|
|
| 987 |
|
|
| 988 |
|
|
| 989 |
|
|
| 990 |
|
|
| 991 |
|
|
| 992 |
|
|
| 993 |
|
|
| 994 |
|
|
| 995 |
|
|
| 996 |
|
|
| 997 |
|
|
| 998 |
|
|
| 999 |
|
|
| 1000 |
|
|
| 1001 |
|
|
| 1002 |
|
|
| 1003 |
|
|
| 1004 |
|
|
| 1005 |
|
|
| 1006 |
|
|
| 1007 |
|
|
| 1008 |
|
|
| 1009 |
|
|
| 1010 |
|
|
| 1011 |
|
|
| 1012 |
|
|
| 1013 |
|
|
| 1014 |
|
|
| 1015 |
|
|
| 1016 |
|
|
| 1017 |
|
|
| 1018 |
|
|
| 1019 |
|
|
| 1020 |
|
|
| 1021 |
|
|
| 1022 |
|
|
| 1023 |
|
|
| 1024 |
|
|
| 1025 |
|
|
| 1026 |
|
|
| 1027 |
|
|
| 1028 |
|
|
| 1029 |
|
|
| 1030 |
|
|
| 1031 |
|
|
| 1032 |
|
|
| 1033 |
|
|
| 1034 |
|
|
| 1035 |
|
|
| 1036 |
|
|
| 1037 |
|
|
| 1038 |
|
|
| 1039 |
|
|
| 1040 |
|
|
| 1041 |
|
|
| 1042 |
|
|
| 1043 |
|
|
| 1044 |
|
|
| 1045 |
|
|
| 1046 |
|
|
| 1047 |
|
|
| 1048 |
|
|
| 1049 |
|
|
| 1050 |
|
|
| 1051 |
|
|
| 1052 |
|
|
| 1053 |
|
|
| 1054 |
|
|
| 1055 |
|
|
| 1056 |
|
|
| 1057 |
|
|
| 1058 |
|
|
| 1059 |
|
|
| 1060 |
|
|
| 1061 |
|
|
| 1062 |
|
|
| 1063 |
|
|
| 1064 |
|
|
| 1065 |
|
|
| 1066 |
|
|
| 1067 |
|
|
| 1068 |
|
|
| 1069 |
|
|
| 1070 |
|
|
| 1071 |
|
|
| 1072 |
|
|
| 1073 |
|
|
| 1074 |
|
|
| 1075 |
|
|
| 1076 |
|
|
| 1077 |
|
|
| 1078 |
|
|
| 1079 |
|
|
| 1080 |
|
|
| 1081 |
|
|
| 1082 |
|
|
| 1083 |
|
|
| 1084 |
|
|
| 1085 |
|
|
| 1086 |
|
|
| 1087 |
|
|
| 1088 |
|
|
| 1089 |
|
|
| 1090 |
|
|
| 1091 |
|
|
| 1092 |
|
|
| 1093 |
|
|
| 1094 |
|
|
| 1095 |
|
|
| 1096 |
|
|
| 1097 |
|
|
| 1098 |
|
|
| 1099 |
|
|
| 1100 |
|
|
| 1101 |
|
|
| 1102 |
|
|
| 1103 |
|
|
| 1104 |
|
|
| 1105 |
|
|
| 1106 |
|
|
| 1107 |
|
|
| 1108 |
|
|
| 1109 |
|
|
| 1110 |
|
|
| 1111 |
|
|
| 1112 |
|
|
| 1113 |
|
|
| 1114 |
|
|
| 1115 |
|
|
| 1116 |
|
|
| 1117 |
|
|
| 1118 |
|
|
| 1119 |
|
|
| 1120 |
|
|
| 1121 |
|
|
| 1122 |
|
|
| 1123 |
|
|
| 1124 |
|
|
| 1125 |
|
|
| 1126 |
|
|
| 1127 |
|
|
| 1128 |
|
|
| 1129 |
|
|
| 1130 |
|
|
| 1131 |
|
|
| 1132 |
|
|
| 1133 |
|
|
| 1134 |
|
|
| 1135 |
|
|
| 1136 |
|
|
| 1137 |
|
|
| 1138 |
|
|
| 1139 |
|
|
| 1140 |
|
|
| 1141 |
|
|
| 1142 |
|
|
| 1143 |
|
|
| 1144 |
|
|
| 1145 |
|
|
| 1146 |
|
|
| 1147 |
|
|
| 1148 |
|
|
| 1149 |
|
|
| 1150 |
|
|
| 1151 |
|
|
| 1152 |
|
|
| 1153 |
|
|
| 1154 |
|
|
| 1155 |
|
|
| 1156 |
|
|
| 1157 |
|
|
| 1158 |
|
|
| 1159 |
|
|
| 1160 |
|
|
| 1161 |
|
|
| 1162 |
|
|
| 1163 |
|
|
| 1164 |
|
|
| 1165 |
|
|
| 1166 |
|
|
| 1167 |
|
|
| 1168 |
|
|
| 1169 |
|
|
| 1170 |
|
|
| 1171 |
|
|
| 1172 |
|
|
| 1173 |
|
|
| 1174 |
|
|
| 1175 |
|
|
| 1176 |
|
|
| 1177 |
|
|
| 1178 |
|
|
| 1179 |
|
|
| 1180 |
|
|
| 1181 |
|
|
| 1182 |
|
|
| 1183 |
|
|
| 1184 |
|
|
| 1185 |
|
|
| 1186 |
|
|
| 1187 |
|
|
| 1188 |
|
|
| 1189 |
|
|
| 1190 |
|
|
| 1191 |
|
|
| 1192 |
|
|
| 1193 |
|
|
| 1194 |
|
|
| 1195 |
|
|
| 1196 |
|
|
| 1197 |
|
|
| 1198 |
|
|
| 1199 |
|
|
| 1200 |
|
|
| 1201 |
|
|
| 1202 |
|
|
| 1203 |
|
|
| 1204 |
|
|
| 1205 |
|
|
| 1206 |
|
|
| 1207 |
|
|
| 1208 |
|
|
| 1209 |
|
|
| 1210 |
|
|
| 1211 |
|
|
| 1212 |
|
|
| 1213 |
|
|
| 1214 |
|
|
| 1215 |
|
|
| 1216 |
|
|
| 1217 |
|
|
| 1218 |
|
|
| 1219 |
|
|
| 1220 |
|
|
| 1221 |
|
|
| 1222 |
|
|
| 1223 |
|
|
| 1224 |
|
|
| 1225 |
|
|
| 1226 |
|
|
| 1227 |
|
|
| 1228 |
|
|
| 1229 |
|
|
| 1230 |
|
|
| 1231 |
|
|
| 1232 |
|
|
| 1233 |
|
|
| 1234 |
|
|
| 1235 |
|
|
| 1236 |
|
|
| 1237 |
|
|
| 1238 |
|
|
| 1239 |
|
|
| 1240 |
|
|
| 1241 |
|
|
| 1242 |
|
|
| 1243 |
|
|
| 1244 |
|
|
| 1245 |
|
|
| 1246 |
|
|
| 1247 |
|
|
| 1248 |
|
|
| 1249 |
|
|
| 1250 |
|
|
| 1251 |
|
|
| 1252 |
|
|
| 1253 |
|
|
| 1254 |
|
|
| 1255 |
|
|
| 1256 |
|
|
| 1257 |
|
|
| 1258 |
|
|
| 1259 |
|
|
| 1260 |
|
|
| 1261 |
|
|
| 1262 |
|
|
| 1263 |
|
|
| 1264 |
|
|
| 1265 |
|
|
| 1266 |
|
|
| 1267 |
|
|
| 1268 |
|
|
| 1269 |
|
|
| 1270 |
|
|
| 1271 |
|
|
| 1272 |
|
|
| 1273 |
|
|
| 1274 |
|
|
| 1275 |
|
|
| 1276 |
|
|
| 1277 |
|
|
| 1278 |
|
|
| 1279 |
|
|
| 1280 |
|
|
| 1281 |
|
|
| 1282 |
|
|
| 1283 |
|
|
| 1284 |
|
|
| 1285 |
|
|
| 1286 |
|
|
| 1287 |
|
|
| 1288 |
|
|
| 1289 |
|
|
| 1290 |
|
|
| 1291 |
|
|
| 1292 |
|
|
| 1293 |
|
|
| 1294 |
|
|
| 1295 |
|
|
| 1296 |
|
|
| 1297 |
|
|
| 1298 |
|
|
| 1299 |
|
|
| 1300 |
|
|
| 1301 |
|
|
| 1302 |
|
|
| 1303 |
|
|
| 1304 |
|
|
| 1305 |
|
|
| 1306 |
|
|
| 1307 |
|
|
| 1308 |
|
|
| 1309 |
|
|
| 1310 |
|
|
| 1311 |
|
|
| 1312 |
|
|
| 1313 |
|
|
| 1314 |
|
|
| 1315 |
|
|
| 1316 |
|
|
| 1317 |
|
|
| 1318 |
|
|
| 1319 |
|
|
| 1320 |
|
|
| 1321 |
|
|
| 1322 |
|
|
| 1323 |
|
|
| 1324 |
|
|
| 1325 |
|
|
| 1326 |
|
|
| 1327 |
|
|
| 1328 |
|
|
| 1329 |
|
|
| 1330 |
|
|
| 1331 |
|
|
| 1332 |
|
|
| 1333 |
|
|
| 1334 |
|
|
| 1335 |
|
|
| 1336 |
|
|
| 1337 |
|
|
| 1338 |
|
|
| 1339 |
|
|
| 1340 |
|
|
| 1341 |
|
|
| 1342 |
|
|
| 1343 |
|
|
| 1344 |
|
|
| 1345 |
|
|
| 1346 |
|
|
| 1347 |
|
|
| 1348 |
|
|
| 1349 |
|
|
| 1350 |
|
|
| 1351 |
|
|
| 1352 |
|
|
| 1353 |
|
|
| 1354 |
|
|
| 1355 |
|
|
| 1356 |
|
|
| 1357 |
|
|
| 1358 |
|
|
| 1359 |
|
|
| 1360 |
|
|
| 1361 |
|
|
| 1362 |
|
|
| 1363 |
|
|
| 1364 |
|
|
| 1365 |
|
|
| 1366 |
|
|
| 1367 |
|
|
| 1368 |
|
|
| 1369 |
|
|
| 1370 |
|
|
| 1371 |
|
|
| 1372 |
|
|
| 1373 |
|
|
| 1374 |
|
|
| 1375 |
|
|
| 1376 |
|
|
| 1377 |
|
|
| 1378 |
|
|
| 1379 |
|
|
| 1380 |
|
|
| 1381 |
|
|
| 1382 |
|
|
| 1383 |
|
|
| 1384 |
|
|
| 1385 |
|
|
| 1386 |
|
|
| 1387 |
|
|
| 1388 |
|
|
| 1389 |
|
|
| 1390 |
|
|
| 1391 |
|
|
| 1392 |
|
|
| 1393 |
|
|
| 1394 |
|
|
| 1395 |
|
|
| 1396 |
|
|
| 1397 |
|
|
| 1398 |
|
|
| 1399 |
|
|
| 1400 |
|
|
| 1401 |
|
|
| 1402 |
|
|
| 1403 |
|
|
| 1404 |
|
|
| 1405 |
|
|
| 1406 |
|
|
| 1407 |
|
|
| 1408 |
|
|
| 1409 |
|
|
| 1410 |
|
|
| 1411 |
|
|
| 1412 |
|
|
| 1413 |
|
|
| 1414 |
|
|
| 1415 |
|
|
| 1416 |
|
|
| 1417 |
|
|
| 1418 |
|
|
| 1419 |
|
|
| 1420 |
|
|
| 1421 |
|
|
| 1422 |
|
|
| 1423 |
|
|
| 1424 |
|
|
| 1425 |
|
|
| 1426 |
|
|
| 1427 |
|
|
| 1428 |
|
|
| 1429 |
|
|
| 1430 |
|
|
| 1431 |
|
|
| 1432 |
|
|
| 1433 |
|
|
| 1434 |
|
|
| 1435 |
|
|
| 1436 |
|
|
| 1437 |
|
|
| 1438 |
|
|
| 1439 |
|
|
| 1440 |
|
|
| 1441 |
|
|
| 1442 |
|
|
| 1443 |
|
|
| 1444 |
|
|
| 1445 |
|
|
| 1446 |
|
|
| 1447 |
|
|
| 1448 |
|
|
| 1449 |
|
|
| 1450 |
|
|
| 1451 |
|
|
| 1452 |
|
|
| 1453 |
|
|
| 1454 |
|
|
| 1455 |
|
|
| 1456 |
|
|
| 1457 |
|
|
| 1458 |
|
|
| 1459 |
|
|
| 1460 |
|
|
| 1461 |
|
|
| 1462 |
|
|
| 1463 |
|
|
| 1464 |
|
|
| 1465 |
|
|
| 1466 |
|