@theia/ai-ide 1.71.0-next.72 → 1.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/lib/browser/frontend-module.d.ts.map +1 -1
  2. package/lib/browser/frontend-module.js +8 -0
  3. package/lib/browser/frontend-module.js.map +1 -1
  4. package/lib/browser/review/pr-review-agent.d.ts +19 -0
  5. package/lib/browser/review/pr-review-agent.d.ts.map +1 -0
  6. package/lib/browser/review/pr-review-agent.js +47 -0
  7. package/lib/browser/review/pr-review-agent.js.map +1 -0
  8. package/lib/browser/review/pr-review-prompt-template.d.ts +4 -0
  9. package/lib/browser/review/pr-review-prompt-template.d.ts.map +1 -0
  10. package/lib/browser/review/pr-review-prompt-template.js +437 -0
  11. package/lib/browser/review/pr-review-prompt-template.js.map +1 -0
  12. package/lib/browser/user-interaction-tool-renderer.d.ts +18 -0
  13. package/lib/browser/user-interaction-tool-renderer.d.ts.map +1 -0
  14. package/lib/browser/user-interaction-tool-renderer.js +330 -0
  15. package/lib/browser/user-interaction-tool-renderer.js.map +1 -0
  16. package/lib/browser/user-interaction-tool.d.ts +47 -0
  17. package/lib/browser/user-interaction-tool.d.ts.map +1 -0
  18. package/lib/browser/user-interaction-tool.js +397 -0
  19. package/lib/browser/user-interaction-tool.js.map +1 -0
  20. package/lib/browser/user-interaction-tool.spec.d.ts +2 -0
  21. package/lib/browser/user-interaction-tool.spec.d.ts.map +1 -0
  22. package/lib/browser/user-interaction-tool.spec.js +336 -0
  23. package/lib/browser/user-interaction-tool.spec.js.map +1 -0
  24. package/lib/common/user-interaction-tool.d.ts +53 -0
  25. package/lib/common/user-interaction-tool.d.ts.map +1 -0
  26. package/lib/common/user-interaction-tool.js +176 -0
  27. package/lib/common/user-interaction-tool.js.map +1 -0
  28. package/lib/common/user-interaction-tool.spec.d.ts +2 -0
  29. package/lib/common/user-interaction-tool.spec.d.ts.map +1 -0
  30. package/lib/common/user-interaction-tool.spec.js +216 -0
  31. package/lib/common/user-interaction-tool.spec.js.map +1 -0
  32. package/package.json +22 -22
  33. package/src/browser/frontend-module.ts +9 -0
  34. package/src/browser/review/pr-review-agent.ts +42 -0
  35. package/src/browser/review/pr-review-prompt-template.ts +449 -0
  36. package/src/browser/style/index.css +299 -0
  37. package/src/browser/user-interaction-tool-renderer.tsx +531 -0
  38. package/src/browser/user-interaction-tool.spec.ts +396 -0
  39. package/src/browser/user-interaction-tool.ts +423 -0
  40. package/src/common/user-interaction-tool.spec.ts +241 -0
  41. package/src/common/user-interaction-tool.ts +237 -0
@@ -1632,3 +1632,302 @@
1632
1632
  margin-top: calc(var(--theia-ui-padding) / 2);
1633
1633
  margin-bottom: var(--theia-ui-padding);
1634
1634
  }
1635
+
1636
+ /* User Interaction Tool Renderer Styles */
1637
+ .user-interaction-tool.title {
1638
+ font-weight: 600;
1639
+ font-family: var(--theia-ui-font-family);
1640
+ font-size: var(--theia-ui-font-size1);
1641
+ flex: 1;
1642
+ }
1643
+
1644
+ .user-interaction-tool.status {
1645
+ display: inline-flex;
1646
+ align-items: center;
1647
+ gap: calc(var(--theia-ui-padding) / 2);
1648
+ font-size: var(--theia-ui-font-size0);
1649
+ margin-left: auto;
1650
+ white-space: nowrap;
1651
+ }
1652
+
1653
+ .user-interaction-tool.status.completed {
1654
+ color: var(--theia-gitDecoration-addedResourceForeground, var(--theia-descriptionForeground));
1655
+ }
1656
+
1657
+ .user-interaction-tool.status.canceled {
1658
+ color: var(--theia-errorForeground);
1659
+ }
1660
+
1661
+ .user-interaction-tool.status.waiting {
1662
+ color: var(--theia-disabledForeground);
1663
+ }
1664
+
1665
+ /* Reuses the dots keyframes defined by ai-chat-ui's chat node header marker.
1666
+ The fixed width reserves space for the longest dots state ("...") so the
1667
+ label doesn't shift horizontally as the dots animate. */
1668
+ .user-interaction-tool.status.waiting::after {
1669
+ content: "";
1670
+ display: inline-block;
1671
+ width: 1.2em;
1672
+ text-align: left;
1673
+ animation: dots 1s steps(1, end) infinite;
1674
+ }
1675
+
1676
+ .user-interaction-tool.progress {
1677
+ display: flex;
1678
+ gap: 4px;
1679
+ padding: 0 calc(var(--theia-ui-padding) * 2) calc(var(--theia-ui-padding) * 2);
1680
+ }
1681
+
1682
+ .user-interaction-tool.progress-dot {
1683
+ position: relative;
1684
+ flex: 1;
1685
+ height: 3px;
1686
+ padding: 0;
1687
+ border: none;
1688
+ border-radius: 2px;
1689
+ background-color: var(--theia-widget-border);
1690
+ cursor: pointer;
1691
+ }
1692
+
1693
+ /* Expands the hit target above and below the slim visible bar so the
1694
+ button is easier to click without changing its visual size. */
1695
+ .user-interaction-tool.progress-dot::after {
1696
+ content: "";
1697
+ position: absolute;
1698
+ inset: -8px -2px;
1699
+ }
1700
+
1701
+ .user-interaction-tool.progress-dot:hover {
1702
+ background-color: var(--theia-button-hoverBackground);
1703
+ }
1704
+
1705
+ .user-interaction-tool.progress-dot:focus-visible {
1706
+ outline: 1px solid var(--theia-focusBorder);
1707
+ outline-offset: 2px;
1708
+ }
1709
+
1710
+ .user-interaction-tool.progress-dot.done {
1711
+ background-color: var(--theia-button-background);
1712
+ }
1713
+
1714
+ .user-interaction-tool.progress-dot.active {
1715
+ background-color: var(--theia-focusBorder);
1716
+ }
1717
+
1718
+ .user-interaction-tool.links {
1719
+ display: flex;
1720
+ flex-wrap: wrap;
1721
+ gap: calc(var(--theia-ui-padding) / 2);
1722
+ padding: 0 calc(var(--theia-ui-padding) * 2) var(--theia-ui-padding);
1723
+ }
1724
+
1725
+ .user-interaction-tool.link-button {
1726
+ display: inline-flex;
1727
+ align-items: center;
1728
+ gap: calc(var(--theia-ui-padding) / 2);
1729
+ padding: calc(var(--theia-ui-padding) / 2) var(--theia-ui-padding);
1730
+ background-color: var(--theia-button-secondaryBackground);
1731
+ color: var(--theia-button-secondaryForeground);
1732
+ border: 1px solid var(--theia-button-border);
1733
+ border-radius: 4px;
1734
+ cursor: pointer;
1735
+ font-size: var(--theia-ui-font-size1);
1736
+ transition: background-color 0.15s;
1737
+ }
1738
+
1739
+ .user-interaction-tool.link-button:hover {
1740
+ background-color: var(--theia-button-secondaryHoverBackground);
1741
+ }
1742
+
1743
+ .user-interaction-tool.message {
1744
+ padding: 0 calc(var(--theia-ui-padding) * 2);
1745
+ color: var(--theia-foreground);
1746
+ line-height: 1.5;
1747
+ /* Allow this flex child to shrink below the intrinsic width of its
1748
+ contents (e.g. wide code blocks) instead of pushing the wizard wider. */
1749
+ min-width: 0;
1750
+ max-width: 100%;
1751
+ box-sizing: border-box;
1752
+ }
1753
+
1754
+ .user-interaction-tool.message p {
1755
+ margin: 0 0 calc(var(--theia-ui-padding) / 2) 0;
1756
+ }
1757
+
1758
+ .user-interaction-tool.message p:last-child {
1759
+ margin-bottom: 0;
1760
+ }
1761
+
1762
+ .user-interaction-tool.message pre {
1763
+ max-width: 100%;
1764
+ overflow-x: auto;
1765
+ }
1766
+
1767
+ .user-interaction-tool.message code {
1768
+ word-break: break-word;
1769
+ }
1770
+
1771
+ .user-interaction-tool.message pre code {
1772
+ word-break: normal;
1773
+ }
1774
+
1775
+ .user-interaction-tool.options {
1776
+ display: flex;
1777
+ flex-wrap: wrap;
1778
+ gap: var(--theia-ui-padding);
1779
+ padding: var(--theia-ui-padding) calc(var(--theia-ui-padding) * 2);
1780
+ }
1781
+
1782
+ .user-interaction-tool.option-button {
1783
+ /* Stack the label and the hidden bold spacer in the same grid cell so the
1784
+ button reserves bold width up-front and does not grow when selected. */
1785
+ display: inline-grid;
1786
+ place-items: center;
1787
+ margin-left: 0;
1788
+ padding: calc(var(--theia-ui-padding) * 1.5) calc(var(--theia-ui-padding) * 4);
1789
+ font-size: var(--theia-ui-font-size1);
1790
+ min-width: 100px;
1791
+ }
1792
+
1793
+ .user-interaction-tool.option-button-label,
1794
+ .user-interaction-tool.option-button-bold-spacer {
1795
+ grid-area: 1 / 1;
1796
+ }
1797
+
1798
+ .user-interaction-tool.option-button-bold-spacer {
1799
+ font-weight: bold;
1800
+ visibility: hidden;
1801
+ pointer-events: none;
1802
+ }
1803
+
1804
+ .user-interaction-tool.option-button.selected .user-interaction-tool.option-button-label {
1805
+ font-weight: bold;
1806
+ }
1807
+
1808
+ .user-interaction-tool.option-button:disabled {
1809
+ opacity: 0.6;
1810
+ cursor: default;
1811
+ }
1812
+
1813
+ .user-interaction-tool.pending-text {
1814
+ color: var(--theia-descriptionForeground);
1815
+ font-style: italic;
1816
+ }
1817
+
1818
+ .user-interaction-tool.comment-section {
1819
+ display: flex;
1820
+ flex-direction: column;
1821
+ gap: calc(var(--theia-ui-padding) / 2);
1822
+ padding: calc(var(--theia-ui-padding) * 2) calc(var(--theia-ui-padding) * 2) var(--theia-ui-padding);
1823
+ }
1824
+
1825
+ .user-interaction-tool.comment-input-row {
1826
+ display: flex;
1827
+ gap: var(--theia-ui-padding);
1828
+ align-items: center;
1829
+ }
1830
+
1831
+ .user-interaction-tool.comment-input-field {
1832
+ flex: 1;
1833
+ box-sizing: border-box;
1834
+ }
1835
+
1836
+ .user-interaction-tool.comment-submit {
1837
+ white-space: nowrap;
1838
+ }
1839
+
1840
+ .user-interaction-tool.comment-list {
1841
+ list-style: none;
1842
+ margin: 0;
1843
+ padding: 0;
1844
+ display: flex;
1845
+ flex-direction: column;
1846
+ gap: calc(var(--theia-ui-padding) / 2);
1847
+ }
1848
+
1849
+ .user-interaction-tool.comment-item {
1850
+ display: flex;
1851
+ align-items: flex-start;
1852
+ justify-content: space-between;
1853
+ gap: var(--theia-ui-padding);
1854
+ padding: calc(var(--theia-ui-padding) / 2) var(--theia-ui-padding);
1855
+ background-color: var(--theia-editorWidget-background);
1856
+ border: 1px solid var(--theia-widget-border);
1857
+ border-radius: 3px;
1858
+ }
1859
+
1860
+ .user-interaction-tool.comment-text {
1861
+ flex: 1;
1862
+ white-space: pre-wrap;
1863
+ word-break: break-word;
1864
+ }
1865
+
1866
+ .user-interaction-tool.comment-remove {
1867
+ background: transparent;
1868
+ border: none;
1869
+ color: var(--theia-icon-foreground);
1870
+ cursor: pointer;
1871
+ padding: 2px;
1872
+ display: inline-flex;
1873
+ align-items: center;
1874
+ border-radius: 3px;
1875
+ }
1876
+
1877
+ .user-interaction-tool.comment-remove:hover {
1878
+ background-color: var(--theia-list-hoverBackground);
1879
+ }
1880
+
1881
+ .user-interaction-tool.advance-row {
1882
+ display: flex;
1883
+ justify-content: space-between;
1884
+ align-items: center;
1885
+ gap: var(--theia-ui-padding);
1886
+ padding: calc(var(--theia-ui-padding) * 1.5) calc(var(--theia-ui-padding) * 2);
1887
+ margin-top: calc(var(--theia-ui-padding) * 1.5);
1888
+ background-color: var(--theia-titleBar-inactiveBackground, var(--theia-editorGroupHeader-tabsBackground));
1889
+ border-top: 2px solid var(--theia-focusBorder);
1890
+ border-bottom-left-radius: inherit;
1891
+ border-bottom-right-radius: inherit;
1892
+ }
1893
+
1894
+ .user-interaction-tool.page-counter {
1895
+ font-family: var(--theia-code-font-family);
1896
+ font-size: var(--theia-ui-font-size1);
1897
+ font-weight: 500;
1898
+ color: var(--theia-descriptionForeground);
1899
+ letter-spacing: 0.05em;
1900
+ flex: 1;
1901
+ text-align: center;
1902
+ }
1903
+
1904
+ .user-interaction-tool.back-button,
1905
+ .user-interaction-tool.advance-button {
1906
+ display: inline-flex;
1907
+ align-items: center;
1908
+ gap: calc(var(--theia-ui-padding) / 2);
1909
+ padding: calc(var(--theia-ui-padding)) calc(var(--theia-ui-padding) * 2.5);
1910
+ font-size: var(--theia-ui-font-size1);
1911
+ min-width: 110px;
1912
+ border-radius: 4px;
1913
+ font-weight: 500;
1914
+ text-transform: uppercase;
1915
+ letter-spacing: 0.05em;
1916
+ }
1917
+
1918
+ .user-interaction-tool.back-button {
1919
+ justify-content: flex-start;
1920
+ }
1921
+
1922
+ .user-interaction-tool.advance-button {
1923
+ justify-content: flex-end;
1924
+ }
1925
+
1926
+ .user-interaction-tool.back-button:disabled {
1927
+ visibility: hidden;
1928
+ }
1929
+
1930
+ .user-interaction-tool.option-button.selected {
1931
+ outline: 2px solid var(--theia-focusBorder);
1932
+ outline-offset: -2px;
1933
+ }