agent-teams 0.0.3__tar.gz

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 (125) hide show
  1. agent_teams-0.0.3/.gitignore +141 -0
  2. agent_teams-0.0.3/.licenserc.yaml +18 -0
  3. agent_teams-0.0.3/.pre-commit-config.yaml +38 -0
  4. agent_teams-0.0.3/.vscode/settings.json +9 -0
  5. agent_teams-0.0.3/CHANGELOG.md +7 -0
  6. agent_teams-0.0.3/Dockerfile +19 -0
  7. agent_teams-0.0.3/LICENSE +29 -0
  8. agent_teams-0.0.3/Makefile +98 -0
  9. agent_teams-0.0.3/PKG-INFO +132 -0
  10. agent_teams-0.0.3/README.md +59 -0
  11. agent_teams-0.0.3/agent_teams/__init__.py +295 -0
  12. agent_teams-0.0.3/agent_teams/__version__.py +7 -0
  13. agent_teams-0.0.3/agent_teams/a2a/__init__.py +131 -0
  14. agent_teams-0.0.3/agent_teams/a2a/application.py +197 -0
  15. agent_teams-0.0.3/agent_teams/a2a/channel.py +280 -0
  16. agent_teams-0.0.3/agent_teams/a2a/extensions.py +134 -0
  17. agent_teams-0.0.3/agent_teams/a2a/orchestration_extension.py +583 -0
  18. agent_teams-0.0.3/agent_teams/a2a/storage.py +289 -0
  19. agent_teams-0.0.3/agent_teams/a2a/worker.py +224 -0
  20. agent_teams-0.0.3/agent_teams/app.py +115 -0
  21. agent_teams-0.0.3/agent_teams/cli.py +273 -0
  22. agent_teams-0.0.3/agent_teams/health.py +259 -0
  23. agent_teams-0.0.3/agent_teams/hooks.py +158 -0
  24. agent_teams-0.0.3/agent_teams/manager.py +778 -0
  25. agent_teams-0.0.3/agent_teams/orchestration/__init__.py +24 -0
  26. agent_teams-0.0.3/agent_teams/orchestration/base.py +165 -0
  27. agent_teams-0.0.3/agent_teams/orchestration/parallel.py +185 -0
  28. agent_teams-0.0.3/agent_teams/orchestration/sequential.py +178 -0
  29. agent_teams-0.0.3/agent_teams/orchestration/supervisor.py +412 -0
  30. agent_teams-0.0.3/agent_teams/protocol/__init__.py +41 -0
  31. agent_teams-0.0.3/agent_teams/protocol/channel.py +234 -0
  32. agent_teams-0.0.3/agent_teams/protocol/messages.py +203 -0
  33. agent_teams-0.0.3/agent_teams/reactions.py +287 -0
  34. agent_teams-0.0.3/agent_teams/routes/__init__.py +13 -0
  35. agent_teams-0.0.3/agent_teams/routes/events.py +266 -0
  36. agent_teams-0.0.3/agent_teams/routes/teams.py +236 -0
  37. agent_teams-0.0.3/agent_teams/state/__init__.py +14 -0
  38. agent_teams-0.0.3/agent_teams/state/artifact_store.py +79 -0
  39. agent_teams-0.0.3/agent_teams/state/task_list.py +200 -0
  40. agent_teams-0.0.3/agent_teams/types.py +411 -0
  41. agent_teams-0.0.3/docs/.gitignore +23 -0
  42. agent_teams-0.0.3/docs/LICENSE +21 -0
  43. agent_teams-0.0.3/docs/Makefile +65 -0
  44. agent_teams-0.0.3/docs/README.md +38 -0
  45. agent_teams-0.0.3/docs/babel.config.js +8 -0
  46. agent_teams-0.0.3/docs/docs/api-reference/_category_.yml +2 -0
  47. agent_teams-0.0.3/docs/docs/api-reference/index.mdx +229 -0
  48. agent_teams-0.0.3/docs/docs/architecture/_category_.yml +2 -0
  49. agent_teams-0.0.3/docs/docs/architecture/index.mdx +128 -0
  50. agent_teams-0.0.3/docs/docs/cli/_category_.yml +2 -0
  51. agent_teams-0.0.3/docs/docs/cli/index.mdx +239 -0
  52. agent_teams-0.0.3/docs/docs/getting-started/_category_.yml +2 -0
  53. agent_teams-0.0.3/docs/docs/getting-started/index.mdx +178 -0
  54. agent_teams-0.0.3/docs/docs/health-monitoring/_category_.yml +2 -0
  55. agent_teams-0.0.3/docs/docs/health-monitoring/index.mdx +144 -0
  56. agent_teams-0.0.3/docs/docs/hooks/_category_.yml +2 -0
  57. agent_teams-0.0.3/docs/docs/hooks/index.mdx +151 -0
  58. agent_teams-0.0.3/docs/docs/index.mdx +88 -0
  59. agent_teams-0.0.3/docs/docs/protocols/_category_.yml +2 -0
  60. agent_teams-0.0.3/docs/docs/protocols/index.mdx +170 -0
  61. agent_teams-0.0.3/docs/docs/reactions/_category_.yml +2 -0
  62. agent_teams-0.0.3/docs/docs/reactions/index.mdx +164 -0
  63. agent_teams-0.0.3/docs/docusaurus.config.js +189 -0
  64. agent_teams-0.0.3/docs/package.json +50 -0
  65. agent_teams-0.0.3/docs/sidebars.js +36 -0
  66. agent_teams-0.0.3/docs/src/components/HomepageRow1.js +66 -0
  67. agent_teams-0.0.3/docs/src/components/HomepageRow1.module.css +18 -0
  68. agent_teams-0.0.3/docs/src/components/HomepageRow2.js +66 -0
  69. agent_teams-0.0.3/docs/src/components/HomepageRow2.module.css +18 -0
  70. agent_teams-0.0.3/docs/src/components/HomepageRow3.js +67 -0
  71. agent_teams-0.0.3/docs/src/components/HomepageRow3.module.css +18 -0
  72. agent_teams-0.0.3/docs/src/css/custom.css +189 -0
  73. agent_teams-0.0.3/docs/src/pages/index.module.css +39 -0
  74. agent_teams-0.0.3/docs/src/pages/markdown-page.md +7 -0
  75. agent_teams-0.0.3/docs/src/theme/CustomDocItem.tsx +22 -0
  76. agent_teams-0.0.3/docs/src/theme/IconsTitle.tsx +36 -0
  77. agent_teams-0.0.3/docs/static/img/bricks.svg +32 -0
  78. agent_teams-0.0.3/docs/static/img/building-construction.svg +22 -0
  79. agent_teams-0.0.3/docs/static/img/cloud-sun.svg +14 -0
  80. agent_teams-0.0.3/docs/static/img/cloud.svg +125 -0
  81. agent_teams-0.0.3/docs/static/img/collaboration.svg +1676 -0
  82. agent_teams-0.0.3/docs/static/img/copy-left.svg +9 -0
  83. agent_teams-0.0.3/docs/static/img/datalayer/logo.png +0 -0
  84. agent_teams-0.0.3/docs/static/img/datalayer/logo.svg +158 -0
  85. agent_teams-0.0.3/docs/static/img/datalayer/personas/business.svg +527 -0
  86. agent_teams-0.0.3/docs/static/img/datalayer/personas/data-scientist.svg +486 -0
  87. agent_teams-0.0.3/docs/static/img/datalayer/personas/devops.svg +463 -0
  88. agent_teams-0.0.3/docs/static/img/datalayer/project/project-line.svg +564 -0
  89. agent_teams-0.0.3/docs/static/img/favicon.ico +0 -0
  90. agent_teams-0.0.3/docs/static/img/jupyter.svg +260 -0
  91. agent_teams-0.0.3/docs/static/img/open-source.svg +1 -0
  92. agent_teams-0.0.3/docs/static/img/react-js.svg +4 -0
  93. agent_teams-0.0.3/docs/static/img/react-js2.svg +46 -0
  94. agent_teams-0.0.3/docs/static/img/ringed-planet.svg +13 -0
  95. agent_teams-0.0.3/docs/static/img/robot.svg +28 -0
  96. agent_teams-0.0.3/docs/static/img/rocket.svg +20 -0
  97. agent_teams-0.0.3/docs/static/img/shield.svg +14 -0
  98. agent_teams-0.0.3/docs/static/img/sparkles.svg +18 -0
  99. agent_teams-0.0.3/docs/static/img/streamlit.gif +0 -0
  100. agent_teams-0.0.3/docs/static/img/super-hero.svg +32 -0
  101. agent_teams-0.0.3/docs/static/img/target.svg +134 -0
  102. agent_teams-0.0.3/docs/static/img/thumbs-up.svg +17 -0
  103. agent_teams-0.0.3/package.json +42 -0
  104. agent_teams-0.0.3/pyproject.toml +123 -0
  105. agent_teams-0.0.3/src/__tests__/orchestrationExtension.test.ts +274 -0
  106. agent_teams-0.0.3/src/index.ts +7 -0
  107. agent_teams-0.0.3/src/orchestrationExtension.ts +363 -0
  108. agent_teams-0.0.3/tests/__init__.py +5 -0
  109. agent_teams-0.0.3/tests/conftest.py +147 -0
  110. agent_teams-0.0.3/tests/test_a2a_application.py +195 -0
  111. agent_teams-0.0.3/tests/test_a2a_channel.py +296 -0
  112. agent_teams-0.0.3/tests/test_a2a_extensions.py +137 -0
  113. agent_teams-0.0.3/tests/test_a2a_orchestration_extension.py +277 -0
  114. agent_teams-0.0.3/tests/test_a2a_storage.py +376 -0
  115. agent_teams-0.0.3/tests/test_a2a_worker.py +332 -0
  116. agent_teams-0.0.3/tests/test_cli.py +83 -0
  117. agent_teams-0.0.3/tests/test_health.py +172 -0
  118. agent_teams-0.0.3/tests/test_hooks.py +218 -0
  119. agent_teams-0.0.3/tests/test_manager.py +183 -0
  120. agent_teams-0.0.3/tests/test_protocol.py +216 -0
  121. agent_teams-0.0.3/tests/test_reactions.py +240 -0
  122. agent_teams-0.0.3/tests/test_routes.py +188 -0
  123. agent_teams-0.0.3/tests/test_state.py +246 -0
  124. agent_teams-0.0.3/tests/test_types.py +221 -0
  125. agent_teams-0.0.3/tsconfig.json +19 -0
@@ -0,0 +1,141 @@
1
+ *.egg-info/
2
+ .ipynb_checkpoints
3
+
4
+ # Node / TypeScript (the @datalayer/agent-teams package)
5
+ node_modules/
6
+ *.tsbuildinfo
7
+ package-lock.json
8
+
9
+ # Created by https://www.gitignore.io/api/python
10
+ # Edit at https://www.gitignore.io/?templates=python
11
+
12
+ ### Python ###
13
+ # Byte-compiled / optimized / DLL files
14
+ __pycache__/
15
+ *.py[cod]
16
+ *$py.class
17
+
18
+ # C extensions
19
+ *.so
20
+
21
+ # Distribution / packaging
22
+ .Python
23
+ build/
24
+ dist/
25
+ downloads/
26
+ lib/
27
+ lib64/
28
+ parts/
29
+ sdist/
30
+ var/
31
+ wheels/
32
+ pip-wheel-metadata/
33
+ share/python-wheels/
34
+ .installed.cfg
35
+
36
+ # PyInstaller
37
+ # Usually these files are written by a python script from a template
38
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
39
+ *.manifest
40
+ *.spec
41
+
42
+ # Installer logs
43
+ pip-log.txt
44
+ pip-delete-this-directory.txt
45
+
46
+ # Unit test / coverage reports
47
+ htmlcov/
48
+ .tox/
49
+ .nox/
50
+ .coverage
51
+ .coverage.*
52
+ .cache
53
+ nosetests.xml
54
+ coverage.xml
55
+ *.cover
56
+ .hypothesis/
57
+ .pytest_cache/
58
+
59
+ # Translations
60
+ *.mo
61
+ *.pot
62
+
63
+ # Environment variables:
64
+ .env
65
+
66
+ # Scrapy stuff:
67
+ .scrapy
68
+
69
+ # Sphinx documentation
70
+ docs/_build/
71
+
72
+ # PyBuilder
73
+ target/
74
+
75
+ # pyenv
76
+ .python-version
77
+
78
+ # celery beat schedule file
79
+ celerybeat-schedule
80
+
81
+ # SageMath parsed files
82
+ *.sage.py
83
+
84
+ # Spyder project settings
85
+ .spyderproject
86
+ .spyproject
87
+
88
+ # Rope project settings
89
+ .ropeproject
90
+
91
+ # Mr Developer
92
+ .mr.developer.cfg
93
+ .project
94
+ .pydevproject
95
+
96
+ # mkdocs documentation
97
+ /site
98
+
99
+ # mypy
100
+ .mypy_cache/
101
+ .dmypy.json
102
+ dmypy.json
103
+
104
+ # ruff
105
+ .ruff_cache
106
+
107
+ # Pyre type checker
108
+ .pyre/
109
+
110
+ # End of https://www.gitignore.io/api/python
111
+
112
+ # OSX files
113
+ .DS_Store
114
+
115
+ # Include
116
+ !**/.*ignore
117
+ !**/.*rc
118
+ !**/.*rc.js
119
+ !**/.*rc.json
120
+ !**/.*rc.yml
121
+ !**/.*config
122
+ !*.*rc.json
123
+ !.github
124
+ !.devcontainer
125
+
126
+ untracked_notebooks/*
127
+ .jupyter_ystore
128
+ .jupyter_ystore.db
129
+ docs/.yarn/*
130
+
131
+ uv.lock
132
+
133
+ generated
134
+ skills
135
+ examples/agent/*.txt
136
+
137
+ launcher.py
138
+
139
+ !docs/docs/skills
140
+ !examples/**/skills
141
+ !skills
@@ -0,0 +1,18 @@
1
+ header:
2
+ license:
3
+ content: |
4
+ Copyright (c) 2025-2026 Datalayer, Inc.
5
+
6
+ BSD 3-Clause License
7
+
8
+
9
+ paths-ignore:
10
+ - '**/*.ipynb'
11
+ - '**/*.json'
12
+ - '**/*.yaml'
13
+ - '**/*.yml'
14
+ - '**/.*'
15
+ - 'docs/**/*'
16
+ - 'LICENSE'
17
+
18
+ comment: on-failure
@@ -0,0 +1,38 @@
1
+ ci:
2
+ autoupdate_schedule: monthly
3
+
4
+ repos:
5
+ - repo: https://github.com/pre-commit/pre-commit-hooks
6
+ rev: v5.0.0
7
+ hooks:
8
+ - id: end-of-file-fixer
9
+ - id: check-case-conflict
10
+ - id: check-executables-have-shebangs
11
+ - id: requirements-txt-fixer
12
+ - id: check-added-large-files
13
+ - id: check-case-conflict
14
+ - id: check-toml
15
+ - id: check-yaml
16
+ - id: debug-statements
17
+ - id: forbid-new-submodules
18
+ - id: check-builtin-literals
19
+ - id: trailing-whitespace
20
+
21
+ - repo: https://github.com/python-jsonschema/check-jsonschema
22
+ rev: 0.29.4
23
+ hooks:
24
+ - id: check-github-workflows
25
+
26
+ - repo: https://github.com/executablebooks/mdformat
27
+ rev: 0.7.19
28
+ hooks:
29
+ - id: mdformat
30
+ additional_dependencies:
31
+ [mdformat-gfm, mdformat-frontmatter, mdformat-footnote]
32
+
33
+ - repo: https://github.com/charliermarsh/ruff-pre-commit
34
+ rev: v0.8.0
35
+ hooks:
36
+ - id: ruff
37
+ args: ["--fix"]
38
+ - id: ruff-format
@@ -0,0 +1,9 @@
1
+ {
2
+ "python-envs.pythonProjects": [
3
+ {
4
+ "path": ".",
5
+ "envManager": "ms-python.python:conda",
6
+ "packageManager": "ms-python.python:conda"
7
+ }
8
+ ]
9
+ }
@@ -0,0 +1,7 @@
1
+ <!--
2
+ ~ Copyright (c) 2025-2026 Datalayer, Inc.
3
+ ~
4
+ ~ BSD 3-Clause License
5
+ -->
6
+
7
+ # Changelog
@@ -0,0 +1,19 @@
1
+ # Copyright (c) 2025-2026 Datalayer, Inc.
2
+ #
3
+ # BSD 3-Clause License
4
+
5
+ FROM python:3.10-slim
6
+
7
+ WORKDIR /app
8
+
9
+ COPY pyproject.toml pyproject.toml
10
+ COPY LICENSE LICENSE
11
+ COPY README.md README.md
12
+ COPY agent_teams/* agent_teams/
13
+
14
+ RUN pip install -e .
15
+
16
+ RUN pip uninstall -y pycrdt datalayer_pycrdt
17
+ RUN pip install datalayer_pycrdt==0.12.17
18
+
19
+ CMD ["python", "-m", "agent_teams.server"]
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2025, Datalayer
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,98 @@
1
+ # Copyright (c) 2025-2026 Datalayer, Inc.
2
+ #
3
+ # BSD 3-Clause License
4
+
5
+ SHELL=/bin/bash
6
+
7
+ .DEFAULT_GOAL := default
8
+
9
+ .PHONY: clean build test
10
+
11
+ VERSION = "0.0.3"
12
+
13
+ default: all ## Default target is all.
14
+
15
+ help: ## display this help.
16
+ @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
17
+
18
+ all: clean dev ## Clean Install and Build
19
+
20
+ install:
21
+ pip install .
22
+
23
+ dev:
24
+ pip install ".[test,lint,typing]"
25
+
26
+ build:
27
+ pip install build
28
+ python -m build .
29
+
30
+ clean: ## clean
31
+ git clean -fdx
32
+
33
+ clean-npm: ## clean-npm
34
+ npm run clean
35
+
36
+ build-npm: ## build-npm
37
+ npm run build
38
+
39
+ build-lib: ## build-lib
40
+ npm run build:lib
41
+
42
+ warning:
43
+ echo "\x1b[34m\x1b[43mEnsure you have run \x1b[1;37m\x1b[41m conda deactivate \x1b[22m\x1b[34m\x1b[43m before invoking this.\x1b[0m"
44
+
45
+ publish-npm: clean-npm build-lib ## publish-npm
46
+ npm publish
47
+ echo open https://www.npmjs.com/package/@datalayer/agent-teams --public
48
+
49
+ test: ## Run tests
50
+ python -m pytest tests/ -v
51
+
52
+ start-agent: ## Start the MCP agent CLI (stdio server). Usage: make start-agent [MODEL=<model>]
53
+ python examples/agent/agent_cli.py $(if $(MODEL),--model $(MODEL),)
54
+
55
+ start-agent-teams: ## Start the Agent Teams agent CLI (stdio server). Usage: make start-agent-teams [MODEL=<model>]
56
+ python examples/agent/agent_cli.py --codemode $(if $(MODEL),--model $(MODEL),)
57
+
58
+ build-docker:
59
+ docker buildx build --platform linux/amd64,linux/arm64 -t datalayer/agent-teams:${VERSION} .
60
+ docker image tag datalayer/agent-teams:${VERSION} datalayer/agent-teams:latest
61
+
62
+ start-docker:
63
+ docker run -i --rm \
64
+ -e SERVER_URL=http://localhost:8888 \
65
+ -e TOKEN=MY_TOKEN \
66
+ -e NOTEBOOK_PATH=notebook.ipynb \
67
+ --network=host \
68
+ datalayer/agent-teams:latest
69
+
70
+ pull-docker:
71
+ docker image pull datalayer/agent-teams:latest
72
+
73
+ push-docker:
74
+ docker push datalayer/agent-teams:${VERSION}
75
+ docker push datalayer/agent-teams:latest
76
+
77
+ claude-linux:
78
+ NIXPKGS_ALLOW_UNFREE=1 nix run github:k3d3/claude-desktop-linux-flake \
79
+ --impure \
80
+ --extra-experimental-features flakes \
81
+ --extra-experimental-features nix-command
82
+
83
+ jupyterlab:
84
+ pip uninstall -y pycrdt datalayer_pycrdt
85
+ pip install datalayer_pycrdt
86
+ jupyter lab \
87
+ --port 8888 \
88
+ --ip 0.0.0.0 \
89
+ --ServerApp.root_dir ./dev/content \
90
+ --IdentityProvider.token MY_TOKEN
91
+
92
+ publish-pypi: # publish the pypi package
93
+ git clean -fdx && \
94
+ python -m build
95
+ @exec echo
96
+ @exec echo twine upload ./dist/*-py3-none-any.whl
97
+ @exec echo
98
+ @exec echo https://pypi.org/project/agent-teams/#history
@@ -0,0 +1,132 @@
1
+ Metadata-Version: 2.5
2
+ Name: agent_teams
3
+ Version: 0.0.3
4
+ Project-URL: Home, https://github.com/datalayer/agent-teams
5
+ Author-email: Datalayer <info@datalayer.io>
6
+ License: BSD 3-Clause License
7
+
8
+ Copyright (c) 2025, Datalayer
9
+ All rights reserved.
10
+
11
+ Redistribution and use in source and binary forms, with or without
12
+ modification, are permitted provided that the following conditions are met:
13
+
14
+ 1. Redistributions of source code must retain the above copyright notice, this
15
+ list of conditions and the following disclaimer.
16
+
17
+ 2. Redistributions in binary form must reproduce the above copyright notice,
18
+ this list of conditions and the following disclaimer in the documentation
19
+ and/or other materials provided with the distribution.
20
+
21
+ 3. Neither the name of the copyright holder nor the names of its
22
+ contributors may be used to endorse or promote products derived from
23
+ this software without specific prior written permission.
24
+
25
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
29
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
33
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
+ License-File: LICENSE
36
+ Keywords: A2A,AI,Agents,Jupyter,Orchestration,Teams
37
+ Classifier: Intended Audience :: Developers
38
+ Classifier: Intended Audience :: System Administrators
39
+ Classifier: License :: OSI Approved :: BSD License
40
+ Classifier: Programming Language :: Python
41
+ Classifier: Programming Language :: Python :: 3
42
+ Requires-Python: >=3.10
43
+ Requires-Dist: fastapi>=0.100
44
+ Requires-Dist: httpx>=0.24
45
+ Requires-Dist: pydantic>=2.0
46
+ Requires-Dist: typer>=0.9
47
+ Requires-Dist: uvicorn[standard]>=0.20
48
+ Provides-Extra: a2a
49
+ Requires-Dist: fasta2a<2.1,>=2.0.0; extra == 'a2a'
50
+ Provides-Extra: all
51
+ Requires-Dist: fasta2a<2.1,>=2.0.0; extra == 'all'
52
+ Requires-Dist: mcp[cli]>=1.0; extra == 'all'
53
+ Requires-Dist: pydantic-ai-slim>=1.94.0; extra == 'all'
54
+ Requires-Dist: pydantic-graph>=1.94.0; extra == 'all'
55
+ Provides-Extra: lint
56
+ Requires-Dist: mdformat-gfm>=0.3.5; extra == 'lint'
57
+ Requires-Dist: mdformat>0.7; extra == 'lint'
58
+ Requires-Dist: ruff; extra == 'lint'
59
+ Provides-Extra: mcp
60
+ Requires-Dist: mcp[cli]>=1.0; extra == 'mcp'
61
+ Provides-Extra: pydantic-ai
62
+ Requires-Dist: pydantic-ai-slim>=1.94.0; extra == 'pydantic-ai'
63
+ Requires-Dist: pydantic-graph>=1.94.0; extra == 'pydantic-ai'
64
+ Provides-Extra: test
65
+ Requires-Dist: anyio; extra == 'test'
66
+ Requires-Dist: fasta2a; extra == 'test'
67
+ Requires-Dist: httpx>=0.24; extra == 'test'
68
+ Requires-Dist: pytest-asyncio>=0.21; extra == 'test'
69
+ Requires-Dist: pytest>=7.0; extra == 'test'
70
+ Provides-Extra: typing
71
+ Requires-Dist: mypy>=0.990; extra == 'typing'
72
+ Description-Content-Type: text/markdown
73
+
74
+ <!--
75
+ ~ Copyright (c) 2025-2026 Datalayer, Inc.
76
+ ~
77
+ ~ BSD 3-Clause License
78
+ -->
79
+
80
+ [![Datalayer](https://assets.datalayer.tech/datalayer-25.svg)](https://datalayer.io)
81
+
82
+ [![Become a Sponsor](https://img.shields.io/static/v1?label=Become%20a%20Sponsor&message=%E2%9D%A4&logo=GitHub&style=flat&color=1ABC9C)](https://github.com/sponsors/datalayer)
83
+
84
+ # 🤖 👥 Agent Teams
85
+
86
+ [![PyPI - Version](https://img.shields.io/pypi/v/agent-teams)](https://pypi.org/project/agent-teams)
87
+ [![npm](https://img.shields.io/npm/v/%40datalayer%2Fagent-teams)](https://www.npmjs.com/package/@datalayer/agent-teams)
88
+
89
+ ## The Datalayer orchestration extension
90
+
91
+ `agent_teams.a2a` (Python) and `@datalayer/agent-teams` (TypeScript)
92
+ implement the [Datalayer orchestration
93
+ extension](https://datalayer.ai/extensions/orchestration/v1) — an optional
94
+ A2A extension that lets a worker and an orchestrator say the things about
95
+ *delegated work* that A2A leaves unsaid: which execution a delegation is
96
+ part of and where it sits in its tree, a budget to decline before
97
+ exceeding, a checkpoint to resume from, and instructions delivered to a
98
+ turn already in progress.
99
+
100
+ ```python
101
+ from agent_teams.a2a import ExecutionRef, build_delegation_meta
102
+
103
+ meta = build_delegation_meta(
104
+ ExecutionRef(execution_id="exec_1", root_execution_id="exec_1", depth=0),
105
+ budget={"outputTokens": 4000},
106
+ )
107
+ ```
108
+
109
+ ```typescript
110
+ import { buildDelegationMeta } from '@datalayer/agent-teams';
111
+
112
+ const meta = buildDelegationMeta(
113
+ { executionId: 'exec_1', rootExecutionId: 'exec_1', depth: 0 },
114
+ { budget: { outputTokens: 4000 } },
115
+ );
116
+ ```
117
+
118
+ Nothing here requires the rest of this package, and nothing here imports
119
+ Datalayer's own platform — `agent_teams.a2a.orchestration_extension` and
120
+ `@datalayer/agent-teams`'s `src/orchestrationExtension.ts` are each a
121
+ standalone module (Python built on `fasta2a` alone; TypeScript with zero
122
+ runtime dependencies at all) implementing the identical wire shape, field
123
+ for field. A worker implementing none of it still runs; see the normative
124
+ specification and its JSON Schema at
125
+ [`docs/extension-v1.md`](https://github.com/datalayer-research/context-orchestration-protocols/blob/main/docs/extension-v1.md)
126
+ for the full field-by-field contract both modules implement.
127
+
128
+ This is distinct from `agent_teams.a2a.extensions`' own
129
+ **team-coordination** extension (`https://datalayer.io/ext/team-coordination/v1`)
130
+ — member assignment, task dependencies, health and reactions for a team's
131
+ *own* internal coordination. The two extensions are independent and
132
+ separately negotiated; a card may advertise either, both, or neither.
@@ -0,0 +1,59 @@
1
+ <!--
2
+ ~ Copyright (c) 2025-2026 Datalayer, Inc.
3
+ ~
4
+ ~ BSD 3-Clause License
5
+ -->
6
+
7
+ [![Datalayer](https://assets.datalayer.tech/datalayer-25.svg)](https://datalayer.io)
8
+
9
+ [![Become a Sponsor](https://img.shields.io/static/v1?label=Become%20a%20Sponsor&message=%E2%9D%A4&logo=GitHub&style=flat&color=1ABC9C)](https://github.com/sponsors/datalayer)
10
+
11
+ # 🤖 👥 Agent Teams
12
+
13
+ [![PyPI - Version](https://img.shields.io/pypi/v/agent-teams)](https://pypi.org/project/agent-teams)
14
+ [![npm](https://img.shields.io/npm/v/%40datalayer%2Fagent-teams)](https://www.npmjs.com/package/@datalayer/agent-teams)
15
+
16
+ ## The Datalayer orchestration extension
17
+
18
+ `agent_teams.a2a` (Python) and `@datalayer/agent-teams` (TypeScript)
19
+ implement the [Datalayer orchestration
20
+ extension](https://datalayer.ai/extensions/orchestration/v1) — an optional
21
+ A2A extension that lets a worker and an orchestrator say the things about
22
+ *delegated work* that A2A leaves unsaid: which execution a delegation is
23
+ part of and where it sits in its tree, a budget to decline before
24
+ exceeding, a checkpoint to resume from, and instructions delivered to a
25
+ turn already in progress.
26
+
27
+ ```python
28
+ from agent_teams.a2a import ExecutionRef, build_delegation_meta
29
+
30
+ meta = build_delegation_meta(
31
+ ExecutionRef(execution_id="exec_1", root_execution_id="exec_1", depth=0),
32
+ budget={"outputTokens": 4000},
33
+ )
34
+ ```
35
+
36
+ ```typescript
37
+ import { buildDelegationMeta } from '@datalayer/agent-teams';
38
+
39
+ const meta = buildDelegationMeta(
40
+ { executionId: 'exec_1', rootExecutionId: 'exec_1', depth: 0 },
41
+ { budget: { outputTokens: 4000 } },
42
+ );
43
+ ```
44
+
45
+ Nothing here requires the rest of this package, and nothing here imports
46
+ Datalayer's own platform — `agent_teams.a2a.orchestration_extension` and
47
+ `@datalayer/agent-teams`'s `src/orchestrationExtension.ts` are each a
48
+ standalone module (Python built on `fasta2a` alone; TypeScript with zero
49
+ runtime dependencies at all) implementing the identical wire shape, field
50
+ for field. A worker implementing none of it still runs; see the normative
51
+ specification and its JSON Schema at
52
+ [`docs/extension-v1.md`](https://github.com/datalayer-research/context-orchestration-protocols/blob/main/docs/extension-v1.md)
53
+ for the full field-by-field contract both modules implement.
54
+
55
+ This is distinct from `agent_teams.a2a.extensions`' own
56
+ **team-coordination** extension (`https://datalayer.io/ext/team-coordination/v1`)
57
+ — member assignment, task dependencies, health and reactions for a team's
58
+ *own* internal coordination. The two extensions are independent and
59
+ separately negotiated; a card may advertise either, both, or neither.