@@ -1853,6 +1853,99 @@ describe("qa mock openai server", () => {
|
1853 | 1853 | }); |
1854 | 1854 | }); |
1855 | 1855 | |
| 1856 | +it("lets the latest exact marker prompt beat stale Telegram session_status history", async () => { |
| 1857 | +const server = await startQaMockOpenAiServer({ |
| 1858 | +host: "127.0.0.1", |
| 1859 | +port: 0, |
| 1860 | +}); |
| 1861 | +cleanups.push(async () => { |
| 1862 | +await server.stop(); |
| 1863 | +}); |
| 1864 | + |
| 1865 | +const response = await fetch(`${server.baseUrl}/v1/responses`, { |
| 1866 | +method: "POST", |
| 1867 | +headers: { |
| 1868 | +"content-type": "application/json", |
| 1869 | +}, |
| 1870 | +body: JSON.stringify({ |
| 1871 | +stream: false, |
| 1872 | +input: [ |
| 1873 | +{ |
| 1874 | +role: "user", |
| 1875 | +content: [ |
| 1876 | +{ |
| 1877 | +type: "input_text", |
| 1878 | +text: "Telegram current session_status QA check. Call session_status with sessionKey set to current.", |
| 1879 | +}, |
| 1880 | +], |
| 1881 | +}, |
| 1882 | +{ |
| 1883 | +role: "user", |
| 1884 | +content: [ |
| 1885 | +{ |
| 1886 | +type: "input_text", |
| 1887 | +text: "Telegram reply-chain marker QA. Reply exactly: QA-TELEGRAM-REPLY-CHAIN-OK", |
| 1888 | +}, |
| 1889 | +], |
| 1890 | +}, |
| 1891 | +], |
| 1892 | +}), |
| 1893 | +}); |
| 1894 | + |
| 1895 | +expect(response.status).toBe(200); |
| 1896 | +expect(await response.json()).toMatchObject({ |
| 1897 | +output: [ |
| 1898 | +{ |
| 1899 | +content: [{ text: "QA-TELEGRAM-REPLY-CHAIN-OK" }], |
| 1900 | +}, |
| 1901 | +], |
| 1902 | +}); |
| 1903 | +}); |
| 1904 | + |
| 1905 | +it("does not repeat stale Telegram session_status for later ordinary prompts", async () => { |
| 1906 | +const server = await startQaMockOpenAiServer({ |
| 1907 | +host: "127.0.0.1", |
| 1908 | +port: 0, |
| 1909 | +}); |
| 1910 | +cleanups.push(async () => { |
| 1911 | +await server.stop(); |
| 1912 | +}); |
| 1913 | + |
| 1914 | +const response = await fetch(`${server.baseUrl}/v1/responses`, { |
| 1915 | +method: "POST", |
| 1916 | +headers: { |
| 1917 | +"content-type": "application/json", |
| 1918 | +}, |
| 1919 | +body: JSON.stringify({ |
| 1920 | +stream: false, |
| 1921 | +input: [ |
| 1922 | +{ |
| 1923 | +role: "user", |
| 1924 | +content: [ |
| 1925 | +{ |
| 1926 | +type: "input_text", |
| 1927 | +text: "Telegram current session_status QA check. Call session_status with sessionKey set to current.", |
| 1928 | +}, |
| 1929 | +], |
| 1930 | +}, |
| 1931 | +{ |
| 1932 | +role: "user", |
| 1933 | +content: [ |
| 1934 | +{ |
| 1935 | +type: "input_text", |
| 1936 | +text: "@sut Telegram QA mention routing check. Reply with a short acknowledgement.", |
| 1937 | +}, |
| 1938 | +], |
| 1939 | +}, |
| 1940 | +], |
| 1941 | +}), |
| 1942 | +}); |
| 1943 | + |
| 1944 | +expect(response.status).toBe(200); |
| 1945 | +const payload = await response.json(); |
| 1946 | +expect(JSON.stringify(payload)).not.toContain("QA-TELEGRAM-CURRENT-SESSION"); |
| 1947 | +}); |
| 1948 | + |
1856 | 1949 | it("uses exact marker directives from request context when the latest user text is generic", async () => { |
1857 | 1950 | const server = await startQaMockOpenAiServer({ |
1858 | 1951 | host: "127.0.0.1", |
|