Repository navigation
Commit 3ab191c
fix(workspace): keep tool order stable across steps so the prompt cache hits (#1401)
* fix(workspace): keep tool order stable across steps so the prompt cache hits
`pinTurnTools` deleted every `datamate_`-prefixed tool and re-added the pinned
ones on each step after the first. Re-added keys move to the end of the record,
and the provider receives tools in record order. The prefix also matches the
native `datamate_manager`, which sits mid-record, so in workspace mode it moved
from position 79 to 92 on the second call of every turn and the whole ~35k-token
prompt missed Anthropic's cache.
The first catalog's key order is now recorded with the pinned engine tools and
the record is rebuilt in that order; keys new since then go last.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix(workspace): keep tools named after Object.prototype properties when pinning
The rebuild used `in` checks, which are true for inherited names such as
`constructor` or `toString`, so a tool with that name was dropped on every step
after the first. Use own-key checks.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>1 parent a94792a commit 3ab191c
2 files changed
Lines changed: 75 additions & 5 deletions
File tree
- packages/opencode
- src/altimate/workspace
- test/altimate/workspace
Lines changed: 16 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
436 | 436 | | |
437 | 437 | | |
438 | 438 | | |
439 | | - | |
440 | | - | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
441 | 445 | | |
442 | 446 | | |
443 | 447 | | |
444 | 448 | | |
445 | 449 | | |
446 | 450 | | |
447 | | - | |
| 451 | + | |
448 | 452 | | |
449 | 453 | | |
450 | 454 | | |
| |||
454 | 458 | | |
455 | 459 | | |
456 | 460 | | |
457 | | - | |
458 | | - | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
459 | 470 | | |
460 | 471 | | |
461 | 472 | | |
| |||
Lines changed: 59 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
916 | 916 | | |
917 | 917 | | |
918 | 918 | | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 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 | + | |
919 | 978 | | |
920 | 979 | | |
921 | 980 | | |
| |||
0 commit comments