teamrunner 0.0.1__tar.gz → 0.0.2__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.
- teamrunner-0.0.2/.github/ISSUE_TEMPLATE/bug_report.yml +37 -0
- teamrunner-0.0.2/.github/ISSUE_TEMPLATE/config.yml +8 -0
- teamrunner-0.0.2/.github/ISSUE_TEMPLATE/question.yml +18 -0
- teamrunner-0.0.2/.github/workflows/publish.yml +66 -0
- teamrunner-0.0.2/.github/workflows/tests.yml +70 -0
- {teamrunner-0.0.1 → teamrunner-0.0.2}/.gitignore +3 -0
- teamrunner-0.0.2/CHANGELOG.md +39 -0
- teamrunner-0.0.2/CLA.md +80 -0
- teamrunner-0.0.2/CONTRIBUTING.md +25 -0
- teamrunner-0.0.2/LICENSE +674 -0
- teamrunner-0.0.2/NOTICE +29 -0
- teamrunner-0.0.2/PKG-INFO +711 -0
- teamrunner-0.0.2/README.md +676 -0
- teamrunner-0.0.2/SECURITY.md +54 -0
- teamrunner-0.0.2/examples/LICENSE +21 -0
- teamrunner-0.0.2/examples/fact_checked/.gitignore +1 -0
- teamrunner-0.0.2/examples/fact_checked/against.md +11 -0
- teamrunner-0.0.2/examples/fact_checked/chair.md +21 -0
- teamrunner-0.0.2/examples/fact_checked/fact_checker.md +19 -0
- teamrunner-0.0.2/examples/fact_checked/for.md +11 -0
- teamrunner-0.0.2/examples/fact_checked/judge.md +19 -0
- teamrunner-0.0.2/examples/fact_checked/sandbox.md +13 -0
- teamrunner-0.0.2/examples/fact_checked/team.yaml +5 -0
- teamrunner-0.0.2/examples/fact_checked/web.md +13 -0
- teamrunner-0.0.2/examples/hiring_committee/chair.md +14 -0
- teamrunner-0.0.2/examples/hiring_committee/chen.md +28 -0
- teamrunner-0.0.2/examples/hiring_committee/clerk.md +16 -0
- teamrunner-0.0.2/examples/hiring_committee/diaz.md +29 -0
- teamrunner-0.0.2/examples/hiring_committee/models/member.yaml +6 -0
- teamrunner-0.0.2/examples/hiring_committee/okafor.md +28 -0
- teamrunner-0.0.2/examples/hiring_committee/team.yaml +35 -0
- teamrunner-0.0.2/examples/multi_agent_debate/.gitignore +1 -0
- teamrunner-0.0.2/examples/multi_agent_debate/against.md +11 -0
- teamrunner-0.0.2/examples/multi_agent_debate/chair.md +8 -0
- teamrunner-0.0.2/examples/multi_agent_debate/for.md +11 -0
- teamrunner-0.0.2/examples/multi_agent_debate/judge.md +14 -0
- teamrunner-0.0.2/examples/multi_agent_debate/team.yaml +7 -0
- teamrunner-0.0.2/examples/orchestrators_lite/.gitignore +1 -0
- teamrunner-0.0.2/examples/orchestrators_lite/chair.md +9 -0
- teamrunner-0.0.2/examples/orchestrators_lite/derek.md +26 -0
- teamrunner-0.0.2/examples/orchestrators_lite/emma.md +29 -0
- teamrunner-0.0.2/examples/orchestrators_lite/lily.md +26 -0
- teamrunner-0.0.2/examples/orchestrators_lite/models/engineer.yaml +7 -0
- teamrunner-0.0.2/examples/orchestrators_lite/noah.md +26 -0
- teamrunner-0.0.2/examples/orchestrators_lite/team.yaml +42 -0
- teamrunner-0.0.2/examples/orchestrators_lite/zoe.md +26 -0
- teamrunner-0.0.2/examples/reference_check/catalogue.md +22 -0
- teamrunner-0.0.2/examples/reference_check/chair.md +18 -0
- teamrunner-0.0.2/examples/reference_check/context_checker.md +28 -0
- teamrunner-0.0.2/examples/reference_check/editor.md +17 -0
- teamrunner-0.0.2/examples/reference_check/intake.md +10 -0
- teamrunner-0.0.2/examples/reference_check/library.md +13 -0
- teamrunner-0.0.2/examples/reference_check/metadata_checker.md +21 -0
- teamrunner-0.0.2/examples/reference_check/reader.md +23 -0
- teamrunner-0.0.2/examples/reference_check/team.yaml +9 -0
- teamrunner-0.0.2/examples/round_robin/.gitignore +1 -0
- teamrunner-0.0.2/examples/round_robin/01_for.md +9 -0
- teamrunner-0.0.2/examples/round_robin/02_against.md +10 -0
- teamrunner-0.0.2/examples/round_robin/03_judge.md +14 -0
- teamrunner-0.0.2/examples/round_robin/team.yaml +5 -0
- teamrunner-0.0.2/pyproject.toml +61 -0
- teamrunner-0.0.2/src/teamrunner/__init__.py +19 -0
- teamrunner-0.0.2/src/teamrunner/__main__.py +5 -0
- teamrunner-0.0.2/src/teamrunner/authoring/AGENTS.md +233 -0
- teamrunner-0.0.2/src/teamrunner/authoring/LICENSE +21 -0
- teamrunner-0.0.2/src/teamrunner/authoring/__init__.py +83 -0
- teamrunner-0.0.2/src/teamrunner/build.py +111 -0
- teamrunner-0.0.2/src/teamrunner/builtin_tools.py +317 -0
- teamrunner-0.0.2/src/teamrunner/checks.py +257 -0
- teamrunner-0.0.2/src/teamrunner/cli.py +445 -0
- teamrunner-0.0.2/src/teamrunner/console.py +214 -0
- teamrunner-0.0.2/src/teamrunner/describe.py +119 -0
- teamrunner-0.0.2/src/teamrunner/desk.py +130 -0
- teamrunner-0.0.2/src/teamrunner/engine.py +159 -0
- teamrunner-0.0.2/src/teamrunner/environment.py +20 -0
- teamrunner-0.0.2/src/teamrunner/events.py +36 -0
- teamrunner-0.0.2/src/teamrunner/explain.py +301 -0
- teamrunner-0.0.2/src/teamrunner/flow.py +463 -0
- teamrunner-0.0.2/src/teamrunner/gather.py +36 -0
- teamrunner-0.0.2/src/teamrunner/ids.py +60 -0
- teamrunner-0.0.2/src/teamrunner/inputs.py +106 -0
- teamrunner-0.0.2/src/teamrunner/ir.py +158 -0
- teamrunner-0.0.2/src/teamrunner/keys.py +144 -0
- teamrunner-0.0.2/src/teamrunner/litellm_model.py +90 -0
- teamrunner-0.0.2/src/teamrunner/loader.py +229 -0
- teamrunner-0.0.2/src/teamrunner/minutes.py +100 -0
- teamrunner-0.0.2/src/teamrunner/model.py +41 -0
- teamrunner-0.0.2/src/teamrunner/new.py +131 -0
- teamrunner-0.0.2/src/teamrunner/prices.py +115 -0
- teamrunner-0.0.2/src/teamrunner/problems.py +48 -0
- teamrunner-0.0.2/src/teamrunner/rehearsal.py +63 -0
- teamrunner-0.0.2/src/teamrunner/run.py +290 -0
- teamrunner-0.0.2/src/teamrunner/runfolder.py +82 -0
- teamrunner-0.0.2/src/teamrunner/runs.py +164 -0
- teamrunner-0.0.2/src/teamrunner/sandbox/__init__.py +137 -0
- teamrunner-0.0.2/src/teamrunner/sandbox/run.js +68 -0
- teamrunner-0.0.2/src/teamrunner/schema_check.py +74 -0
- teamrunner-0.0.2/src/teamrunner/schemas/member.schema.json +112 -0
- teamrunner-0.0.2/src/teamrunner/schemas/model_profile.schema.json +24 -0
- teamrunner-0.0.2/src/teamrunner/schemas/team.schema.json +41 -0
- teamrunner-0.0.2/src/teamrunner/show.py +124 -0
- teamrunner-0.0.2/src/teamrunner/tool_registry.py +22 -0
- teamrunner-0.0.2/src/teamrunner/turns.py +262 -0
- teamrunner-0.0.2/src/teamrunner/validate.py +433 -0
- teamrunner-0.0.2/src/teamrunner/vocabulary.py +96 -0
- teamrunner-0.0.2/tests/test_authoring.py +132 -0
- teamrunner-0.0.2/tests/test_engine.py +122 -0
- teamrunner-0.0.2/tests/test_explain.py +65 -0
- teamrunner-0.0.2/tests/test_flow.py +232 -0
- teamrunner-0.0.2/tests/test_minutes.py +54 -0
- teamrunner-0.0.2/tests/test_new.py +77 -0
- teamrunner-0.0.2/tests/test_prices.py +73 -0
- teamrunner-0.0.2/tests/test_run.py +354 -0
- teamrunner-0.0.2/tests/test_runs.py +45 -0
- teamrunner-0.0.2/tests/test_sandbox.py +152 -0
- teamrunner-0.0.2/tests/test_show.py +39 -0
- teamrunner-0.0.2/tests/test_tools.py +343 -0
- teamrunner-0.0.2/tests/test_turns.py +114 -0
- teamrunner-0.0.2/tests/test_validate.py +285 -0
- teamrunner-0.0.2/uv.lock +3450 -0
- teamrunner-0.0.1/.github/workflows/publish.yml +0 -25
- teamrunner-0.0.1/LICENSE +0 -202
- teamrunner-0.0.1/PKG-INFO +0 -37
- teamrunner-0.0.1/README.md +0 -20
- teamrunner-0.0.1/pyproject.toml +0 -29
- teamrunner-0.0.1/src/teamrunner/__init__.py +0 -11
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Something went wrong, or did not do what the README says
|
|
3
|
+
labels: [bug]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Thanks for trying TeamRunner. Please **never paste an API key**. A run folder
|
|
9
|
+
holds everything said in the run, so paste only the parts you are happy to make
|
|
10
|
+
public. A security problem? Please email security@teamrunner.ai instead.
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: what
|
|
13
|
+
attributes:
|
|
14
|
+
label: What happened
|
|
15
|
+
description: What you ran, what you expected, and what you got. Paste error messages as text.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: input
|
|
19
|
+
id: version
|
|
20
|
+
attributes:
|
|
21
|
+
label: TeamRunner version
|
|
22
|
+
description: The output of `teamrunner --version`
|
|
23
|
+
placeholder: teamrunner 0.0.2
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: input
|
|
27
|
+
id: system
|
|
28
|
+
attributes:
|
|
29
|
+
label: Operating system and Python
|
|
30
|
+
placeholder: macOS 15, Python 3.12
|
|
31
|
+
validations:
|
|
32
|
+
required: true
|
|
33
|
+
- type: textarea
|
|
34
|
+
id: team
|
|
35
|
+
attributes:
|
|
36
|
+
label: The team, if it helps
|
|
37
|
+
description: The files involved (team.yaml, chair.md, a member's file), or `teamrunner explain` output.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: true
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Report a security problem privately
|
|
4
|
+
url: https://github.com/teamrunner/teamrunner/blob/main/SECURITY.md
|
|
5
|
+
about: Please do not report security problems in a public issue.
|
|
6
|
+
- name: No GitHub account? Email us
|
|
7
|
+
url: https://github.com/teamrunner/teamrunner#questions-bugs-and-ideas
|
|
8
|
+
about: Comments, questions and bug reports by email, to hello@teamrunner.ai.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Question or idea
|
|
2
|
+
description: How do I…? Could TeamRunner…? Or anything else you noticed
|
|
3
|
+
body:
|
|
4
|
+
- type: markdown
|
|
5
|
+
attributes:
|
|
6
|
+
value: |
|
|
7
|
+
Questions and ideas are as welcome as bugs. Please never paste an API key.
|
|
8
|
+
- type: textarea
|
|
9
|
+
id: question
|
|
10
|
+
attributes:
|
|
11
|
+
label: Your question or idea
|
|
12
|
+
validations:
|
|
13
|
+
required: true
|
|
14
|
+
- type: input
|
|
15
|
+
id: version
|
|
16
|
+
attributes:
|
|
17
|
+
label: TeamRunner version, if it matters
|
|
18
|
+
placeholder: teamrunner 0.0.2
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
# A published GitHub release builds the package once, tests exactly those files on every
|
|
4
|
+
# system the tests run on, and only then publishes them, from the `pypi` environment
|
|
5
|
+
# (where a required approval is set). Started by hand, it builds and tests but never
|
|
6
|
+
# publishes: a rehearsal of a release.
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
release:
|
|
10
|
+
types: [published]
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
21
|
+
- uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
|
|
25
|
+
- name: The release names this version
|
|
26
|
+
if: github.event_name == 'release'
|
|
27
|
+
shell: bash
|
|
28
|
+
env:
|
|
29
|
+
TAG: ${{ github.event.release.tag_name }}
|
|
30
|
+
run: |
|
|
31
|
+
version=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")
|
|
32
|
+
if [ "${TAG#v}" != "$version" ]; then
|
|
33
|
+
echo "The release is $TAG, but pyproject.toml says $version"; exit 1
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
- name: Build the wheel and the sdist
|
|
37
|
+
run: |
|
|
38
|
+
python -m pip install --upgrade build
|
|
39
|
+
python -m build
|
|
40
|
+
|
|
41
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
42
|
+
with:
|
|
43
|
+
name: dist
|
|
44
|
+
path: dist/
|
|
45
|
+
if-no-files-found: error
|
|
46
|
+
|
|
47
|
+
test:
|
|
48
|
+
needs: build
|
|
49
|
+
uses: ./.github/workflows/tests.yml
|
|
50
|
+
with:
|
|
51
|
+
dist: dist
|
|
52
|
+
|
|
53
|
+
publish:
|
|
54
|
+
needs: test
|
|
55
|
+
if: github.event_name == 'release'
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
environment: pypi
|
|
58
|
+
permissions:
|
|
59
|
+
id-token: write # PyPI Trusted Publishing (OIDC)
|
|
60
|
+
contents: read
|
|
61
|
+
steps:
|
|
62
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
63
|
+
with:
|
|
64
|
+
name: dist
|
|
65
|
+
path: dist
|
|
66
|
+
- uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
# Every push and pull request: build the wheel, install it into a clean Python, and run the
|
|
4
|
+
# tests against the installed copy, on Linux, macOS and Windows, on the oldest and newest
|
|
5
|
+
# Python claimed. Then make a team from a shipped example and check it, as a new user would.
|
|
6
|
+
# No model is called and no key is needed.
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
push:
|
|
10
|
+
pull_request:
|
|
11
|
+
# The publishing workflow calls this one on the files it is about to publish
|
|
12
|
+
workflow_call:
|
|
13
|
+
inputs:
|
|
14
|
+
dist:
|
|
15
|
+
description: the name of an artifact holding the wheel to test, instead of building one
|
|
16
|
+
type: string
|
|
17
|
+
default: ""
|
|
18
|
+
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
test:
|
|
24
|
+
strategy:
|
|
25
|
+
fail-fast: false
|
|
26
|
+
matrix:
|
|
27
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
28
|
+
python: ["3.10", "3.13"]
|
|
29
|
+
runs-on: ${{ matrix.os }}
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
32
|
+
- uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
|
|
33
|
+
with:
|
|
34
|
+
python-version: ${{ matrix.python }}
|
|
35
|
+
|
|
36
|
+
- name: Build the wheel
|
|
37
|
+
if: inputs.dist == ''
|
|
38
|
+
shell: bash
|
|
39
|
+
run: |
|
|
40
|
+
python -m pip install --upgrade pip build
|
|
41
|
+
python -m build
|
|
42
|
+
|
|
43
|
+
- name: Take the wheel being published
|
|
44
|
+
if: inputs.dist != ''
|
|
45
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
46
|
+
with:
|
|
47
|
+
name: ${{ inputs.dist }}
|
|
48
|
+
path: dist
|
|
49
|
+
|
|
50
|
+
- name: Install it
|
|
51
|
+
shell: bash
|
|
52
|
+
run: python -m pip install dist/*.whl pytest
|
|
53
|
+
|
|
54
|
+
# src/ is never on the path, so the tests import the installed copy
|
|
55
|
+
- name: Tests
|
|
56
|
+
run: python -m pytest -q
|
|
57
|
+
|
|
58
|
+
# From an empty folder, in PowerShell everywhere (so Windows gets its own shell),
|
|
59
|
+
# stopping at the first command that fails
|
|
60
|
+
- name: A new team from a shipped example
|
|
61
|
+
shell: pwsh
|
|
62
|
+
working-directory: ${{ runner.temp }}
|
|
63
|
+
run: |
|
|
64
|
+
$PSNativeCommandUseErrorActionPreference = $true
|
|
65
|
+
teamrunner --version
|
|
66
|
+
teamrunner new debate --from multi_agent_debate
|
|
67
|
+
teamrunner validate debate
|
|
68
|
+
teamrunner explain debate
|
|
69
|
+
teamrunner run debate --rehearse -m "Should cities ban cars from their centres?"
|
|
70
|
+
teamrunner runs debate
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
TeamRunner is in preview: 0.0.x versions are a soft launch, and until 0.1.0
|
|
4
|
+
is announced a version may change in ways that break teams and run folders
|
|
5
|
+
made with an earlier one. Each such change is listed here.
|
|
6
|
+
|
|
7
|
+
## 0.0.2 — the first preview
|
|
8
|
+
|
|
9
|
+
What the roadmap calls 0.1, the org package: a folder of text files that gets
|
|
10
|
+
a job done.
|
|
11
|
+
|
|
12
|
+
- **Teams from files**: a folder with `team.yaml` is a team; each member is a
|
|
13
|
+
Markdown file (settings on top, the prompt as prose); `chair.md` is the
|
|
14
|
+
script of who acts when, with rounds and decisions; with no chair, members
|
|
15
|
+
take turns in name order. Model profiles in `models/` share a model and its
|
|
16
|
+
settings across a team.
|
|
17
|
+
- **Commands**: `new` (empty, `--from` an example or another team, or
|
|
18
|
+
`--describe` for a team written by a model), `validate` (with `--online`
|
|
19
|
+
to check the models), `explain`, `run` (with `--message`, `--file`,
|
|
20
|
+
`--task-file`; `--rehearse` runs the whole flow with no model and no cost),
|
|
21
|
+
`runs`, `show`, `gather`, `skill`.
|
|
22
|
+
- **Toolkeepers** hold the tools, with an access list and guardrails, and four
|
|
23
|
+
built-in tools: `web_search_brave`, `read_page`, `read_file`, and `run_code`
|
|
24
|
+
(Python in a WebAssembly sandbox).
|
|
25
|
+
- **Every run is logged** in the team's `runs/` folder: `run.json`,
|
|
26
|
+
`events.jsonl` and `output.md`, with costs, and the Python, LiteLLM and Deno
|
|
27
|
+
versions it ran on. Search results are read by the team but not kept,
|
|
28
|
+
unless `keep_results: true`.
|
|
29
|
+
- **Six examples ship**: `round_robin`, `multi_agent_debate`,
|
|
30
|
+
`orchestrators_lite`, `fact_checked`, `reference_check`, and
|
|
31
|
+
`hiring_committee` (a hidden-profile task, after Stasser and Titus 1985).
|
|
32
|
+
- Models from OpenAI, Anthropic and Google, and local models through Ollama.
|
|
33
|
+
macOS, Linux and Windows; Python 3.10 to 3.13.
|
|
34
|
+
- Licensed GPL-3.0-or-later; the examples, the files `new` writes and the
|
|
35
|
+
authoring guide are MIT-0.
|
|
36
|
+
|
|
37
|
+
## 0.0.1
|
|
38
|
+
|
|
39
|
+
Reserved the name on PyPI. No working code.
|
teamrunner-0.0.2/CLA.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# TeamRunner Individual Contributor License Agreement
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to TeamRunner (the "Project").
|
|
4
|
+
|
|
5
|
+
This Contributor License Agreement ("Agreement") documents the rights granted
|
|
6
|
+
by contributors to the Project's owner, Kumar Muthuraman, and his successors
|
|
7
|
+
and assigns (the "Project Owner"). This Agreement is for your protection as a
|
|
8
|
+
contributor as well as the protection of the Project and its users; it does
|
|
9
|
+
not change your rights to use your own contributions for any other purpose.
|
|
10
|
+
|
|
11
|
+
By commenting "I have read the CLA Document and I hereby sign the CLA" on a
|
|
12
|
+
pull request in this repository, you accept and agree to the following terms
|
|
13
|
+
and conditions for your present and future Contributions submitted to the
|
|
14
|
+
Project.
|
|
15
|
+
|
|
16
|
+
## 1. Definitions
|
|
17
|
+
|
|
18
|
+
**"You"** (or **"Your"**) means the copyright owner or legal entity authorized
|
|
19
|
+
by the copyright owner that is entering into this Agreement.
|
|
20
|
+
|
|
21
|
+
**"Contribution"** means any original work of authorship, including any
|
|
22
|
+
modifications or additions to an existing work, that You intentionally submit
|
|
23
|
+
to the Project for inclusion in, or documentation of, the Project. "Submit"
|
|
24
|
+
means any form of electronic or written communication sent to the Project,
|
|
25
|
+
including but not limited to pull requests, issues, and comments, but
|
|
26
|
+
excluding communication that You conspicuously mark "Not a Contribution."
|
|
27
|
+
|
|
28
|
+
## 2. Grant of Copyright License
|
|
29
|
+
|
|
30
|
+
Subject to the terms of this Agreement, You hereby grant to the Project Owner
|
|
31
|
+
a perpetual, worldwide, non-exclusive, royalty-free, irrevocable copyright
|
|
32
|
+
license to reproduce, prepare derivative works of, publicly display, publicly
|
|
33
|
+
perform, sublicense, and distribute Your Contributions and such derivative
|
|
34
|
+
works, and to license Your Contributions and such derivative works under any
|
|
35
|
+
license terms of the Project Owner's choosing, including open-source,
|
|
36
|
+
source-available, and proprietary licenses.
|
|
37
|
+
|
|
38
|
+
## 3. Grant of Patent License
|
|
39
|
+
|
|
40
|
+
Subject to the terms of this Agreement, You hereby grant to the Project Owner
|
|
41
|
+
and to recipients of software distributed by the Project a perpetual,
|
|
42
|
+
worldwide, non-exclusive, royalty-free, irrevocable (except as stated in this
|
|
43
|
+
section) patent license to make, have made, use, offer to sell, sell, import,
|
|
44
|
+
and otherwise transfer Your Contributions, where such license applies only to
|
|
45
|
+
those patent claims licensable by You that are necessarily infringed by Your
|
|
46
|
+
Contributions alone or by combination of Your Contributions with the Project.
|
|
47
|
+
If any entity institutes patent litigation against You or any other entity
|
|
48
|
+
alleging that Your Contribution, or the Project to which You have contributed,
|
|
49
|
+
constitutes direct or contributory patent infringement, then any patent
|
|
50
|
+
licenses granted to that entity under this Agreement for that Contribution or
|
|
51
|
+
the Project shall terminate as of the date such litigation is filed.
|
|
52
|
+
|
|
53
|
+
## 4. Your Representations
|
|
54
|
+
|
|
55
|
+
You represent that:
|
|
56
|
+
|
|
57
|
+
1. You are legally entitled to grant the above licenses.
|
|
58
|
+
2. Each of Your Contributions is Your original creation. Should You wish to
|
|
59
|
+
submit work that is not Your original creation, You may submit it
|
|
60
|
+
separately, identifying the complete details of its source and of any
|
|
61
|
+
license or other restriction of which You are personally aware, and
|
|
62
|
+
conspicuously marking the work as "Submitted on behalf of a third party."
|
|
63
|
+
3. If Your employer has rights to intellectual property that You create that
|
|
64
|
+
includes Your Contributions, You have received permission to make the
|
|
65
|
+
Contributions on behalf of that employer, or Your employer has waived such
|
|
66
|
+
rights for Your Contributions to the Project.
|
|
67
|
+
4. You will notify the Project if You become aware of any facts or
|
|
68
|
+
circumstances that would make these representations inaccurate.
|
|
69
|
+
|
|
70
|
+
## 5. No Obligation and No Warranty
|
|
71
|
+
|
|
72
|
+
You are not expected to provide support for Your Contributions, except to the
|
|
73
|
+
extent You desire to provide support. Unless required by applicable law or
|
|
74
|
+
agreed to in writing, You provide Your Contributions on an "AS IS" BASIS,
|
|
75
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
76
|
+
|
|
77
|
+
## 6. Retained Rights
|
|
78
|
+
|
|
79
|
+
Except for the licenses granted herein, You reserve all right, title, and
|
|
80
|
+
interest in and to Your Contributions.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Contributing to TeamRunner
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in contributing!
|
|
4
|
+
|
|
5
|
+
## Not accepting pull requests yet
|
|
6
|
+
|
|
7
|
+
TeamRunner is in early development, and we are not accepting pull requests
|
|
8
|
+
yet. Pull requests opened now will be closed unmerged, so please don't put
|
|
9
|
+
time into one.
|
|
10
|
+
|
|
11
|
+
What helps most right now is an issue: bug reports, questions, and ideas are
|
|
12
|
+
all very welcome. Please open one in this repository's Issues tab, or, if you
|
|
13
|
+
have no GitHub account, write to hello@teamrunner.ai. Security problems go to
|
|
14
|
+
security@teamrunner.ai (see SECURITY.md), not to an issue.
|
|
15
|
+
|
|
16
|
+
We will announce here when pull requests open.
|
|
17
|
+
|
|
18
|
+
## Contributor License Agreement
|
|
19
|
+
|
|
20
|
+
Once pull requests open, you will need to sign our
|
|
21
|
+
[Contributor License Agreement](CLA.md) before your first one can be merged.
|
|
22
|
+
It's a one-time step that covers all your future contributions.
|
|
23
|
+
|
|
24
|
+
The CLA keeps the project's ownership unambiguous — it protects both you
|
|
25
|
+
and the project. TeamRunner itself remains licensed under GPL-3.0-or-later.
|