File size: 10,615 Bytes
7556728
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<svg xmlns="http://www.w3.org/2000/svg" width="1240" height="720" viewBox="0 0 1240 720" font-family="Helvetica Neue, Helvetica, Arial, sans-serif">
  <defs>
    <linearGradient id="rootGrad" x1="0" y1="0" x2="1" y2="1">
      <stop offset="0" stop-color="#4F46E5"/><stop offset="1" stop-color="#7C3AED"/>
    </linearGradient>
    <filter id="soft" x="-20%" y="-20%" width="140%" height="140%">
      <feDropShadow dx="0" dy="3" stdDeviation="6" flood-color="#0F172A" flood-opacity="0.10"/>
    </filter>
    <marker id="mSel" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0 0L10 5L0 10z" fill="#4F46E5"/>
    </marker>
    <marker id="mExp" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0 0L10 5L0 10z" fill="#94A3B8"/>
    </marker>
    <marker id="mPru" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0 0L10 5L0 10z" fill="#CBD5E1"/>
    </marker>
    <marker id="mWin" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0 0L10 5L0 10z" fill="#059669"/>
    </marker>
    <g id="ic-search" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round">
      <circle cx="10.5" cy="10.5" r="5.5"/><path d="M14.8 14.8L20 20"/>
    </g>
    <g id="ic-db" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round">
      <ellipse cx="12" cy="6" rx="7" ry="2.6"/><path d="M5 6v12c0 1.4 3.1 2.6 7 2.6s7-1.2 7-2.6V6"/><path d="M5 12c0 1.4 3.1 2.6 7 2.6s7-1.2 7-2.6"/>
    </g>
    <g id="ic-plug" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
      <path d="M9 7V3M15 7V3M7 7h10v4a5 5 0 0 1-10 0zM12 16v5"/>
    </g>
    <g id="ic-term" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
      <rect x="3" y="4" width="18" height="16" rx="2"/><path d="M7 9l3 3-3 3M12.5 15H17"/>
    </g>
    <g id="ic-scale" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
      <path d="M12 4v16M7 20h10M12 7l6-1M12 7L6 6"/><path d="M4 12l2-6 2 6a2.6 2.6 0 0 1-4 0zM16 11l2-6 2 6a2.6 2.6 0 0 1-4 0z"/>
    </g>
    <g id="ic-layers" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
      <path d="M12 3l9 5-9 5-9-5z"/><path d="M3 13l9 5 9-5"/>
    </g>
  </defs>

  <rect width="1240" height="720" fill="#F8FAFC"/>
  <text x="44" y="56" font-size="26" font-weight="700" fill="#0F172A">Tree Search over Tool-Call Trajectories</text>
  <text x="44" y="82" font-size="14" fill="#64748B">Value-guided expansion: each node is a tool call, v(s) scores the partial trajectory</text>

  <!-- ══ edges (drawn first, under nodes) ══ -->
  <!-- root β†’ A : selected -->
  <path d="M560 178 C 480 220, 400 230, 318 276" fill="none" stroke="#C7D2FE" stroke-width="9" stroke-linecap="round"/>
  <path d="M560 178 C 480 220, 400 230, 318 276" fill="none" stroke="#4F46E5" stroke-width="3.2" marker-end="url(#mSel)"/>
  <!-- root β†’ B : explored -->
  <path d="M620 178 V 274" fill="none" stroke="#94A3B8" stroke-width="2" marker-end="url(#mExp)"/>
  <!-- root β†’ C : pruned -->
  <path d="M680 178 C 770 220, 850 230, 926 274" fill="none" stroke="#CBD5E1" stroke-width="2" stroke-dasharray="6 5" marker-end="url(#mPru)"/>
  <!-- A β†’ A1 : selected -->
  <path d="M290 358 C 280 400, 272 414, 264 454" fill="none" stroke="#C7D2FE" stroke-width="9" stroke-linecap="round"/>
  <path d="M290 358 C 280 400, 272 414, 264 454" fill="none" stroke="#4F46E5" stroke-width="3.2" marker-end="url(#mSel)"/>
  <!-- A β†’ A2 : explored -->
  <path d="M340 358 C 400 400, 450 412, 512 454" fill="none" stroke="#94A3B8" stroke-width="2" marker-end="url(#mExp)"/>
  <!-- B β†’ B1 : pruned -->
  <path d="M650 358 C 710 400, 750 412, 800 454" fill="none" stroke="#CBD5E1" stroke-width="2" stroke-dasharray="6 5" marker-end="url(#mPru)"/>
  <!-- A1 β†’ answer : winning -->
  <path d="M260 538 V 596" fill="none" stroke="#A7F3D0" stroke-width="9" stroke-linecap="round"/>
  <path d="M260 538 V 596" fill="none" stroke="#059669" stroke-width="3.2" marker-end="url(#mWin)"/>

  <!-- ══ root ══ -->
  <g filter="url(#soft)"><rect x="500" y="110" width="240" height="68" rx="14" fill="url(#rootGrad)"/></g>
  <text x="620" y="140" font-size="16" font-weight="700" fill="#FFFFFF" text-anchor="middle">User Query</text>
  <text x="620" y="161" font-size="12" fill="#E0E7FF" text-anchor="middle">"cheapest direct flight MEL β†’ SIN, ≀ $400"</text>

  <!-- ══ level 1 ══ -->
  <!-- A: selected -->
  <g filter="url(#soft)"><rect x="185" y="280" width="230" height="78" rx="12" fill="#FFFFFF" stroke="#4F46E5" stroke-width="2"/></g>
  <rect x="199" y="296" width="44" height="44" rx="11" fill="#EEF2FF"/>
  <use href="#ic-search" transform="translate(208,305) scale(1.1)" color="#4F46E5"/>
  <text x="255" y="314" font-size="13.5" font-weight="700" fill="#0F172A" font-family="Menlo, SF Mono, monospace">search_flights</text>
  <text x="255" y="334" font-size="11" fill="#64748B" font-family="Menlo, SF Mono, monospace">(MEL→SIN, direct)</text>
  <rect x="363" y="269" width="52" height="22" rx="11" fill="#4F46E5"/>
  <text x="389" y="284" font-size="11.5" font-weight="700" fill="#FFFFFF" text-anchor="middle">0.82</text>

  <!-- B: explored -->
  <g filter="url(#soft)"><rect x="505" y="280" width="230" height="78" rx="12" fill="#FFFFFF" stroke="#CBD5E1" stroke-width="1.5"/></g>
  <rect x="519" y="296" width="44" height="44" rx="11" fill="#F1F5F9"/>
  <use href="#ic-db" transform="translate(528,305) scale(1.1)" color="#64748B"/>
  <text x="575" y="314" font-size="13.5" font-weight="700" fill="#334155" font-family="Menlo, SF Mono, monospace">query_history</text>
  <text x="575" y="334" font-size="11" fill="#94A3B8" font-family="Menlo, SF Mono, monospace">(user preferences)</text>
  <rect x="683" y="269" width="52" height="22" rx="11" fill="#E2E8F0"/>
  <text x="709" y="284" font-size="11.5" font-weight="700" fill="#475569" text-anchor="middle">0.41</text>

  <!-- C: pruned -->
  <g opacity="0.65">
    <rect x="825" y="280" width="230" height="78" rx="12" fill="#FFFFFF" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="6 4"/>
    <rect x="839" y="296" width="44" height="44" rx="11" fill="#F8FAFC"/>
    <use href="#ic-plug" transform="translate(848,305) scale(1.1)" color="#94A3B8"/>
    <text x="895" y="314" font-size="13.5" font-weight="700" fill="#94A3B8" font-family="Menlo, SF Mono, monospace">call_airline_api</text>
    <text x="895" y="334" font-size="11" fill="#CBD5E1" font-family="Menlo, SF Mono, monospace">(auth missing βœ—)</text>
    <rect x="1003" y="269" width="52" height="22" rx="11" fill="#F1F5F9"/>
    <text x="1029" y="284" font-size="11.5" font-weight="700" fill="#94A3B8" text-anchor="middle">0.17</text>
  </g>

  <!-- ══ level 2 ══ -->
  <!-- A1 selected -->
  <g filter="url(#soft)"><rect x="145" y="460" width="230" height="78" rx="12" fill="#FFFFFF" stroke="#4F46E5" stroke-width="2"/></g>
  <rect x="159" y="476" width="44" height="44" rx="11" fill="#EEF2FF"/>
  <use href="#ic-term" transform="translate(168,485) scale(1.1)" color="#4F46E5"/>
  <text x="215" y="494" font-size="13.5" font-weight="700" fill="#0F172A" font-family="Menlo, SF Mono, monospace">filter_results</text>
  <text x="215" y="514" font-size="11" fill="#64748B" font-family="Menlo, SF Mono, monospace">(price ≀ 400, sort↑)</text>
  <rect x="323" y="449" width="52" height="22" rx="11" fill="#4F46E5"/>
  <text x="349" y="464" font-size="11.5" font-weight="700" fill="#FFFFFF" text-anchor="middle">0.88</text>

  <!-- A2 explored -->
  <g filter="url(#soft)"><rect x="425" y="460" width="230" height="78" rx="12" fill="#FFFFFF" stroke="#CBD5E1" stroke-width="1.5"/></g>
  <rect x="439" y="476" width="44" height="44" rx="11" fill="#F1F5F9"/>
  <use href="#ic-scale" transform="translate(448,485) scale(1.1)" color="#64748B"/>
  <text x="495" y="494" font-size="13.5" font-weight="700" fill="#334155" font-family="Menlo, SF Mono, monospace">compare_prices</text>
  <text x="495" y="514" font-size="11" fill="#94A3B8" font-family="Menlo, SF Mono, monospace">(3 carriers)</text>
  <rect x="603" y="449" width="52" height="22" rx="11" fill="#E2E8F0"/>
  <text x="629" y="464" font-size="11.5" font-weight="700" fill="#475569" text-anchor="middle">0.55</text>

  <!-- B1 pruned -->
  <g opacity="0.65">
    <rect x="715" y="460" width="230" height="78" rx="12" fill="#FFFFFF" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="6 4"/>
    <rect x="729" y="476" width="44" height="44" rx="11" fill="#F8FAFC"/>
    <use href="#ic-layers" transform="translate(738,485) scale(1.1)" color="#94A3B8"/>
    <text x="785" y="494" font-size="13.5" font-weight="700" fill="#94A3B8" font-family="Menlo, SF Mono, monospace">rerank_memory</text>
    <text x="785" y="514" font-size="11" fill="#CBD5E1" font-family="Menlo, SF Mono, monospace">(stale entries)</text>
    <rect x="893" y="449" width="52" height="22" rx="11" fill="#F1F5F9"/>
    <text x="919" y="464" font-size="11.5" font-weight="700" fill="#94A3B8" text-anchor="middle">0.33</text>
  </g>

  <!-- ══ answer ══ -->
  <g filter="url(#soft)"><rect x="110" y="600" width="300" height="60" rx="12" fill="#ECFDF5" stroke="#059669" stroke-width="2"/></g>
  <circle cx="140" cy="630" r="13" fill="#059669"/>
  <path d="M134 630l4.5 4.5 8-9" fill="none" stroke="#FFFFFF" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="162" y="626" font-size="13.5" font-weight="700" fill="#065F46">Final answer Β· SQ218, $372</text>
  <text x="162" y="646" font-size="11.5" fill="#059669">trajectory reward R(Ο„*) = 0.91</text>

  <!-- ══ legend ══ -->
  <g font-size="12" fill="#475569">
    <path d="M560 626 h44" stroke="#C7D2FE" stroke-width="8" stroke-linecap="round"/>
    <path d="M560 626 h44" stroke="#4F46E5" stroke-width="3"/>
    <text x="614" y="630">selected path</text>
    <path d="M720 626 h44" stroke="#94A3B8" stroke-width="2"/>
    <text x="774" y="630">explored</text>
    <path d="M860 626 h44" stroke="#CBD5E1" stroke-width="2" stroke-dasharray="6 5"/>
    <text x="914" y="630">pruned (v &lt; ΞΈ)</text>
  </g>
  <text x="44" y="695" font-size="11.5" fill="#94A3B8">Figure 2 Β· Generated as native SVG by Claude Code β€” icons are inline vector paths, no external assets.</text>
</svg>