Skip to content

Commit 6c4a6e8

Browse files
committed
feat: add Apache 2.0 license compliance for Suna-derived code
- Add Apache License 2.0 full text (LICENSE-Apache-2.0) - Add NOTICE file with attribution to Kortix AI/Suna - Add license header script for derived files - Ensures compliance with Apache 2.0 requirements
1 parent 487c801 commit 6c4a6e8

File tree

3 files changed

+319
-0
lines changed

3 files changed

+319
-0
lines changed

LICENSE-Apache-2.0

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
Apache License
2+
Version 2.0, January 2004
3+
http://www.apache.org/licenses/
4+
5+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6+
7+
1. Definitions.
8+
9+
"License" shall mean the terms and conditions for use, reproduction,
10+
and distribution as defined by Sections 1 through 9 of this document.
11+
12+
"Licensor" shall mean the copyright owner or entity granting the License.
13+
14+
"Legal Entity" shall mean the union of the acting entity and all
15+
other entities that control, are controlled by, or are under common
16+
control with that entity. For the purposes of this definition,
17+
"control" means (i) the power, direct or indirect, to cause the
18+
direction or management of such entity, whether by contract or
19+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
20+
outstanding shares, or (iii) beneficial ownership of such entity.
21+
22+
"You" (or "Your") shall mean an individual or Legal Entity
23+
exercising permissions granted by this License.
24+
25+
"Source" shall mean the preferred form for making modifications,
26+
including but not limited to software source code, documentation
27+
source, and configuration files.
28+
29+
"Object" shall mean any form resulting from mechanical
30+
transformation or translation of a Source form, including but
31+
not limited to compiled object code, generated documentation,
32+
and conversions to other media types.
33+
34+
"Work" shall mean the work of authorship, whether in Source or
35+
Object form, made available under the License, as indicated by a
36+
copyright notice that is included in or attached to the work
37+
(which shall not be interpreted as modifying the License).
38+
39+
"Derivative Works" shall mean any work, whether in Source or Object
40+
form, that is based upon (or derived from) the Work and for which the
41+
editorial revisions, annotations, elaborations, or other modifications
42+
represent, as a whole, an original work of authorship. For the purposes
43+
of this License, Derivative Works shall not include works that remain
44+
separable from, or merely link (or bind by name) to the interfaces of,
45+
the Work and derivative works thereof.
46+
47+
"Contribution" shall mean any work of authorship, including
48+
the original version of the Work and any modifications or additions
49+
to that Work or Derivative Works thereof, that is intentionally
50+
submitted to Licensor for inclusion in the Work by the copyright owner
51+
or by an individual or Legal Entity authorized to submit on behalf of
52+
the copyright owner. For the purposes of this definition, "submitted"
53+
means any form of electronic, verbal, or written communication sent
54+
to the Licensor or its representatives, including but not limited to
55+
communication on electronic mailing lists, source code control
56+
systems, and issue tracking systems that are managed by, or on behalf
57+
of, the Licensor for the purpose of discussing and improving the Work,
58+
but excluding communication that is conspicuously marked or otherwise
59+
designated in writing by the copyright owner as "Not a Contribution."
60+
61+
"Contributor" shall mean Licensor and any individual or Legal Entity
62+
on behalf of whom a Contribution has been received by Licensor and
63+
subsequently incorporated within the Work.
64+
65+
2. Grant of Copyright License. Subject to the terms and conditions of
66+
this License, each Contributor hereby grants to You a perpetual,
67+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
68+
copyright license to use, reproduce, modify, merge, publish,
69+
distribute, sublicense, and/or sell copies of the Work, and to
70+
permit persons to whom the Work is furnished to do so, subject to
71+
the following conditions:
72+
73+
The above copyright notice and this permission notice shall be
74+
included in all copies or substantial portions of the Work.
75+
76+
3. Grant of Patent License. Subject to the terms and conditions of
77+
this License, each Contributor hereby grants to You a perpetual,
78+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
79+
(except as stated in this section) patent license to make, have made,
80+
use, offer to sell, sell, import, and otherwise transfer the Work,
81+
where such license applies only to those patent claims licensable
82+
by such Contributor that are necessarily infringed by their
83+
Contribution(s) alone or by combination of their Contribution(s)
84+
with the Work to which such Contribution(s) was submitted. If You
85+
institute patent litigation against any entity (including a
86+
cross-claim or counterclaim in a lawsuit) alleging that the Work
87+
or a Contribution incorporated within the Work constitutes direct
88+
or contributory patent infringement, then any patent licenses
89+
granted to You under this License for that Work shall terminate
90+
as of the date such litigation is filed.
91+
92+
4. Redistribution. You may reproduce and distribute copies of the
93+
Work or Derivative Works thereof in any medium, with or without
94+
modifications, and in Source or Object form, provided that You
95+
meet the following conditions:
96+
97+
(a) You must give any other recipients of the Work or
98+
Derivative Works a copy of this License;
99+
100+
(b) You must cause any modified files to carry prominent notices
101+
stating that You changed the files;
102+
103+
(c) You must retain, in the Source form of any Derivative Works
104+
that You distribute, all copyright, patent, trademark, and
105+
attribution notices from the Source form of the Work,
106+
excluding those notices that do not pertain to any part of
107+
the Derivative Works; and
108+
109+
(d) If the Work includes a "NOTICE" file as part of its
110+
distribution, then any Derivative Works that You distribute
111+
must include a readable copy of the attribution notices
112+
contained within such NOTICE file, excluding those notices
113+
that do not pertain to any part of the Derivative Works,
114+
in at least one of the following places: within a NOTICE file
115+
distributed as part of the Derivative Works; within the Source
116+
form or documentation, if provided along with the Derivative
117+
Works; or, within a display generated by the Derivative Works,
118+
if and wherever such third-party notices normally appear. The
119+
contents of the NOTICE file are for informational purposes only
120+
and do not modify the License. You may add Your own attribution
121+
notices within Derivative Works that You distribute, alongside
122+
or as an addendum to the NOTICE text from the Work, provided
123+
that such additional attribution notices cannot be construed
124+
as modifying the License.
125+
126+
You may add Your own copyright notice to Your modifications and
127+
may provide additional or different license terms and conditions
128+
for use, reproduction, or distribution of Your modifications, or
129+
for any such Derivative Works as a whole, provided Your use,
130+
reproduction, and distribution of the Work otherwise complies with
131+
the conditions stated in this License.
132+
133+
5. Submission of Contributions. Unless You explicitly state otherwise,
134+
any Contribution intentionally submitted for inclusion in the Work
135+
by You to the Licensor shall be under the terms and conditions of
136+
this License, without any additional terms or conditions.
137+
Notwithstanding the above, nothing herein shall supersede or modify
138+
the terms of any separate license agreement you may have executed
139+
with Licensor regarding such Contributions.
140+
141+
6. Trademarks. This License does not grant permission to use the trade
142+
names, trademarks, service marks, or product names of the Licensor,
143+
except as required for reasonable and customary use in describing the
144+
origin of the Work and reproducing the content of the NOTICE file.
145+
146+
7. Disclaimer of Warranty. Unless required by applicable law or
147+
agreed to in writing, Licensor provides the Work (and each
148+
Contributor provides its Contributions) on an "AS IS" BASIS,
149+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
150+
implied, including, without limitation, any warranties or conditions
151+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
152+
PARTICULAR PURPOSE. You are solely responsible for determining the
153+
appropriateness of using or redistributing the Work and assume any
154+
risks associated with Your exercise of permissions under this License.
155+
156+
8. Limitation of Liability. In no event and under no legal theory,
157+
whether in tort (including negligence), contract, or otherwise,
158+
unless required by applicable law (such as deliberate and grossly
159+
negligent acts) or agreed to in writing, shall any Contributor be
160+
liable to You for damages, including any direct, indirect, special,
161+
incidental, or consequential damages of any character arising as a
162+
result of this License or out of the use or inability to use the
163+
Work (including but not limited to damages for loss of goodwill,
164+
work stoppage, computer failure or malfunction, or any and all
165+
other commercial damages or losses), even if such Contributor
166+
has been advised of the possibility of such damages.
167+
168+
9. Accepting Warranty or Additional Liability. When redistributing
169+
the Work or Derivative Works thereof, You may choose to offer,
170+
and charge a fee for, acceptance of support, warranty, indemnity,
171+
or other liability obligations and/or rights consistent with this
172+
License. However, in accepting such obligations, You may act only
173+
on Your own behalf and on Your sole responsibility, not on behalf
174+
of any other Contributor, and only if You agree to indemnify,
175+
defend, and hold each Contributor harmless for any liability
176+
incurred by, or claims asserted against, such Contributor by reason
177+
of your accepting any such warranty or liability.
178+
179+
END OF TERMS AND CONDITIONS
180+
181+
APPENDIX: How to apply the Apache License to your work.
182+
183+
To apply the Apache License to your work, attach the following
184+
boilerplate notice, with the fields enclosed by brackets "[]"
185+
replaced with your own identifying information. Don't include
186+
the brackets! The text should be enclosed in the appropriate
187+
comment syntax for the file format. We also recommend that a
188+
file or class name and description of purpose be included on the
189+
same page as the copyright notice for easier identification.
190+
191+
Copyright [2025] [Jigyansu Rout - Cheatcode AI]
192+
193+
Licensed under the Apache License, Version 2.0 (the "License");
194+
you may not use this file except in compliance with the License.
195+
You may obtain a copy of the License at
196+
197+
http://www.apache.org/licenses/LICENSE-2.0
198+
199+
Unless required by applicable law or agreed to in writing, software
200+
distributed under the License is distributed on an "AS IS" BASIS,
201+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
202+
See the License for the specific language governing permissions and
203+
limitations under the License.

NOTICE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
Cheatcode AI
2+
Copyright 2025 Cheatcode AI
3+
4+
This product includes software developed by Kortix AI (https://github.com/kortix-ai/suna).
5+
6+
================================================================================
7+
8+
This software contains code derived from:
9+
10+
Suna by Kortix AI
11+
Copyright 2025 Kortix AI
12+
Licensed under the Apache License, Version 2.0
13+
Source: https://github.com/kortix-ai/suna
14+
15+
Portions of the backend infrastructure, agent management systems, and API design
16+
are adapted from the Suna project. Modifications have been made to integrate with
17+
Cheatcode AI's specific requirements and architecture.
18+
19+
================================================================================
20+
21+
For the full text of the Apache License, Version 2.0, see LICENSE-Apache-2.0

add_license_headers.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Script to add Apache 2.0 license headers to files derived from Suna
4+
Run this on any files that contain code adapted from https://github.com/kortix-ai/suna
5+
"""
6+
7+
import os
8+
import sys
9+
10+
# License header template for Python files
11+
PYTHON_HEADER = '''# Copyright 2025 Cheatcode AI
12+
#
13+
# Licensed under the Apache License, Version 2.0 (the "License");
14+
# you may not use this file except in compliance with the License.
15+
# You may obtain a copy of the License at
16+
#
17+
# http://www.apache.org/licenses/LICENSE-2.0
18+
#
19+
# Unless required by applicable law or agreed to in writing, software
20+
# distributed under the License is distributed on an "AS IS" BASIS,
21+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22+
# See the License for the specific language governing permissions and
23+
# limitations under the License.
24+
#
25+
# Portions of this file are derived from Suna by Kortix AI
26+
# (https://github.com/kortix-ai/suna) under the Apache License 2.0
27+
28+
'''
29+
30+
# License header template for TypeScript/JavaScript files
31+
JS_HEADER = '''/*
32+
* Copyright 2025 Cheatcode AI
33+
*
34+
* Licensed under the Apache License, Version 2.0 (the "License");
35+
* you may not use this file except in compliance with the License.
36+
* You may obtain a copy of the License at
37+
*
38+
* http://www.apache.org/licenses/LICENSE-2.0
39+
*
40+
* Unless required by applicable law or agreed to in writing, software
41+
* distributed under the License is distributed on an "AS IS" BASIS,
42+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
43+
* See the License for the specific language governing permissions and
44+
* limitations under the License.
45+
*
46+
* Portions of this file are derived from Suna by Kortix AI
47+
* (https://github.com/kortix-ai/suna) under the Apache License 2.0
48+
*/
49+
50+
'''
51+
52+
def add_header_to_file(file_path, header):
53+
"""Add license header to a file if it doesn't already have one"""
54+
try:
55+
with open(file_path, 'r', encoding='utf-8') as f:
56+
content = f.read()
57+
58+
# Check if file already has a license header
59+
if 'Licensed under the Apache License' in content:
60+
print(f"✓ {file_path} already has license header")
61+
return
62+
63+
# Add header at the beginning
64+
new_content = header + content
65+
66+
with open(file_path, 'w', encoding='utf-8') as f:
67+
f.write(new_content)
68+
69+
print(f"✓ Added license header to {file_path}")
70+
71+
except Exception as e:
72+
print(f"✗ Error processing {file_path}: {e}")
73+
74+
def main():
75+
if len(sys.argv) < 2:
76+
print("Usage: python add_license_headers.py <file1> [file2] ...")
77+
print("\nExample:")
78+
print("python add_license_headers.py backend/agent/tools/*.py")
79+
print("python add_license_headers.py frontend/src/hooks/use-agent.ts")
80+
sys.exit(1)
81+
82+
for file_path in sys.argv[1:]:
83+
if not os.path.exists(file_path):
84+
print(f"✗ File not found: {file_path}")
85+
continue
86+
87+
if file_path.endswith(('.py', '.pyx')):
88+
add_header_to_file(file_path, PYTHON_HEADER)
89+
elif file_path.endswith(('.ts', '.tsx', '.js', '.jsx')):
90+
add_header_to_file(file_path, JS_HEADER)
91+
else:
92+
print(f"? Skipped {file_path} (unsupported file type)")
93+
94+
if __name__ == "__main__":
95+
main()

0 commit comments

Comments
 (0)