Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
291 commits
Select commit Hold shift + click to select a range
7cae579
Merge pull request #44 from kabir/update-artifact
fjuma May 15, 2025
d6c9498
Add a TaskStore and a TaskManager
kabir May 8, 2025
8fa8caa
Remove original TaskManager backup
kabir May 15, 2025
58defa4
Remove the unused Mockito dependency
kabir May 15, 2025
ea5d2bc
Use contextId rather than sessionId
kabir May 15, 2025
edf57ee
Add missing break statement
kabir May 15, 2025
ade3d8e
Merge pull request #48 from kabir/taskmanager
fjuma May 15, 2025
e0c1fc9
Switch to using OkHttpClient
fjuma May 15, 2025
a6490a4
Implement the ability to send a streaming message request using A2ACl…
fjuma May 15, 2025
e902251
Adding tests and fixing wrong method in sendStreamingMessage
maeste May 16, 2025
330a58c
Use multi-line JSON strings
fjuma May 16, 2025
a1cf579
Add more tests for handling Server-Sent Events
fjuma May 16, 2025
7f63352
Move tests involving SSEEventListener to SSEEventListenerTest
fjuma May 16, 2025
34e2d50
Add a test and documentation for A2AClient#sendStreamingMessage
fjuma May 16, 2025
a1a85d3
Add a RequestClass
fjuma May 16, 2025
67cdef5
Merge pull request #50 from fjuma/client
kabir May 19, 2025
72dcbe9
Merge pull request #57 from fjuma/server
kabir May 19, 2025
dcac0df
Skeleton request handlers
kabir May 19, 2025
d51aa7f
Introduce an Event interface as per types.py
kabir May 19, 2025
67c7118
Add Event classes
kabir May 19, 2025
69f0de8
Don't use java.rmi.ServerError
kabir May 19, 2025
04bd4e6
Add RequestAggregator
kabir May 20, 2025
3b07e07
Add TaskUpdater utility class
kabir May 20, 2025
a397aa7
Add PushNotifiers
kabir May 20, 2025
1df8818
Pull in small change from upstream
kabir May 20, 2025
73ad757
Merge pull request #58 from kabir/taskmanager
fjuma May 20, 2025
84b233a
Add DefaultRequestHandler
kabir May 20, 2025
eeb129c
Skeleton implementation of JSONRPCHandler
kabir May 20, 2025
68e3dbf
Don't wrap the JSONRPCErrors in A2AServerException
kabir May 20, 2025
743cfff
Implement the simple JSONRPCHandler methods
kabir May 20, 2025
125004d
Apply polish to some Jackson related code
geoand May 21, 2025
6985dbd
Merge pull request #63 from geoand/polish
kabir May 21, 2025
a4bb015
Clean up and tewst the AsyncUtils
kabir May 21, 2025
64a2cfe
Add async JSONRPCHandler methods
kabir May 21, 2025
56ccd9d
Add stubs for tests and start implementing
kabir May 21, 2025
f18f31b
Use proper types for result
kabir May 22, 2025
fe9e76b
Cancel Task tests
kabir May 22, 2025
b223603
Add SendMessage tests
kabir May 22, 2025
a670fc7
example of java client running against python server
maeste May 22, 2025
5267eb4
Start mocking tests that we can't implement properly with existing ap…
kabir May 22, 2025
163f731
Update A2AClient so requests are sent to the server's URL
fjuma May 22, 2025
721b721
Update the example README to add instructions for checking out the v0…
fjuma May 22, 2025
dd4309f
TaskPushNotification tests
kabir May 22, 2025
cf2b134
Merge pull request #66 from fjuma/url_fix
fjuma May 22, 2025
96cf653
Merge remote-tracking branch 'fjuma/main' into request_manager
kabir May 22, 2025
2cc03d5
Merge pull request #65 from kabir/request_manager
fjuma May 22, 2025
88a7fe1
Add initial A2AServerResource and tests
fjuma May 22, 2025
3b2272d
Add a test for fetching the agent card from ./well-known/agent.json
fjuma May 27, 2025
ca7c4a3
Merge pull request #70 from fjuma/server_wip
fjuma May 27, 2025
85799e5
Add sanity test to check Mutiny Zero error propagation
kabir May 28, 2025
8da387f
Use Mutiny Zero's converter
kabir May 28, 2025
704ce44
Improve error handling in the consumers
kabir May 28, 2025
e236397
Get some of the JSONRPCHandler tests working
kabir May 28, 2025
c532539
Merge pull request #71 from kabir/request_manager
fjuma May 28, 2025
c92d74b
Update A2AServerResource to be able to handle both non-streaming and …
fjuma May 27, 2025
765ea2f
Add more tests to A2AServerResourceTest
fjuma May 28, 2025
eda471d
Move the helloworld client example to a new examples directory
fjuma May 28, 2025
10843bb
Add META-INF/beans.xml to make sure A2AServerResource can be discover…
fjuma May 28, 2025
b8f278a
Merge pull request #72 from fjuma/server_wip
kabir May 29, 2025
29ae810
Enable testGetPushNotificationSuccess and cleanup
kabir May 29, 2025
8044b8b
Fix testOnMessageStreamNewMessageSuccessMocks
kabir May 29, 2025
321d9f0
Fix testOnMessageStreamNewMessageExistingTaskSuccess
kabir May 29, 2025
1fbc396
Add testOnResubscribeExistingTaskSuccessMocks and attempt to get the …
kabir May 29, 2025
df25c53
Add testOnResubscribeNoExistingTaskError
kabir May 29, 2025
b34e75d
Merge pull request #74 from kabir/request_manager
fjuma May 29, 2025
d665f0c
Add temporary http client
kabir May 30, 2025
06891fd
Make onResubscribeToTask return StreamingEventType
kabir May 30, 2025
a5f41be
testOnMessageStreamNewMessageSendPushNotificationSuccess
kabir May 30, 2025
53ed04a
Add Mutiny Zero tests swith several subscribers
kabir May 30, 2025
6bc3c82
Merge pull request #76 from kabir/request_manager
fjuma May 30, 2025
8f5368c
Add various classes related to SecurityScheme
fjuma May 29, 2025
faf00bf
Updates for AgentCard
fjuma May 29, 2025
815a347
Make the URL for AgentProvider required
fjuma May 29, 2025
a8b6628
Update the required parameters for AgentSkill
fjuma May 29, 2025
bffafde
Updates request and response classes to validate the jsonrpc version
fjuma May 29, 2025
2ae1c3d
Rename type to kind for Part
fjuma May 29, 2025
6b6bafa
Updates related to FilePart
fjuma May 29, 2025
078b75d
Add an optional iconUrl to the AgentCard
fjuma May 30, 2025
3406652
Rename pushNotification method to pushNotificationConfig
fjuma May 30, 2025
46b3191
Ensure the response is either an error response or a success response
fjuma May 30, 2025
534aa07
Remove MissingAPIKeyError
fjuma May 30, 2025
537181e
Updates to Message and rename event type to kind
fjuma May 30, 2025
57e9b07
Make acceptedOutputModes required for MessageSendConfiguration
fjuma May 30, 2025
f2a0357
Remove id from MessageSendParams
fjuma May 30, 2025
dc95676
Updates related to PushNotificationConfig
fjuma May 30, 2025
adea199
Updates for TaskArtifactUpdateEvent
fjuma May 30, 2025
fd18900
Rename id to taskId for TaskPushNotificationConfig
fjuma May 30, 2025
5934abd
Rename type to kind for TaskStatusUpdateEvent
fjuma May 30, 2025
a9a1d3c
Client side changes related to the new authenticated extended agent c…
fjuma May 30, 2025
9f2f294
Server side changes related to the new authenticated extended agent c…
fjuma May 30, 2025
a8a31bc
Updates for the example Java client to work with the latest Python se…
fjuma May 30, 2025
9add0c4
Updates for the example Java server to work with the latest Python cl…
fjuma May 30, 2025
42e71dd
Merge pull request #82 from fjuma/spec
kabir May 31, 2025
6811673
Rework EventQueues so enqueueing happens on the main/parent for a task
kabir Jun 2, 2025
b2a7b05
Merge pull request #84 from kabir/request_manager
fjuma Jun 2, 2025
a49e04c
Redirect test output to file
kabir Jun 2, 2025
df9dd2c
Organise imports
kabir Jun 2, 2025
d2bcd65
Merge pull request #83 from kabir/clean-up
fjuma Jun 2, 2025
9f65105
Rework EventQueues so enqueueing happens on the main/parent for a task
kabir Jun 2, 2025
b697e30
Add placeholder new classes
kabir Jun 2, 2025
11f7132
Post more EventConsumer tests
kabir Jun 2, 2025
ad4e39a
Add request context builder with reference tasks
kabir Jun 2, 2025
97a8187
Add request context builder with referenceTasks
kabir Jun 2, 2025
32736ff
Pull in DefaultRequestHandler changes (as far as possible
kabir Jun 2, 2025
fb705ae
Add stubs for new JSONRPCHandlerTest methods
kabir Jun 2, 2025
de10236
Add testResubscribeNoExistingTaskError to A2AServerResourceTest and a…
fjuma May 29, 2025
c6d7d92
Merge pull request #75 from fjuma/server
fjuma Jun 2, 2025
bda0499
Merge pull request #85 from kabir/request_manager
fjuma Jun 2, 2025
7df8133
Add id to PushNotificationConfig
fjuma Jun 2, 2025
ae2a1b0
Introduce NonStreamingJSONRPCRequest and StreamingJSONRPCRequest and …
fjuma Jun 3, 2025
2593f76
Add testResubscribeExistingTaskSuccess to A2AServerResourceTest
fjuma Jun 2, 2025
ff8ee25
Ensure the timestamp for the TaskStatus can be serialized/deserialize…
fjuma Jun 3, 2025
578e2b8
Merge pull request #87 from fjuma/server
kabir Jun 4, 2025
cd68854
Remove Mutiny investigative test
kabir Jun 4, 2025
351f504
JSONRPCHandler should always return a response and never throw an exc…
kabir Jun 4, 2025
f7b6e05
Merge pull request #90 from kabir/fix-jsonrpchandler
fjuma Jun 4, 2025
9b21cb3
Add majority of new JSONRPCHandler tests
kabir Jun 2, 2025
43cd3ba
Add testStreamingNotSupportedErrorOnResubscribeToTask
kabir Jun 4, 2025
d125c85
Merge pull request #86 from kabir/request_manager
fjuma Jun 4, 2025
f224627
Merge pull request #89 from kabir/async
fjuma Jun 4, 2025
8335192
Ensure the appropriate JSONRPCErrorResponse is returned when the serv…
fjuma Jun 4, 2025
b187201
Ensure the appropriate JSORPCErrorResponse is returned when the reque…
fjuma Jun 4, 2025
e473db1
Merge pull request #91 from fjuma/spec
maeste Jun 4, 2025
ace4f33
Add a tck directory that contains a server example that can be run wi…
fjuma Jun 4, 2025
1ed3a03
Merge pull request #92 from fjuma/protocol
maeste Jun 4, 2025
52e38d3
Improving tck Agent implementation. Fixing a few more tests
maeste Jun 4, 2025
6c77259
Merge pull request #93 from maeste/tck_fixes
fjuma Jun 4, 2025
79bedb7
Try to make the queues more like Python
kabir Jun 4, 2025
aff654f
Fire and forget task execution
maeste Jun 5, 2025
db31f45
Get testOnMessageSendTaskIdMismatch working
kabir Jun 4, 2025
726b1ce
Add a temporary Logger wrapper bumping debug/trace to info
kabir Jun 5, 2025
ac10355
Tighten up the event queue handling
kabir Jun 5, 2025
2369d27
Move getPollingStartedLatch() method so only sdk can call
kabir Jun 5, 2025
cad7848
Fix testOnMessageStreamTaskIdMismatch
kabir Jun 5, 2025
081edce
Merge pull request #96 from kabir/request_manager
fjuma Jun 5, 2025
8c81ba6
Handle errors the same way for both SendStreamingMessageRequest methods
kabir Jun 5, 2025
9f50742
Merge pull request #97 from kabir/request_manager
fjuma Jun 5, 2025
80d8793
Allow more time for the PushNotification. Verify latch completed
kabir Jun 5, 2025
08a5b48
Merge pull request #98 from kabir/request_manager
fjuma Jun 5, 2025
04e7b7e
Add TaskUpdater tests
kabir Jun 5, 2025
18e9b84
Merge pull request #99 from kabir/request_manager
fjuma Jun 5, 2025
11f3c3d
Merge pull request #95 from maeste/tck_fixes
fjuma Jun 5, 2025
7d89fb5
Create a custom deserializer for JSON-RPC requests
fjuma Jun 4, 2025
005c672
Merge pull request #101 from fjuma/spec
maeste Jun 5, 2025
71a4154
Fix task ID comparison
fjuma Jun 5, 2025
5c46929
Merge pull request #102 from fjuma/spec
maeste Jun 5, 2025
f1ac3d1
Update the TCK AgentExecutorProducer to match what the Python impleme…
fjuma Jun 5, 2025
b8999c7
Merge pull request #103 from fjuma/spec
maeste Jun 5, 2025
48be950
Add validation for parts and historyLength
fjuma Jun 5, 2025
70d2973
Merge pull request #104 from fjuma/spec
maeste Jun 5, 2025
0e033fc
Tighten up TaskManager
kabir Jun 9, 2025
f1804c9
Fix test_task_history_length
kabir Jun 9, 2025
18979cc
Merge pull request #105 from kabir/tck
fjuma Jun 9, 2025
c94a9c0
Remove concurrent executor from TCK AgentExecutor
kabir Jun 9, 2025
0968c95
Wrap EnhancedRunnable in CompletableFuture
kabir Jun 9, 2025
7e35e86
Merge pull request #106 from kabir/tck
fjuma Jun 9, 2025
a026098
Use a ContainerRequestFilter to make sure streaming and non-streaming…
fjuma Jun 9, 2025
d8f9e4c
Merge pull request #107 from fjuma/spec
maeste Jun 9, 2025
2041a76
Back up the old A2A client
kabir Jun 10, 2025
2d68ddb
Add basic JDK A2AHttpClient implementation
kabir Jun 10, 2025
00e53ba
Prepare to swap out the HTTP client step by step
kabir Jun 10, 2025
4459911
Move the agent card to the new client
kabir Jun 10, 2025
e5b54c4
Backup the old OKHttp post request methods
kabir Jun 10, 2025
0991016
Move all non-streaming methods use the new client
kabir Jun 10, 2025
9cf513c
Initial HTTP Client code to deal with SSE
kabir Jun 10, 2025
4f20900
Back up the okHttp sendStreamingMessage method
kabir Jun 10, 2025
eb74de3
Port sendStreamingMessage to use the new HTTP client
kabir Jun 10, 2025
37bf338
Replace SSEEventListener with new impl
kabir Jun 10, 2025
783f3da
Remove OkHttpClient
kabir Jun 10, 2025
01c776d
Switch InMemoryPushNotifier to use the new client
kabir Jun 10, 2025
336ad17
Make examples use proper A2AClient
kabir Jun 11, 2025
6edaabf
Merge pull request #108 from kabir/http-client
fjuma Jun 11, 2025
251429d
Cleanup, and remove unneded checks from TCK AgentExecutor.
kabir Jun 11, 2025
ca4d773
Change the TaskUpdater constructor to take the RequestContext
kabir Jun 11, 2025
a114391
Hide TaskUpdater.updateStatus() methods, and add isFinal field to Tas…
kabir Jun 11, 2025
eeed1ac
Make SDK and TCK agent executors use TaskUpdater
kabir Jun 11, 2025
6584d7a
TaskUpdater parameters in same order as AgentExecutor.execute()
kabir Jun 11, 2025
f7a8acb
Remove unused code
kabir Jun 11, 2025
0f09faf
Merge pull request #109 from kabir/cleanup
fjuma Jun 11, 2025
5c72453
Add support for extensions
fjuma Jun 17, 2025
032a5a4
Merge pull request #111 from fjuma/spec
maeste Jun 17, 2025
0ab5a37
Update REST dependencies
fjuma Jun 11, 2025
71639a8
Fix test issues related to ambiguous dependencies
fjuma Jun 11, 2025
ed97ac8
Switch to using a ServerRequestFilter instead of a ContainerRequestFi…
fjuma Jun 11, 2025
d155289
Try to fix test issues related to ambiguous dependencies for type
fjuma Jun 11, 2025
ad97a3a
Migrate the ExeptionMapperts to reactive style
kabir Jun 12, 2025
6b349ff
Add quarkus-rest-client-jackson test dependency
fjuma Jun 12, 2025
f34e4b0
Reactive Routes in Quarkus
kabir Jun 17, 2025
d99c5b6
quarkus-rest in tck
kabir Jun 17, 2025
5f0bd8d
Port MultiSseSupport
kabir Jun 17, 2025
dc0e7c9
Multi-module: core project
kabir Jun 17, 2025
6b93585
Main SDK
kabir Jun 17, 2025
3910273
Split SDK for Jakarta and Quarkus
kabir Jun 17, 2025
cab7b7b
Move A2AServerResourceTest into quarkus-sdk
kabir Jun 17, 2025
93daf42
Move tck and examples under parent pom
kabir Jun 17, 2025
b555236
Add a META-INF/beans.xml to the sdk and quarkus-sdk to ensure the A2A…
fjuma Jun 17, 2025
0b34d90
Use the application/json Content-Type for errors regardless of whethe…
fjuma Jun 17, 2025
35d854c
Update AgentCapabilities
fjuma Jun 17, 2025
844949a
Merge pull request #112 from fjuma/server-routes-single-refactor-maven
kabir Jun 18, 2025
a5438a8
Add the ability for the JdkA2AHttpClient to get used by default
fjuma Jun 18, 2025
954d41d
Merge pull request #113 from fjuma/httpclient
fjuma Jun 18, 2025
ff79b6d
Clean up event queue logging a bit
kabir Jun 18, 2025
da3c2ad
Clean up queue closing
kabir Jun 18, 2025
39edeca
Try to handle the MultiSseSupport async
kabir Jun 18, 2025
6f3ed75
Move tests to use Http client for proper async handling
kabir Jun 19, 2025
179acc7
Add hook to make sure subscrber has started
kabir Jun 19, 2025
df163af
Cleanup
kabir Jun 19, 2025
2e944f9
Merge pull request #114 from kabir/async-improvements
fjuma Jun 19, 2025
8c156d4
Remove duplicated stuff from poms
kabir Jun 19, 2025
6b5d4ac
Rename the sdk modules
kabir Jun 19, 2025
abac92a
Unify folder names of the two sdks
kabir Jun 19, 2025
5af4ba7
Remove more POM stuff which should come from parent
kabir Jun 19, 2025
e882130
Duplicate SDK
kabir Jun 19, 2025
ef8b25e
Merge pull request #115 from kabir/async-improvements
fjuma Jun 19, 2025
1610acf
Add LICENSE, SECURITY.md, CONTRIBUTING.md, and CODE_OF_CONDUCT.md
fjuma Jun 19, 2025
4e2721c
Use updated artifact names
kabir Jun 19, 2025
bbf301f
Quarkus plugin in dependency management
kabir Jun 19, 2025
1344080
Get rif of platform endcoding warning
kabir Jun 19, 2025
2981235
Merge pull request #117 from kabir/fix-maven
fjuma Jun 19, 2025
b89a245
Merge pull request #116 from fjuma/spec
fjuma Jun 19, 2025
49487bf
Move the server tests to the tests/server-common module
kabir Jun 19, 2025
b4eb19e
Move Jakarta server classes into jakarta package
kabir Jun 19, 2025
3a9b4ba
Move the base test to .common
kabir Jun 19, 2025
43da21b
Move test beans to common module
kabir Jun 19, 2025
8d64abf
Rename Quarkus test
kabir Jun 19, 2025
c8f7870
Get server tests working with Jakarta
kabir Jun 19, 2025
f8396e0
Make the common test dependencies provided, or quarkus dev in tck/exa…
kabir Jun 19, 2025
0fe2144
cleanup
kabir Jun 19, 2025
a486a1f
Merge pull request #119 from kabir/unify-tests
fjuma Jun 19, 2025
c9c34a1
Add details about the A2A server implementation to the README and upd…
fjuma Jun 19, 2025
1a28be0
Update maven dependency sections in the README
fjuma Jun 19, 2025
9122dd0
Update AgentExecutor implementation in README.md
fjuma Jun 19, 2025
80cb1ea
Merge pull request #118 from fjuma/spec
fjuma Jun 19, 2025
1e35b62
Update client docs in README
fjuma Jun 19, 2025
f756492
Add resubscribeToTask to A2AClient
fjuma Jun 19, 2025
3456605
Merge pull request #120 from fjuma/client
fjuma Jun 19, 2025
142c39b
Tag 0.2.3
fjuma Jun 19, 2025
a5df910
Next is 0.2.4
fjuma Jun 19, 2025
0ddd7cc
Share the Executor used for async operations
kabir Jun 20, 2025
b95f675
Merge pull request #121 from kabir/one-executor
maeste Jun 20, 2025
ccb8ec6
Add AgentCardProducer
kabir Jun 20, 2025
0fa0ef4
Merge pull request #122 from kabir/agentcardproducer
maeste Jun 23, 2025
818a9fc
Rename references to a2a-java-sdk to a2a-java (#123)
fjuma Jun 23, 2025
ea9ed89
ci: Add in repo automation for releases/issues (#125)
fjuma Jun 24, 2025
6042cca
Split the examples into two directories, one for client and one for s…
fjuma Jun 24, 2025
8508b8d
fix: Split out server related code from a2a-java-sdk-core into a new …
fjuma Jun 25, 2025
aede3ff
cleanup: Removed unused imports (#128)
sunyuhan1998 Jun 26, 2025
125e111
test: Added unit tests for `RequestContext` (#127)
sunyuhan1998 Jun 26, 2025
8538569
test: update A2AClientTest with sending FilePart and DataPart (#130)
tomsun28 Jun 26, 2025
b4ae165
Merge branch 'main' into full_review
rajeshvelicheti Jun 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 136 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement:

Farah Juma - [email protected] \
Kabir Khan - [email protected] \
Stefano Maestri - [email protected]

All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
91 changes: 91 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
Contributing to a2a-java
==================================

Welcome to the A2A Java SDK project! We welcome contributions from the community. This guide will walk you through the steps for getting started on our project.

- [Forking the Project](#forking-the-project)
- [Issues](#issues)
- [Good First Issues](#good-first-issues)
- [Setting up your Developer Environment](#setting-up-your-developer-environment)
- [Contributing Guidelines](#contributing-guidelines)
- [Community](#community)


## Forking the Project
To contribute, you will first need to fork the [a2a-java](https://github.com/a2aproject/a2a-java) repository.

This can be done by looking in the top-right corner of the repository page and clicking "Fork".
![fork](images/fork.jpg)

The next step is to clone your newly forked repository onto your local workspace. This can be done by going to your newly forked repository, which should be at `https://github.com/USERNAME/a2a-java`.

Then, there will be a green button that says "Code". Click on that and copy the URL.

Then, in your terminal, paste the following command:
```bash
git clone [URL]
```
Be sure to replace [URL] with the URL that you copied.

Now you have the repository on your computer!

## Issues
The `a2a-java` project uses GitHub to manage issues. All issues can be found [here](https://github.com/a2aproject/a2a-java/issues).

To create a new issue, comment on an existing issue, or assign an issue to yourself, you'll need to first [create a GitHub account](https://github.com/).


### Good First Issues
Want to contribute to the a2a-java project but aren't quite sure where to start? Check out our issues with the `good-first-issue` label. These are a triaged set of issues that are great for getting started on our project. These can be found [here](https://github.com/a2aproject/a2a-java/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22).

Once you have selected an issue you'd like to work on, make sure it's not already assigned to someone else, and assign it to yourself.

It is recommended that you use a separate branch for every issue you work on. To keep things straightforward and memorable, you can name each branch using the GitHub issue number. This way, you can have multiple PRs open for different issues. For example, if you were working on [issue-20](https://github.com/a2aproject/a2a-java/issues/20), you could use `issue-20` as your branch name.

## Setting up your Developer Environment
You will need:

* Java 17+
* Git
* An IDE (e.g., IntelliJ IDEA, Eclipse, VSCode, etc.)

To set up your development environment you need to:

1. First `cd` to the directory where you cloned the project (eg: `cd a2a-java`)

2. Add a remote ref to upstream, for pulling future updates. For example:

```
git remote add upstream https://github.com/a2aproject/a2a-java
```

3. To build `a2a-java` and run the tests, use the following command:

```
mvn clean install
```

4. To skip the tests:

```
mvn clean install -DskipTests=true
```

## Contributing Guidelines

When submitting a PR, please keep the following guidelines in mind:

1. In general, it's good practice to squash all of your commits into a single commit. For larger changes, it's ok to have multiple meaningful commits. If you need help with squashing your commits, feel free to ask us how to do this on your pull request. We're more than happy to help!

2. Please link the issue you worked on in the description of your pull request and in your commit message. For example, for issue-20, the PR description and commit message could be: ```Add tests to A2AClientTest for sending a task with a FilePart and with a DataPart
Fixes #20```

3. Your PR should include tests for the functionality that you are adding.

4. Your PR should include appropriate [documentation](https://github.com/a2aproject/a2a-java/blob/main/README.md) for the functionality that you are adding.

## Code Reviews

All submissions, including submissions by project members, need to be reviewed by at least one `a2a-java` committer before being merged.

The [GitHub Pull Request Review Process](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews) is followed for every pull request.
Loading