mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-10-20 00:45:04 +02:00
Compare commits
551
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b85244b36 | ||
|
|
2b6fba8390 | ||
|
|
37b49756b5 | ||
|
|
6fd2d8e19b | ||
|
|
4d79c41a06 | ||
|
|
f0762473d0 | ||
|
|
aca826c553 | ||
|
|
1d1f5f455c | ||
|
|
58b72c3948 | ||
|
|
3b18e7d971 | ||
|
|
c062992806 | ||
|
|
9d3fe72e75 | ||
|
|
d2249e621d | ||
|
|
03a711c365 | ||
|
|
72366e846e | ||
|
|
0a09beca03 | ||
|
|
76ad0e0a10 | ||
|
|
6cf7da6d13 | ||
|
|
02267c1435 | ||
|
|
a717f44011 | ||
|
|
b88f065ad8 | ||
|
|
e2270456c4 | ||
|
|
3eeb9b8f6c | ||
|
|
14a1bf6317 | ||
|
|
98a8607c87 | ||
|
|
daf6f679ff | ||
|
|
74b5c88834 | ||
|
|
13e5ec711d | ||
|
|
e350817b8d | ||
|
|
2a927933f2 | ||
|
|
7c2aa2f923 | ||
|
|
1bd10bb254 | ||
|
|
e29ca9ec28 | ||
|
|
8d9cee45f2 | ||
|
|
f9925887aa | ||
|
|
6f2301c945 | ||
|
|
cb8a1da730 | ||
|
|
47b64d3507 | ||
|
|
33241ef363 | ||
|
|
93b841fc86 | ||
|
|
cb84d2ddfa | ||
|
|
1f581fa9ac | ||
|
|
6562587cba | ||
|
|
992cd726c4 | ||
|
|
403bb7e208 | ||
|
|
dc039cfac8 | ||
|
|
1ce016df8b | ||
|
|
23a16eb446 | ||
|
|
16d613488b | ||
|
|
99e174e575 | ||
|
|
41ce4981ac | ||
|
|
d00c9764fc | ||
|
|
4daf18256d | ||
|
|
9220cfba28 | ||
|
|
707c8583f4 | ||
|
|
30df46445b | ||
|
|
b8bd3000c6 | ||
|
|
e6ec6cc332 | ||
|
|
104485d18b | ||
|
|
c3e87fc31f | ||
|
|
2c38d1d448 | ||
|
|
9f6002a9dd | ||
|
|
78f5144bde | ||
|
|
eb09f2718f | ||
|
|
e0de166592 | ||
|
|
c45e92bd17 | ||
|
|
b4786d86b0 | ||
|
|
d53e96fcd7 | ||
|
|
26652e5e24 | ||
|
|
180cc38330 | ||
|
|
8723e66807 | ||
|
|
e4cb8bf797 | ||
|
|
03917411b4 | ||
|
|
e8825d071a | ||
|
|
78a062a907 | ||
|
|
c13b08de2e | ||
|
|
31b3dd2b94 | ||
|
|
9e92b84bcc | ||
|
|
2cca45b45a | ||
|
|
fac32d9503 | ||
|
|
5a99f07765 | ||
|
|
dc2d4af8ea | ||
|
|
748f438232 | ||
|
|
72b3a8c70a | ||
|
|
5d5377cfb9 | ||
|
|
0dbcbde119 | ||
|
|
ba6a85d342 | ||
|
|
8b887b4eb3 | ||
|
|
8ecc958e4c | ||
|
|
64f6f998d8 | ||
|
|
edd4e5bef9 | ||
|
|
fd4ef4f47a | ||
|
|
93d043bcd4 | ||
|
|
67be0c674d | ||
|
|
82d0209ce2 | ||
|
|
6909c587c2 | ||
|
|
7c1a87e5ab | ||
|
|
af5a605f31 | ||
|
|
40dd22ce2c | ||
|
|
4d86da80c3 | ||
|
|
edc9b44c47 | ||
|
|
78d0ec501d | ||
|
|
7973c163f3 | ||
|
|
a270742319 | ||
|
|
8cbdaeaff5 | ||
|
|
a95be24865 | ||
|
|
c2cb8e06be | ||
|
|
257f4bf385 | ||
|
|
6f95572e18 | ||
|
|
89394ef3e3 | ||
|
|
90c9d5d71d | ||
|
|
5b06a0c189 | ||
|
|
6b4453e1b1 | ||
|
|
d842e9df97 | ||
|
|
47acb5c3e4 | ||
|
|
e0adb4695c | ||
|
|
4fd7db2e53 | ||
|
|
5ded394e43 | ||
|
|
baea6dc8a4 | ||
|
|
5cfcb5c74a | ||
|
|
865930da78 | ||
|
|
319423b70a | ||
|
|
658c23547e | ||
|
|
568aace62e | ||
|
|
9e68cbbb3d | ||
|
|
c06076280e | ||
|
|
0c3140e758 | ||
|
|
db309ca1ae | ||
|
|
292adef7ba | ||
|
|
d47adfc34a | ||
|
|
e8326f134f | ||
|
|
c19591a689 | ||
|
|
5af2108307 | ||
|
|
cad804e87b | ||
|
|
7718df5437 | ||
|
|
9c7c7d3d75 | ||
|
|
3df25e65d5 | ||
|
|
7148c52bf6 | ||
|
|
f329b0d9d2 | ||
|
|
975c71a920 | ||
|
|
884ea63b49 | ||
|
|
35aff6e84e | ||
|
|
867305540c | ||
|
|
5bcb598f75 | ||
|
|
3fcc7b42cb | ||
|
|
13bad2bb69 | ||
|
|
6d8d30178d | ||
|
|
f1187c5469 | ||
|
|
7c16b7d284 | ||
|
|
837198ae08 | ||
|
|
554bba8036 | ||
|
|
12927ba79d | ||
|
|
96c3fbdddf | ||
|
|
5a9bb24b63 | ||
|
|
05982aeef2 | ||
|
|
d6a6325b55 | ||
|
|
6b19a3d156 | ||
|
|
052a07ddc7 | ||
|
|
aff40529a5 | ||
|
|
dcd4481ae2 | ||
|
|
6b93ebb97b | ||
|
|
9a09ea7703 | ||
|
|
bcfe015d9d | ||
|
|
90cdb48db0 | ||
|
|
199044f866 | ||
|
|
3808f98c14 | ||
|
|
060671983d | ||
|
|
bcb72a9305 | ||
|
|
141ff864f2 | ||
|
|
43d045f542 | ||
|
|
88785f4a74 | ||
|
|
b4d98bbb86 | ||
|
|
df3842ed88 | ||
|
|
4af3724ec2 | ||
|
|
0bd6006b27 | ||
|
|
4774b996d0 | ||
|
|
717edbba19 | ||
|
|
755a9ed055 | ||
|
|
d824f3bb3b | ||
|
|
14ecab7365 | ||
|
|
b03d74abe5 | ||
|
|
bee8fda006 | ||
|
|
ef611a9dcd | ||
|
|
fb4423c91d | ||
|
|
fe3f0bda81 | ||
|
|
3f2161efdb | ||
|
|
cef86f73d9 | ||
|
|
659cb6279e | ||
|
|
a606f48b70 | ||
|
|
9c4c4219cd | ||
|
|
fe2a5abf8d | ||
|
|
1568008db6 | ||
|
|
1bd87f514e | ||
|
|
334beda181 | ||
|
|
5cb5f4f1a6 | ||
|
|
14bc8de774 | ||
|
|
e343f26c03 | ||
|
|
1a824cf432 | ||
|
|
78aff9dbdc | ||
|
|
50779582ed | ||
|
|
31192bcdda | ||
|
|
d882818d6c | ||
|
|
e26667ea40 | ||
|
|
71f3ed9ef9 | ||
|
|
d3d3cc4c28 | ||
|
|
41cec25ad9 | ||
|
|
40dcf63a70 | ||
|
|
ecbf550be9 | ||
|
|
06f99fc6cd | ||
|
|
90a335de46 | ||
|
|
e5aabe05e1 | ||
|
|
4388235846 | ||
|
|
91bff42398 | ||
|
|
4f4b061907 | ||
|
|
c27727b16e | ||
|
|
ad4c711223 | ||
|
|
2f8c07320b | ||
|
|
4360adc725 | ||
|
|
dab8f648cb | ||
|
|
9f8529eab2 | ||
|
|
513c156c4b | ||
|
|
9a20c3952f | ||
|
|
66dee007b7 | ||
|
|
aafcf992ab | ||
|
|
c31a8d6ee2 | ||
|
|
a5d19e3ec3 | ||
|
|
7efc092873 | ||
|
|
fa901453fe | ||
|
|
8047ee067c | ||
|
|
ea85f02e03 | ||
|
|
d1be5a937f | ||
|
|
d360906f57 | ||
|
|
29a7961ca8 | ||
|
|
16cdabbf35 | ||
|
|
94cce06044 | ||
|
|
e0c6ec5bd3 | ||
|
|
fc68b9f6bf | ||
|
|
3c29a6cc11 | ||
|
|
64d54bd423 | ||
|
|
faff58ba1c | ||
|
|
555638a654 | ||
|
|
0b5f0841bf | ||
|
|
55f669989b | ||
|
|
29da6659cf | ||
|
|
954dd43c17 | ||
|
|
4c7ce3a945 | ||
|
|
10f8a87317 | ||
|
|
a7316a86bf | ||
|
|
15d6314379 | ||
|
|
62ddb6c9bd | ||
|
|
0d94a8f7d9 | ||
|
|
029afd3e14 | ||
|
|
20e852bffc | ||
|
|
dd3fea748f | ||
|
|
d3391d9ba4 | ||
|
|
aaf2641cc8 | ||
|
|
5e2c38c349 | ||
|
|
63e23c06c5 | ||
|
|
e5c47e46a8 | ||
|
|
b404439aa9 | ||
|
|
c3ebbba8ae | ||
|
|
0674b397f7 | ||
|
|
8dd4388c49 | ||
|
|
2ad99c04d3 | ||
|
|
cc509a363e | ||
|
|
ed261892df | ||
|
|
c7c8cd0a3c | ||
|
|
38a7b1e4da | ||
|
|
7b7327c168 | ||
|
|
97a4a348ff | ||
|
|
078120e548 | ||
|
|
7da783ef0e | ||
|
|
0ac6f915fb | ||
|
|
ba8f95964f | ||
|
|
64b98667a3 | ||
|
|
331840e6cc | ||
|
|
bb19f1c74c | ||
|
|
f11756387d | ||
|
|
b7a132db89 | ||
|
|
5e00b74cd4 | ||
|
|
4c5f1962ac | ||
|
|
8d8c3677ff | ||
|
|
b58d80dcf9 | ||
|
|
7608944e7f | ||
|
|
c070ba002c | ||
|
|
1bbac87e70 | ||
|
|
73b803ddc3 | ||
|
|
c7624e1f57 | ||
|
|
059d635f02 | ||
|
|
3795d7dd8e | ||
|
|
4551b8c625 | ||
|
|
cd37ede869 | ||
|
|
81981e43b6 | ||
|
|
2effe9a7d2 | ||
|
|
56a9060840 | ||
|
|
e40ca38daf | ||
|
|
b6bb5dbd53 | ||
|
|
c26e962d17 | ||
|
|
d94f7e03dc | ||
|
|
c76e0f3445 | ||
|
|
668e87d5e1 | ||
|
|
164442223e | ||
|
|
3a095183c5 | ||
|
|
2cb33b18e5 | ||
|
|
00418d98f7 | ||
|
|
1fd5805bef | ||
|
|
b0a948797a | ||
|
|
1eb5d50a55 | ||
|
|
a49be2fc52 | ||
|
|
d5d83cbd7e | ||
|
|
a0e0c28152 | ||
|
|
264f1e0f0e | ||
|
|
d5fb31e645 | ||
|
|
e1482d740f | ||
|
|
7c375976ab | ||
|
|
5b813e3d31 | ||
|
|
25969d9db7 | ||
|
|
f64a93b541 | ||
|
|
569d9e7f75 | ||
|
|
a64cccbd72 | ||
|
|
e0d3ee5b23 | ||
|
|
95cc6835a1 | ||
|
|
e7e059d02a | ||
|
|
5532ea8ff7 | ||
|
|
d168b8e245 | ||
|
|
6c242ef3bb | ||
|
|
0e49353fcd | ||
|
|
41711c1ffe | ||
|
|
ea2994d341 | ||
|
|
945ed7aaaa | ||
|
|
eed6a38ea4 | ||
|
|
ec9951e28a | ||
|
|
e677a271e5 | ||
|
|
49ad43ff08 | ||
|
|
a94470772f | ||
|
|
dd18c59a9b | ||
|
|
cbec6d5cd7 | ||
|
|
15970734e3 | ||
|
|
601abb2bc3 | ||
|
|
488782fb4a | ||
|
|
1c37158208 | ||
|
|
a3630418f9 | ||
|
|
10639d8775 | ||
|
|
2061f8ca41 | ||
|
|
1f8791953e | ||
|
|
96e52767ad | ||
|
|
9eac65f9f6 | ||
|
|
8e15bc6386 | ||
|
|
6a7e917e1d | ||
|
|
857d6c135c | ||
|
|
96429040de | ||
|
|
c4f8a1cdf1 | ||
|
|
d54b8a6e8d | ||
|
|
fe172cb4de | ||
|
|
1e76b66234 | ||
|
|
90a13cb6f7 | ||
|
|
1cc8966e2e | ||
|
|
a04d98f62f | ||
|
|
35fe222ca1 | ||
|
|
d19bba72b0 | ||
|
|
5957573625 | ||
|
|
91c394ffce | ||
|
|
d146e4a961 | ||
|
|
8007938d6b | ||
|
|
859e6162e8 | ||
|
|
e8b185e607 | ||
|
|
c32023df29 | ||
|
|
a228732423 | ||
|
|
b47926b1d9 | ||
|
|
64762887f0 | ||
|
|
5dd49762e3 | ||
|
|
d861dcc3c4 | ||
|
|
32abada521 | ||
|
|
2416c08760 | ||
|
|
fba480c582 | ||
|
|
50dc37ad5b | ||
|
|
1227c3fc7c | ||
|
|
2da8cfcf99 | ||
|
|
e7078f6502 | ||
|
|
a2e38b6121 | ||
|
|
4835c2bf68 | ||
|
|
d28dba453e | ||
|
|
0070df7451 | ||
|
|
b343c71b9b | ||
|
|
88becbd6e1 | ||
|
|
225ee06030 | ||
|
|
18a28261a4 | ||
|
|
c372641be8 | ||
|
|
6fd02cdf82 | ||
|
|
2df29f3dde | ||
|
|
8506505301 | ||
|
|
25343727fd | ||
|
|
0386120a5a | ||
|
|
21342fa0f6 | ||
|
|
d5e6b95817 | ||
|
|
d8c98f2e64 | ||
|
|
33a0f05804 | ||
|
|
d9ad8c62b9 | ||
|
|
3f3ef03395 | ||
|
|
f447f71a8e | ||
|
|
ac3ee8576d | ||
|
|
7227a0e740 | ||
|
|
1111a1ac6b | ||
|
|
7dd33e0b3a | ||
|
|
75ee346d18 | ||
|
|
2bcb9e7000 | ||
|
|
c9d22489b8 | ||
|
|
1a676c6340 | ||
|
|
1cf2ebb07b | ||
|
|
acf776f91a | ||
|
|
f0d924fab1 | ||
|
|
fc52061bc9 | ||
|
|
3be455e971 | ||
|
|
676e714c8b | ||
|
|
6f45c6ed09 | ||
|
|
65855cbe56 | ||
|
|
f056764132 | ||
|
|
cb1dc13a9d | ||
|
|
a5d2839431 | ||
|
|
cf67b424c2 | ||
|
|
ba05d18ab1 | ||
|
|
b4d91d1ce0 | ||
|
|
a801f1cd24 | ||
|
|
f2063d01fa | ||
|
|
d000bd2fc8 | ||
|
|
f743a5ce61 | ||
|
|
241dc37ba3 | ||
|
|
f79c385bf7 | ||
|
|
00e573c960 | ||
|
|
a3d3a70b5a | ||
|
|
9a8d88b8aa | ||
|
|
58354ec638 | ||
|
|
369c03a257 | ||
|
|
7ffd8f5129 | ||
|
|
ab484172ef | ||
|
|
be6e1a79dd | ||
|
|
41478abdf5 | ||
|
|
7a6e588c58 | ||
|
|
25339f3ee1 | ||
|
|
a95f5c27c6 | ||
|
|
f5d092f6a3 | ||
|
|
d4449ee5f0 | ||
|
|
f9c803a8c1 | ||
|
|
d84a616572 | ||
|
|
c97678bb11 | ||
|
|
2f80840c74 | ||
|
|
161c72b29f | ||
|
|
61cce93fd0 | ||
|
|
94e6651b55 | ||
|
|
1a4ac76b1e | ||
|
|
da75d51fe8 | ||
|
|
bd13b55afd | ||
|
|
0f703950d9 | ||
|
|
2b47377a78 | ||
|
|
f3bf13e1b1 | ||
|
|
806f884956 | ||
|
|
5e8e711170 | ||
|
|
2c0f90dd22 | ||
|
|
ffe3829cef | ||
|
|
d8b8edab08 | ||
|
|
ff80e6cb79 | ||
|
|
7ee7d846e2 | ||
|
|
53e9b40725 | ||
|
|
ad965357ce | ||
|
|
f0f1ab175a | ||
|
|
7d40c98434 | ||
|
|
56146b7df4 | ||
|
|
438c979a2e | ||
|
|
5b7276c0bb | ||
|
|
70b5a3ab85 | ||
|
|
60eb6e7c6f | ||
|
|
dd15dab111 | ||
|
|
0b49403635 | ||
|
|
4e1425665c | ||
|
|
1f08d74015 | ||
|
|
bedbac2aaf | ||
|
|
5c2d8c4cfa | ||
|
|
a11cc57345 | ||
|
|
e36af697cd | ||
|
|
a51a7000c5 | ||
|
|
53c7d815ae | ||
|
|
4b11881a70 | ||
|
|
cecfde6608 | ||
|
|
b14f2d4bf1 | ||
|
|
e0840e4826 | ||
|
|
7c6b1249fb | ||
|
|
037e80c6a3 | ||
|
|
59d9d9eb1f | ||
|
|
cf6231384c | ||
|
|
a95cbfdc6a | ||
|
|
cf96d5579f | ||
|
|
768bb74a2c | ||
|
|
ffd5942b31 | ||
|
|
5fb9ddfa2a | ||
|
|
b992238a5d | ||
|
|
a474745b67 | ||
|
|
5d64a5c41c | ||
|
|
d4fc993f1e | ||
|
|
843c982ba9 | ||
|
|
e6da49754d | ||
|
|
f78011e68c | ||
|
|
39aba4cb48 | ||
|
|
ed58694675 | ||
|
|
e0d799c075 | ||
|
|
b80dd1ca8b | ||
|
|
031fe500fb | ||
|
|
aab3acbaa6 | ||
|
|
3aa1bc3894 | ||
|
|
c5fd5196e2 | ||
|
|
be1a60554f | ||
|
|
873112d696 | ||
|
|
9f41fb4057 | ||
|
|
dd2349a90a | ||
|
|
776826ec99 | ||
|
|
9c98ad455d | ||
|
|
4e9709b8fb | ||
|
|
92abe0b726 | ||
|
|
80f9613959 | ||
|
|
3b77de7b21 | ||
|
|
f17057898d | ||
|
|
95fb44be88 | ||
|
|
1c8d010601 | ||
|
|
73cae1997d | ||
|
|
b8e86b0fb4 | ||
|
|
c09f62cf47 | ||
|
|
cf4f49c6e9 | ||
|
|
37aa8d6b63 | ||
|
|
8ffbd9665b | ||
|
|
7f683b21f5 | ||
|
|
d19814d7a3 | ||
|
|
51358b3cc4 | ||
|
|
ec97e15a3a | ||
|
|
640b5a9461 | ||
|
|
f2dfa07221 | ||
|
|
467b05532f | ||
|
|
79eec51c9a | ||
|
|
cff6082f1c | ||
|
|
9e560ff951 | ||
|
|
80942bf38c | ||
|
|
50bae27948 | ||
|
|
7c99e9ab50 | ||
|
|
f3c693a5bb | ||
|
|
e94fd2cad2 | ||
|
|
b4f270ad1f | ||
|
|
7ee9926f2e | ||
|
|
a20481d023 | ||
|
|
aa7e336989 | ||
|
|
db5d371769 | ||
|
|
a232bfbe60 | ||
|
|
c1182eb322 | ||
|
|
54e4554f49 |
No files matched your search
@@ -33,7 +33,7 @@ jobs:
|
||||
- name: Install dependencies and populate cache
|
||||
run: |
|
||||
echo "Building global UV cache for Python ${{ matrix.python-version }}..."
|
||||
uv sync --all-groups --all-extras --no-install-project
|
||||
uv sync --all-groups --all-extras
|
||||
echo "Cache populated successfully"
|
||||
|
||||
- name: Save uv caches
|
||||
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
enable-cache: false
|
||||
|
||||
- name: Install dependencies
|
||||
run: uv sync --all-groups --all-extras --no-install-project
|
||||
run: uv sync --all-packages --all-extras --no-install-project
|
||||
|
||||
- name: Get Changed Python Files
|
||||
id: changed-files
|
||||
|
||||
+32
-31
@@ -25,17 +25,17 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0 # Fetch all history for proper diff
|
||||
|
||||
- name: Restore global uv cache
|
||||
id: cache-restore
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cache/uv
|
||||
~/.local/share/uv
|
||||
.venv
|
||||
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
|
||||
restore-keys: |
|
||||
uv-main-py${{ matrix.python-version }}-
|
||||
# - name: Restore global uv cache
|
||||
# id: cache-restore
|
||||
# uses: actions/cache/restore@v4
|
||||
# with:
|
||||
# path: |
|
||||
# ~/.cache/uv
|
||||
# ~/.local/share/uv
|
||||
# .venv
|
||||
# key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
|
||||
# restore-keys: |
|
||||
# uv-main-py${{ matrix.python-version }}-
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
@@ -45,24 +45,24 @@ jobs:
|
||||
enable-cache: false
|
||||
|
||||
- name: Install the project
|
||||
run: uv sync --all-groups --all-extras
|
||||
run: uv sync --all-packages --all-extras
|
||||
|
||||
- name: Restore test durations
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: .test_durations_py*
|
||||
key: test-durations-py${{ matrix.python-version }}
|
||||
# - name: Restore test durations
|
||||
# uses: actions/cache/restore@v4
|
||||
# with:
|
||||
# path: .test_durations_py*
|
||||
# key: test-durations-py${{ matrix.python-version }}
|
||||
|
||||
- name: Run tests (group ${{ matrix.group }} of 8)
|
||||
run: |
|
||||
PYTHON_VERSION_SAFE=$(echo "${{ matrix.python-version }}" | tr '.' '_')
|
||||
DURATION_FILE=".test_durations_py${PYTHON_VERSION_SAFE}"
|
||||
|
||||
|
||||
# Temporarily always skip cached durations to fix test splitting
|
||||
# When durations don't match, pytest-split runs duplicate tests instead of splitting
|
||||
echo "Using even test splitting (duration cache disabled until fix merged)"
|
||||
DURATIONS_ARG=""
|
||||
|
||||
|
||||
# Original logic (disabled temporarily):
|
||||
# if [ ! -f "$DURATION_FILE" ]; then
|
||||
# echo "No cached durations found, tests will be split evenly"
|
||||
@@ -74,8 +74,8 @@ jobs:
|
||||
# echo "No test changes detected, using cached test durations for optimal splitting"
|
||||
# DURATIONS_ARG="--durations-path=${DURATION_FILE}"
|
||||
# fi
|
||||
|
||||
uv run pytest \
|
||||
|
||||
uv run pytest lib/crewai \
|
||||
--block-network \
|
||||
--timeout=30 \
|
||||
-vv \
|
||||
@@ -84,14 +84,15 @@ jobs:
|
||||
$DURATIONS_ARG \
|
||||
--durations=10 \
|
||||
-n auto \
|
||||
--maxfail=3
|
||||
--maxfail=3 \
|
||||
-m "not requires_local_services"
|
||||
|
||||
- name: Save uv caches
|
||||
if: steps.cache-restore.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cache/uv
|
||||
~/.local/share/uv
|
||||
.venv
|
||||
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
|
||||
# - name: Save uv caches
|
||||
# if: steps.cache-restore.outputs.cache-hit != 'true'
|
||||
# uses: actions/cache/save@v4
|
||||
# with:
|
||||
# path: |
|
||||
# ~/.cache/uv
|
||||
# ~/.local/share/uv
|
||||
# .venv
|
||||
# key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
enable-cache: false
|
||||
|
||||
- name: Install dependencies
|
||||
run: uv sync --all-groups --all-extras
|
||||
run: uv sync --all-packages --all-extras
|
||||
|
||||
- name: Get changed Python files
|
||||
id: changed-files
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
.pytest_cache
|
||||
__pycache__
|
||||
dist/
|
||||
lib/
|
||||
.env
|
||||
assets/*
|
||||
.idea
|
||||
|
||||
@@ -6,14 +6,19 @@ repos:
|
||||
entry: uv run ruff check
|
||||
language: system
|
||||
types: [python]
|
||||
files: ^lib/crewai/src/
|
||||
exclude: ^lib/crewai/
|
||||
- id: ruff-format
|
||||
name: ruff-format
|
||||
entry: uv run ruff format
|
||||
language: system
|
||||
types: [python]
|
||||
files: ^lib/crewai/src/
|
||||
exclude: ^lib/crewai/
|
||||
- id: mypy
|
||||
name: mypy
|
||||
entry: uv run mypy
|
||||
language: system
|
||||
types: [python]
|
||||
exclude: ^tests/
|
||||
files: ^lib/crewai/src/
|
||||
exclude: ^lib/crewai/
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1 @@
|
||||
3.13
|
||||
File renamed without changes.
@@ -0,0 +1,124 @@
|
||||
[project]
|
||||
name = "crewai"
|
||||
dynamic = ["version"]
|
||||
description = ""
|
||||
readme = "README.md"
|
||||
authors = [
|
||||
{ name = "Greyson Lalonde", email = "greyson.r.lalonde@gmail.com" }
|
||||
]
|
||||
keywords = [
|
||||
"crewai",
|
||||
"ai",
|
||||
"agents",
|
||||
"framework",
|
||||
"orchestration",
|
||||
"llm",
|
||||
"core",
|
||||
"typed",
|
||||
]
|
||||
classifiers = [
|
||||
"Development Status :: 3 - Alpha",
|
||||
"Intended Audience :: Developers",
|
||||
"Operating System :: OS Independent",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Topic :: Software Development :: Libraries :: Python Modules",
|
||||
"Typing :: Typed",
|
||||
]
|
||||
requires-python = ">=3.10, <3.14"
|
||||
dependencies = [
|
||||
# Core Dependencies
|
||||
"crewai",
|
||||
"pydantic>=2.11.9",
|
||||
"openai>=1.13.3",
|
||||
"litellm==1.74.9",
|
||||
"instructor>=1.3.3",
|
||||
# Text Processing
|
||||
"pdfplumber>=0.11.4",
|
||||
"regex>=2024.9.11",
|
||||
# Telemetry and Monitoring
|
||||
"opentelemetry-api>=1.30.0",
|
||||
"opentelemetry-sdk>=1.30.0",
|
||||
"opentelemetry-exporter-otlp-proto-http>=1.30.0",
|
||||
"tokenizers>=0.20.3",
|
||||
"openpyxl>=3.1.5",
|
||||
"pyvis>=0.3.2",
|
||||
# Authentication and Security
|
||||
"python-dotenv>=1.1.1",
|
||||
"pyjwt>=2.9.0",
|
||||
# Configuration and Utils
|
||||
"click>=8.1.7",
|
||||
"appdirs>=1.4.4",
|
||||
"jsonref>=1.1.0",
|
||||
"json-repair==0.25.2",
|
||||
"tomli-w>=1.1.0",
|
||||
"tomli>=2.0.2",
|
||||
"blinker>=1.9.0",
|
||||
"json5>=0.10.0",
|
||||
"portalocker==2.7.0",
|
||||
"chromadb~=1.1.0",
|
||||
"pydantic-settings>=2.10.1",
|
||||
"uv>=0.4.25",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
tools = [
|
||||
"crewai-tools",
|
||||
]
|
||||
embeddings = [
|
||||
"tiktoken~=0.8.0"
|
||||
]
|
||||
pdfplumber = [
|
||||
"pdfplumber>=0.11.4",
|
||||
]
|
||||
pandas = [
|
||||
"pandas>=2.2.3",
|
||||
]
|
||||
openpyxl = [
|
||||
"openpyxl>=3.1.5",
|
||||
]
|
||||
mem0 = ["mem0ai>=0.1.94"]
|
||||
docling = [
|
||||
"docling>=2.12.0",
|
||||
]
|
||||
aisuite = [
|
||||
"aisuite>=0.1.10",
|
||||
]
|
||||
qdrant = [
|
||||
"qdrant-client[fastembed]>=1.14.3",
|
||||
]
|
||||
aws = [
|
||||
"boto3>=1.40.38",
|
||||
]
|
||||
watson = [
|
||||
"ibm-watsonx-ai>=1.3.39",
|
||||
]
|
||||
voyageai = [
|
||||
"voyageai>=0.3.5",
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
crewai = "crewai.cli.cli:crewai"
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://crewai.com"
|
||||
Documentation = "https://docs.crewai.com"
|
||||
Repository = "https://github.com/crewAIInc/crewAI"
|
||||
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
asyncio_mode = "strict"
|
||||
asyncio_default_fixture_loop_scope = "function"
|
||||
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.version]
|
||||
path = "src/crewai/__init__.py"
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["src/crewai"]
|
||||
@@ -40,7 +40,7 @@ def _suppress_pydantic_deprecation_warnings() -> None:
|
||||
|
||||
_suppress_pydantic_deprecation_warnings()
|
||||
|
||||
__version__ = "0.201.1"
|
||||
__version__ = "1.0.0a0"
|
||||
_telemetry_submitted = False
|
||||
|
||||
|
||||
@@ -5,12 +5,13 @@ from collections.abc import Callable, Sequence
|
||||
from typing import (
|
||||
Any,
|
||||
Literal,
|
||||
cast,
|
||||
)
|
||||
|
||||
from pydantic import Field, InstanceOf, PrivateAttr, model_validator
|
||||
|
||||
from crewai.agents import CacheHandler
|
||||
from crewai.agents.agent_builder.base_agent import BaseAgent
|
||||
from crewai.agents.agent_builder.base_agent import BaseAgent, PlatformAppOrAction
|
||||
from crewai.agents.crew_agent_executor import CrewAgentExecutor
|
||||
from crewai.events.event_bus import crewai_event_bus
|
||||
from crewai.events.types.agent_events import (
|
||||
@@ -78,6 +79,7 @@ class Agent(BaseAgent):
|
||||
step_callback: Callback to be executed after each step of the agent execution.
|
||||
knowledge_sources: Knowledge sources for the agent.
|
||||
embedder: Embedder configuration for the agent.
|
||||
apps: List of applications that the agent can access through CrewAI Platform.
|
||||
"""
|
||||
|
||||
_times_executed: int = PrivateAttr(default=0)
|
||||
@@ -174,7 +176,7 @@ class Agent(BaseAgent):
|
||||
)
|
||||
|
||||
@model_validator(mode="before")
|
||||
def validate_from_repository(cls, v): # noqa: N805
|
||||
def validate_from_repository(cls, v): # noqa: N805
|
||||
if v is not None and (from_repository := v.get("from_repository")):
|
||||
return load_agent_from_repository(from_repository) | v
|
||||
return v
|
||||
@@ -271,11 +273,7 @@ class Agent(BaseAgent):
|
||||
# Add the reasoning plan to the task description
|
||||
task.description += f"\n\nReasoning Plan:\n{reasoning_output.plan.plan}"
|
||||
except Exception as e:
|
||||
if hasattr(self, "_logger"):
|
||||
self._logger.log("error", f"Error during reasoning process: {e!s}")
|
||||
else:
|
||||
print(f"Error during reasoning process: {e!s}")
|
||||
|
||||
self._logger.log("error", f"Error during reasoning process: {e!s}")
|
||||
self._inject_date_to_task(task)
|
||||
|
||||
if self.tools_handler:
|
||||
@@ -327,7 +325,7 @@ class Agent(BaseAgent):
|
||||
agent=self,
|
||||
task=task,
|
||||
)
|
||||
memory = contextual_memory.build_context_for_task(task, context) # type: ignore[arg-type]
|
||||
memory = contextual_memory.build_context_for_task(task, context or "")
|
||||
if memory.strip() != "":
|
||||
task_prompt += self.i18n.slice("memory").format(memory=memory)
|
||||
|
||||
@@ -579,7 +577,7 @@ class Agent(BaseAgent):
|
||||
agent=self,
|
||||
crew=self.crew,
|
||||
tools=parsed_tools,
|
||||
prompt=prompt, # type: ignore[arg-type]
|
||||
prompt=cast(dict[str, str], prompt),
|
||||
original_tools=raw_tools,
|
||||
stop_words=stop_words,
|
||||
max_iter=self.max_iter,
|
||||
@@ -599,6 +597,17 @@ class Agent(BaseAgent):
|
||||
agent_tools = AgentTools(agents=agents)
|
||||
return agent_tools.tools()
|
||||
|
||||
def get_platform_tools(self, apps: list[PlatformAppOrAction]) -> list[BaseTool]:
|
||||
try:
|
||||
from crewai_tools import ( # type: ignore[import-not-found]
|
||||
CrewaiPlatformTools, # type: ignore[import-untyped]
|
||||
)
|
||||
|
||||
return CrewaiPlatformTools(apps=apps)
|
||||
except Exception as e:
|
||||
self._logger.log("error", f"Error getting platform tools: {e!s}")
|
||||
return []
|
||||
|
||||
def get_multimodal_tools(self) -> Sequence[BaseTool]:
|
||||
from crewai.tools.agent_tools.add_image_tool import AddImageTool
|
||||
|
||||
@@ -606,7 +615,9 @@ class Agent(BaseAgent):
|
||||
|
||||
def get_code_execution_tools(self):
|
||||
try:
|
||||
from crewai_tools import CodeInterpreterTool # type: ignore
|
||||
from crewai_tools import ( # type: ignore[import-not-found]
|
||||
CodeInterpreterTool,
|
||||
)
|
||||
|
||||
# Set the unsafe_mode based on the code_execution_mode attribute
|
||||
unsafe_mode = self.code_execution_mode == "unsafe"
|
||||
@@ -695,14 +706,15 @@ class Agent(BaseAgent):
|
||||
|
||||
def _validate_docker_installation(self) -> None:
|
||||
"""Check if Docker is installed and running."""
|
||||
if not shutil.which("docker"):
|
||||
docker_path = shutil.which("docker")
|
||||
if not docker_path:
|
||||
raise RuntimeError(
|
||||
f"Docker is not installed. Please install Docker to use code execution with agent: {self.role}"
|
||||
)
|
||||
|
||||
try:
|
||||
subprocess.run(
|
||||
["/usr/bin/docker", "info"],
|
||||
subprocess.run( # noqa: S603
|
||||
[docker_path, "info"],
|
||||
check=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
@@ -711,6 +723,10 @@ class Agent(BaseAgent):
|
||||
raise RuntimeError(
|
||||
f"Docker is not running. Please start Docker to use code execution with agent: {self.role}"
|
||||
) from e
|
||||
except subprocess.TimeoutExpired as e:
|
||||
raise RuntimeError(
|
||||
f"Docker command timed out. Please check your Docker installation for agent: {self.role}"
|
||||
) from e
|
||||
|
||||
def __repr__(self):
|
||||
return f"Agent(role={self.role}, goal={self.goal}, backstory={self.backstory})"
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+60
-7
@@ -3,7 +3,7 @@ from abc import ABC, abstractmethod
|
||||
from collections.abc import Callable
|
||||
from copy import copy as shallow_copy
|
||||
from hashlib import md5
|
||||
from typing import Any, TypeVar
|
||||
from typing import Any, Literal, TypeVar
|
||||
|
||||
from pydantic import (
|
||||
UUID4,
|
||||
@@ -31,6 +31,27 @@ from crewai.utilities.string_utils import interpolate_only
|
||||
|
||||
T = TypeVar("T", bound="BaseAgent")
|
||||
|
||||
PlatformApp = Literal[
|
||||
"asana",
|
||||
"box",
|
||||
"clickup",
|
||||
"github",
|
||||
"gmail",
|
||||
"google_calendar",
|
||||
"google_sheets",
|
||||
"hubspot",
|
||||
"jira",
|
||||
"linear",
|
||||
"notion",
|
||||
"salesforce",
|
||||
"shopify",
|
||||
"slack",
|
||||
"stripe",
|
||||
"zendesk",
|
||||
]
|
||||
|
||||
PlatformAppOrAction = PlatformApp | str
|
||||
|
||||
|
||||
class BaseAgent(ABC, BaseModel):
|
||||
"""Abstract Base Class for all third party agents compatible with CrewAI.
|
||||
@@ -41,11 +62,11 @@ class BaseAgent(ABC, BaseModel):
|
||||
goal (str): Objective of the agent.
|
||||
backstory (str): Backstory of the agent.
|
||||
cache (bool): Whether the agent should use a cache for tool usage.
|
||||
config (Optional[Dict[str, Any]]): Configuration for the agent.
|
||||
config (dict[str, Any] | None): Configuration for the agent.
|
||||
verbose (bool): Verbose mode for the Agent Execution.
|
||||
max_rpm (Optional[int]): Maximum number of requests per minute for the agent execution.
|
||||
max_rpm (int | None): Maximum number of requests per minute for the agent execution.
|
||||
allow_delegation (bool): Allow delegation of tasks to agents.
|
||||
tools (Optional[List[Any]]): Tools at the agent's disposal.
|
||||
tools (list[Any] | None): Tools at the agent's disposal.
|
||||
max_iter (int): Maximum iterations for an agent to execute a task.
|
||||
agent_executor (InstanceOf): An instance of the CrewAgentExecutor class.
|
||||
llm (Any): Language model that will run the agent.
|
||||
@@ -57,18 +78,22 @@ class BaseAgent(ABC, BaseModel):
|
||||
knowledge_sources: Knowledge sources for the agent.
|
||||
knowledge_storage: Custom knowledge storage for the agent.
|
||||
security_config: Security configuration for the agent, including fingerprinting.
|
||||
apps: List of enterprise applications that the agent can access through CrewAI Enterprise Tools.
|
||||
actions: List of actions that the agent can access through CrewAI Enterprise Tools.
|
||||
|
||||
|
||||
Methods:
|
||||
execute_task(task: Any, context: Optional[str] = None, tools: Optional[List[BaseTool]] = None) -> str:
|
||||
execute_task(task: Any, context: str | None = None, tools: list[BaseTool] | None = None) -> str:
|
||||
Abstract method to execute a task.
|
||||
create_agent_executor(tools=None) -> None:
|
||||
Abstract method to create an agent executor.
|
||||
get_delegation_tools(agents: List["BaseAgent"]):
|
||||
get_delegation_tools(agents: list["BaseAgent"]):
|
||||
Abstract method to set the agents task tools for handling delegation and question asking to other agents in crew.
|
||||
get_platform_tools(apps: list[PlatformAppOrAction]):
|
||||
Abstract method to get platform tools for the specified list of applications and/or application/action combinations.
|
||||
get_output_converter(llm, model, instructions):
|
||||
Abstract method to get the converter class for the agent to create json/pydantic outputs.
|
||||
interpolate_inputs(inputs: Dict[str, Any]) -> None:
|
||||
interpolate_inputs(inputs: dict[str, Any]) -> None:
|
||||
Interpolate inputs into the agent description and backstory.
|
||||
set_cache_handler(cache_handler: CacheHandler) -> None:
|
||||
Set the cache handler for the agent.
|
||||
@@ -161,6 +186,10 @@ class BaseAgent(ABC, BaseModel):
|
||||
default=None,
|
||||
description="Knowledge configuration for the agent such as limits and threshold",
|
||||
)
|
||||
apps: list[PlatformAppOrAction] | None = Field(
|
||||
default=None,
|
||||
description="List of applications or application/action combinations that the agent can access through CrewAI Platform. Can contain app names (e.g., 'gmail') or specific actions (e.g., 'gmail/send_email')",
|
||||
)
|
||||
|
||||
@model_validator(mode="before")
|
||||
@classmethod
|
||||
@@ -196,6 +225,24 @@ class BaseAgent(ABC, BaseModel):
|
||||
)
|
||||
return processed_tools
|
||||
|
||||
@field_validator("apps")
|
||||
@classmethod
|
||||
def validate_apps(
|
||||
cls, apps: list[PlatformAppOrAction] | None
|
||||
) -> list[PlatformAppOrAction] | None:
|
||||
if not apps:
|
||||
return apps
|
||||
|
||||
validated_apps = []
|
||||
for app in apps:
|
||||
if app.count("/") > 1:
|
||||
raise ValueError(
|
||||
f"Invalid app format '{app}'. Apps can only have one '/' for app/action format (e.g., 'gmail/send_email')"
|
||||
)
|
||||
validated_apps.append(app)
|
||||
|
||||
return list(set(validated_apps))
|
||||
|
||||
@model_validator(mode="after")
|
||||
def validate_and_set_attributes(self):
|
||||
# Validate required fields
|
||||
@@ -266,6 +313,10 @@ class BaseAgent(ABC, BaseModel):
|
||||
def get_delegation_tools(self, agents: list["BaseAgent"]) -> list[BaseTool]:
|
||||
"""Set the task tools that init BaseAgenTools class."""
|
||||
|
||||
@abstractmethod
|
||||
def get_platform_tools(self, apps: list[PlatformAppOrAction]) -> list[BaseTool]:
|
||||
"""Get platform tools for the specified list of applications and/or application/action combinations."""
|
||||
|
||||
def copy(self: T) -> T: # type: ignore # Signature of "copy" incompatible with supertype "BaseModel"
|
||||
"""Create a deep copy of the Agent."""
|
||||
exclude = {
|
||||
@@ -282,6 +333,8 @@ class BaseAgent(ABC, BaseModel):
|
||||
"knowledge_sources",
|
||||
"knowledge_storage",
|
||||
"knowledge",
|
||||
"apps",
|
||||
"actions",
|
||||
}
|
||||
|
||||
# Copy llm
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Vendored
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+3
-4
@@ -1,7 +1,6 @@
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai.project import CrewBase, agent, crew, task
|
||||
from crewai.agents.agent_builder.base_agent import BaseAgent
|
||||
from typing import List
|
||||
from crewai.project import CrewBase, agent, crew, task
|
||||
|
||||
# If you want to run a snippet of code before or after the crew starts,
|
||||
# you can use the @before_kickoff and @after_kickoff decorators
|
||||
@@ -12,8 +11,8 @@ from typing import List
|
||||
class PoemCrew:
|
||||
"""Poem Crew"""
|
||||
|
||||
agents: List[BaseAgent]
|
||||
tasks: List[Task]
|
||||
agents: list[BaseAgent]
|
||||
tasks: list[Task]
|
||||
|
||||
# Learn more about YAML configuration files here:
|
||||
# Agents: https://docs.crewai.com/concepts/agents#yaml-configuration-recommended
|
||||
File renamed without changes.
File renamed without changes.
+3
-6
@@ -1,7 +1,6 @@
|
||||
from typing import Type
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class MyCustomToolInput(BaseModel):
|
||||
@@ -12,10 +11,8 @@ class MyCustomToolInput(BaseModel):
|
||||
|
||||
class MyCustomTool(BaseTool):
|
||||
name: str = "Name of my tool"
|
||||
description: str = (
|
||||
"Clear description for what this tool is useful for, your agent will need this information to use it."
|
||||
)
|
||||
args_schema: Type[BaseModel] = MyCustomToolInput
|
||||
description: str = "Clear description for what this tool is useful for, your agent will need this information to use it."
|
||||
args_schema: type[BaseModel] = MyCustomToolInput
|
||||
|
||||
def _run(self, argument: str) -> str:
|
||||
# Implementation goes here
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 1096 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user