ase-python 0.1.0__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 (155) hide show
  1. ase_python-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +27 -0
  2. ase_python-0.1.0/.github/ISSUE_TEMPLATE/config.yml +1 -0
  3. ase_python-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +25 -0
  4. ase_python-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +16 -0
  5. ase_python-0.1.0/.github/workflows/certify.yml +126 -0
  6. ase_python-0.1.0/.github/workflows/publish-pypi.yml +48 -0
  7. ase_python-0.1.0/.gitignore +20 -0
  8. ase_python-0.1.0/.gitlab-ci.yml +72 -0
  9. ase_python-0.1.0/CODE_OF_CONDUCT.md +44 -0
  10. ase_python-0.1.0/CONTRIBUTING.md +18 -0
  11. ase_python-0.1.0/LICENSE +105 -0
  12. ase_python-0.1.0/PKG-INFO +184 -0
  13. ase_python-0.1.0/README.md +103 -0
  14. ase_python-0.1.0/README_PYPI.md +43 -0
  15. ase_python-0.1.0/SECURITY.md +26 -0
  16. ase_python-0.1.0/conformance/bundles/mcp/mcp-python/events.jsonl +7 -0
  17. ase_python-0.1.0/conformance/bundles/mcp/mcp-python/manifest.yaml +20 -0
  18. ase_python-0.1.0/constraints/py311.txt +15 -0
  19. ase_python-0.1.0/docs/README.md +17 -0
  20. ase_python-0.1.0/docs/architecture-boundaries.md +27 -0
  21. ase_python-0.1.0/docs/assets/README.md +13 -0
  22. ase_python-0.1.0/docs/assets/before-after-regression.svg +17 -0
  23. ase_python-0.1.0/docs/assets/before-after-safety.svg +17 -0
  24. ase_python-0.1.0/docs/assets/before-after-side-effects.svg +16 -0
  25. ase_python-0.1.0/docs/assets/dev-loop.svg +23 -0
  26. ase_python-0.1.0/docs/assets/how-ase-works.svg +28 -0
  27. ase_python-0.1.0/docs/assets/workflow-overview.svg +19 -0
  28. ase_python-0.1.0/docs/build-an-adapter.md +36 -0
  29. ase_python-0.1.0/docs/case-studies/README.md +19 -0
  30. ase_python-0.1.0/docs/case-studies/langgraph-wrong-record.md +48 -0
  31. ase_python-0.1.0/docs/case-studies/openai-prompt-regression.md +61 -0
  32. ase_python-0.1.0/docs/case-studies/pydantic-approval-gate.md +49 -0
  33. ase_python-0.1.0/docs/certify-a-framework.md +25 -0
  34. ase_python-0.1.0/docs/ci-cd.md +45 -0
  35. ase_python-0.1.0/docs/compatibility-matrix.md +26 -0
  36. ase_python-0.1.0/docs/compatibility-policy.md +20 -0
  37. ase_python-0.1.0/docs/example-workflows.md +66 -0
  38. ase_python-0.1.0/docs/how-ase-works.md +34 -0
  39. ase_python-0.1.0/docs/interoperability.md +25 -0
  40. ase_python-0.1.0/docs/release-checklist.md +10 -0
  41. ase_python-0.1.0/docs/releasing.md +66 -0
  42. ase_python-0.1.0/docs/setup.md +152 -0
  43. ase_python-0.1.0/docs/what-ase-certifies.md +27 -0
  44. ase_python-0.1.0/docs/why-ase-is-critical.md +92 -0
  45. ase_python-0.1.0/examples/mcp-python/README.md +13 -0
  46. ase_python-0.1.0/examples/mcp-python/agent.py +77 -0
  47. ase_python-0.1.0/examples/mcp-python/manifest.yaml +20 -0
  48. ase_python-0.1.0/examples/mcp-python/requirements.txt +1 -0
  49. ase_python-0.1.0/examples/mcp-python/scenario.yaml +23 -0
  50. ase_python-0.1.0/examples/openai-agents-typescript/README.md +14 -0
  51. ase_python-0.1.0/examples/openai-agents-typescript/package.json +9 -0
  52. ase_python-0.1.0/pyproject.toml +85 -0
  53. ase_python-0.1.0/schemas/ase_conformance_manifest.schema.json +58 -0
  54. ase_python-0.1.0/schemas/ase_conformance_result.schema.json +57 -0
  55. ase_python-0.1.0/schemas/ase_scenario.schema.json +998 -0
  56. ase_python-0.1.0/scripts/bootstrap_upstream_validations.py +171 -0
  57. ase_python-0.1.0/scripts/generate_compatibility_matrix.py +26 -0
  58. ase_python-0.1.0/scripts/materialize_recovery_pyc.py +70 -0
  59. ase_python-0.1.0/src/ase/__init__.py +21 -0
  60. ase_python-0.1.0/src/ase/adapters/__init__.py +14 -0
  61. ase_python-0.1.0/src/ase/adapters/contract.py +28 -0
  62. ase_python-0.1.0/src/ase/adapters/frameworks/__init__.py +17 -0
  63. ase_python-0.1.0/src/ase/adapters/frameworks/base.py +259 -0
  64. ase_python-0.1.0/src/ase/adapters/frameworks/langgraph.py +19 -0
  65. ase_python-0.1.0/src/ase/adapters/frameworks/mcp.py +68 -0
  66. ase_python-0.1.0/src/ase/adapters/frameworks/openai_agents.py +19 -0
  67. ase_python-0.1.0/src/ase/adapters/frameworks/pydantic_ai.py +19 -0
  68. ase_python-0.1.0/src/ase/adapters/io.py +50 -0
  69. ase_python-0.1.0/src/ase/adapters/model.py +89 -0
  70. ase_python-0.1.0/src/ase/adapters/protocol.py +72 -0
  71. ase_python-0.1.0/src/ase/adapters/replay.py +261 -0
  72. ase_python-0.1.0/src/ase/cli/__init__.py +7 -0
  73. ase_python-0.1.0/src/ase/cli/_trace_outputs.py +40 -0
  74. ase_python-0.1.0/src/ase/cli/adapter_cmd.py +38 -0
  75. ase_python-0.1.0/src/ase/cli/certify_cmd.py +74 -0
  76. ase_python-0.1.0/src/ase/cli/compare.py +145 -0
  77. ase_python-0.1.0/src/ase/cli/doctor_cmd.py +45 -0
  78. ase_python-0.1.0/src/ase/cli/examples_cmd.py +27 -0
  79. ase_python-0.1.0/src/ase/cli/history_cmd.py +126 -0
  80. ase_python-0.1.0/src/ase/cli/import_cmd.py +34 -0
  81. ase_python-0.1.0/src/ase/cli/main.py +134 -0
  82. ase_python-0.1.0/src/ase/cli/replay_cmd.py +48 -0
  83. ase_python-0.1.0/src/ase/cli/report.py +115 -0
  84. ase_python-0.1.0/src/ase/cli/spec_cmd.py +53 -0
  85. ase_python-0.1.0/src/ase/cli/test_cmd.py +121 -0
  86. ase_python-0.1.0/src/ase/config/env_loader.py +71 -0
  87. ase_python-0.1.0/src/ase/config/loader.py +82 -0
  88. ase_python-0.1.0/src/ase/config/model.py +51 -0
  89. ase_python-0.1.0/src/ase/conformance/__init__.py +7 -0
  90. ase_python-0.1.0/src/ase/conformance/matrix.py +111 -0
  91. ase_python-0.1.0/src/ase/conformance/model.py +91 -0
  92. ase_python-0.1.0/src/ase/conformance/schema.py +37 -0
  93. ase_python-0.1.0/src/ase/conformance/service.py +194 -0
  94. ase_python-0.1.0/src/ase/core/engine.py +348 -0
  95. ase_python-0.1.0/src/ase/errors.py +59 -0
  96. ase_python-0.1.0/src/ase/evaluation/__init__.py +7 -0
  97. ase_python-0.1.0/src/ase/evaluation/base.py +63 -0
  98. ase_python-0.1.0/src/ase/evaluation/consistency.py +79 -0
  99. ase_python-0.1.0/src/ase/evaluation/correctness.py +117 -0
  100. ase_python-0.1.0/src/ase/evaluation/efficiency.py +145 -0
  101. ase_python-0.1.0/src/ase/evaluation/engine.py +182 -0
  102. ase_python-0.1.0/src/ase/evaluation/policy.py +134 -0
  103. ase_python-0.1.0/src/ase/evaluation/scoring.py +64 -0
  104. ase_python-0.1.0/src/ase/evaluation/trace_summary.py +36 -0
  105. ase_python-0.1.0/src/ase/examples_matrix.py +118 -0
  106. ase_python-0.1.0/src/ase/reporting/__init__.py +7 -0
  107. ase_python-0.1.0/src/ase/reporting/json_report.py +45 -0
  108. ase_python-0.1.0/src/ase/reporting/junit.py +38 -0
  109. ase_python-0.1.0/src/ase/reporting/markdown.py +32 -0
  110. ase_python-0.1.0/src/ase/reporting/terminal.py +66 -0
  111. ase_python-0.1.0/src/ase/scenario/__init__.py +7 -0
  112. ase_python-0.1.0/src/ase/scenario/model.py +294 -0
  113. ase_python-0.1.0/src/ase/scenario/parser.py +40 -0
  114. ase_python-0.1.0/src/ase/storage/__init__.py +7 -0
  115. ase_python-0.1.0/src/ase/storage/trace_store.py +136 -0
  116. ase_python-0.1.0/src/ase/trace/__init__.py +7 -0
  117. ase_python-0.1.0/src/ase/trace/builder.py +175 -0
  118. ase_python-0.1.0/src/ase/trace/model.py +264 -0
  119. ase_python-0.1.0/src/ase/trace/otel_export.py +75 -0
  120. ase_python-0.1.0/src/ase/trace/otel_import.py +96 -0
  121. ase_python-0.1.0/src/ase/trace/redaction.py +10 -0
  122. ase_python-0.1.0/src/ase/trace/serializer.py +50 -0
  123. ase_python-0.1.0/tests/integration/test_framework_examples.py +179 -0
  124. ase_python-0.1.0/tests/unit/test_case_study_layout.py +23 -0
  125. ase_python-0.1.0/tests/unit/test_conformance_matrix.py +59 -0
  126. ase_python-0.1.0/tests/unit/test_efficiency.py +54 -0
  127. ase_python-0.1.0/tests/unit/test_env_loader.py +46 -0
  128. ase_python-0.1.0/tests/unit/test_mcp_adapter.py +31 -0
  129. ase_python-0.1.0/tests/unit/test_open_source_layout.py +32 -0
  130. ase_python-0.1.0/tests/unit/test_release_metadata.py +26 -0
  131. ase_python-0.1.0/tests/unit/test_report_compare.py +66 -0
  132. ase_python-0.1.0/tests/unit/test_trace_storage.py +64 -0
  133. ase_python-0.1.0/validation/case_studies/README.md +23 -0
  134. ase_python-0.1.0/validation/case_studies/langgraph_wrong_record/ase_agent.py +120 -0
  135. ase_python-0.1.0/validation/case_studies/langgraph_wrong_record/scenario.bad.yaml +39 -0
  136. ase_python-0.1.0/validation/case_studies/langgraph_wrong_record/scenario.fixed.yaml +40 -0
  137. ase_python-0.1.0/validation/case_studies/openai_prompt_regression/ase_agent.py +113 -0
  138. ase_python-0.1.0/validation/case_studies/openai_prompt_regression/scenario.bad.yaml +37 -0
  139. ase_python-0.1.0/validation/case_studies/openai_prompt_regression/scenario.fixed.yaml +37 -0
  140. ase_python-0.1.0/validation/case_studies/pydantic_missing_approval/ase_agent.py +101 -0
  141. ase_python-0.1.0/validation/case_studies/pydantic_missing_approval/scenario.bad.yaml +36 -0
  142. ase_python-0.1.0/validation/case_studies/pydantic_missing_approval/scenario.fixed.yaml +36 -0
  143. ase_python-0.1.0/validation/upstream/README.md +21 -0
  144. ase_python-0.1.0/validation/upstream/langgraph-python/ase-manifest.yaml +21 -0
  145. ase_python-0.1.0/validation/upstream/langgraph-python/ase-scenario.yaml +38 -0
  146. ase_python-0.1.0/validation/upstream/langgraph-python/ase_agent.py +120 -0
  147. ase_python-0.1.0/validation/upstream/openai-agents-js/ase-manifest.yaml +18 -0
  148. ase_python-0.1.0/validation/upstream/openai-agents-js/ase-scenario.yaml +36 -0
  149. ase_python-0.1.0/validation/upstream/openai-agents-js/ase_agent.ts +184 -0
  150. ase_python-0.1.0/validation/upstream/openai-agents-python/ase-manifest.yaml +20 -0
  151. ase_python-0.1.0/validation/upstream/openai-agents-python/ase-scenario.yaml +36 -0
  152. ase_python-0.1.0/validation/upstream/openai-agents-python/ase_agent.py +107 -0
  153. ase_python-0.1.0/validation/upstream/pydantic-ai-python/ase-manifest.yaml +20 -0
  154. ase_python-0.1.0/validation/upstream/pydantic-ai-python/ase-scenario.yaml +36 -0
  155. ase_python-0.1.0/validation/upstream/pydantic-ai-python/ase_agent.py +101 -0
@@ -0,0 +1,27 @@
1
+ name: Bug report
2
+ description: Report a reproducible defect in ASE.
3
+ title: "[Bug]: "
4
+ labels: ["bug"]
5
+ body:
6
+ - type: textarea
7
+ id: summary
8
+ attributes:
9
+ label: Summary
10
+ description: What is failing, and what did you expect instead?
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: reproduction
15
+ attributes:
16
+ label: Reproduction
17
+ description: Exact commands, scenario files, and environment details.
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: environment
22
+ attributes:
23
+ label: Environment
24
+ description: Python version, OS, ASE install mode, and any framework versions involved.
25
+ validations:
26
+ required: true
27
+
@@ -0,0 +1 @@
1
+ blank_issues_enabled: false
@@ -0,0 +1,25 @@
1
+ name: Feature request
2
+ description: Propose a new capability or workflow for ASE.
3
+ title: "[Feature]: "
4
+ labels: ["enhancement"]
5
+ body:
6
+ - type: textarea
7
+ id: problem
8
+ attributes:
9
+ label: Problem
10
+ description: What user or developer problem does this solve?
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: proposal
15
+ attributes:
16
+ label: Proposal
17
+ description: Describe the desired behavior and any constraints.
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: alternatives
22
+ attributes:
23
+ label: Alternatives
24
+ description: What workarounds or competing approaches have you considered?
25
+
@@ -0,0 +1,16 @@
1
+ ## Summary
2
+
3
+ Describe the change and the user-visible outcome.
4
+
5
+ ## Validation
6
+
7
+ - [ ] tests added or updated
8
+ - [ ] `ruff check` passed
9
+ - [ ] targeted `pytest` passed
10
+ - [ ] targeted `mypy --strict` passed where applicable
11
+
12
+ ## Neutrality Check
13
+
14
+ - [ ] no framework-specific semantics were added to ASE core
15
+ - [ ] framework-specific logic stays in adapters, harnesses, or conformance assets
16
+
@@ -0,0 +1,126 @@
1
+ name: certify
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ env:
8
+ PIP_CONSTRAINT: constraints/py311.txt
9
+
10
+ jobs:
11
+ certify:
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ manifest:
16
+ - conformance/launch/openai-agents-python/manifest.yaml
17
+ - conformance/launch/langgraph-python/manifest.yaml
18
+ - conformance/launch/pydantic-ai-python/manifest.yaml
19
+ - conformance/launch/openai-agents-typescript/manifest.yaml
20
+ - conformance/bundles/core/openai-agents-python/manifest.yaml
21
+ - conformance/bundles/stateful/pydantic-ai-python/manifest.yaml
22
+ - conformance/bundles/multi_agent/langgraph-python/manifest.yaml
23
+ - conformance/bundles/realtime/openai-agents-typescript/manifest.yaml
24
+ - conformance/bundles/mcp/mcp-python/manifest.yaml
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - uses: actions/setup-python@v5
28
+ with:
29
+ python-version: "3.11"
30
+ - name: Install ASE
31
+ run: |
32
+ python -m pip install --upgrade pip
33
+ pip install -e ".[dev]"
34
+ - name: Certify launch bundle
35
+ run: |
36
+ ase certify "${{ matrix.manifest }}" --out-file "$(basename "${{ matrix.manifest }}").cert.json"
37
+ - name: Upload certification artifacts
38
+ uses: actions/upload-artifact@v4
39
+ with:
40
+ name: certification-bundles-${{ strategy.job-index }}
41
+ path: "*.cert.json"
42
+
43
+ official-adapters-python:
44
+ runs-on: ubuntu-latest
45
+ strategy:
46
+ matrix:
47
+ framework:
48
+ - openai-agents-python
49
+ - langgraph-python
50
+ - pydantic-ai-python
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+ - uses: actions/setup-python@v5
54
+ with:
55
+ python-version: "3.12"
56
+ - name: Install ASE
57
+ run: |
58
+ python -m pip install --upgrade pip
59
+ pip install -e ".[dev]"
60
+ - name: Bootstrap upstream Python framework
61
+ run: |
62
+ python scripts/bootstrap_upstream_validations.py --framework "${{ matrix.framework }}"
63
+ - name: Run and certify upstream Python adapter
64
+ run: |
65
+ ase test "validation/upstream/${{ matrix.framework }}/ase-scenario.yaml"
66
+ ase certify "validation/upstream/${{ matrix.framework }}/ase-manifest.yaml" --out-file "${{ matrix.framework }}.official.cert.json"
67
+ - name: Upload Python adapter certifications
68
+ uses: actions/upload-artifact@v4
69
+ with:
70
+ name: certification-official-python-${{ matrix.framework }}
71
+ path: "*.official.cert.json"
72
+
73
+ official-adapters-mixed:
74
+ runs-on: ubuntu-latest
75
+ steps:
76
+ - uses: actions/checkout@v4
77
+ - uses: actions/setup-python@v5
78
+ with:
79
+ python-version: "3.11"
80
+ - uses: actions/setup-node@v4
81
+ with:
82
+ node-version: "22"
83
+ - name: Install ASE
84
+ run: |
85
+ python -m pip install --upgrade pip
86
+ pip install -e ".[dev]"
87
+ - name: Bootstrap upstream TypeScript framework
88
+ run: |
89
+ python scripts/bootstrap_upstream_validations.py --framework openai-agents-js
90
+ - name: Run and certify the upstream TypeScript adapter
91
+ run: |
92
+ ase test validation/upstream/openai-agents-js/ase-scenario.yaml
93
+ ase certify validation/upstream/openai-agents-js/ase-manifest.yaml --out-file openai-agents-js.official.cert.json
94
+ - name: Upload TypeScript adapter certification
95
+ uses: actions/upload-artifact@v4
96
+ with:
97
+ name: certification-official-typescript
98
+ path: "*.official.cert.json"
99
+
100
+ compatibility-matrix:
101
+ needs:
102
+ - certify
103
+ - official-adapters-python
104
+ - official-adapters-mixed
105
+ runs-on: ubuntu-latest
106
+ steps:
107
+ - uses: actions/checkout@v4
108
+ - uses: actions/setup-python@v5
109
+ with:
110
+ python-version: "3.11"
111
+ - name: Install ASE
112
+ run: |
113
+ python -m pip install --upgrade pip
114
+ pip install -e ".[dev]"
115
+ - name: Download certification artifacts
116
+ uses: actions/download-artifact@v4
117
+ with:
118
+ path: certification-artifacts
119
+ - name: Generate compatibility matrix
120
+ run: |
121
+ python scripts/generate_compatibility_matrix.py docs/compatibility-matrix.generated.md certification-artifacts
122
+ - name: Upload compatibility matrix
123
+ uses: actions/upload-artifact@v4
124
+ with:
125
+ name: compatibility-matrix
126
+ path: docs/compatibility-matrix.generated.md
@@ -0,0 +1,48 @@
1
+ name: publish-pypi
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ tags:
7
+ - "v*"
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ contents: read
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.11"
19
+ - name: Build distributions
20
+ run: |
21
+ python -m pip install --upgrade pip
22
+ python -m pip install build twine
23
+ python -m build
24
+ python -m twine check dist/*
25
+ - name: Upload distributions
26
+ uses: actions/upload-artifact@v4
27
+ with:
28
+ name: pypi-dist
29
+ path: dist/*
30
+
31
+ publish:
32
+ needs: build
33
+ runs-on: ubuntu-latest
34
+ if: startsWith(github.ref, 'refs/tags/v')
35
+ environment:
36
+ name: pypi
37
+ url: https://pypi.org/project/ase-python/
38
+ permissions:
39
+ id-token: write
40
+ contents: read
41
+ steps:
42
+ - name: Download distributions
43
+ uses: actions/download-artifact@v4
44
+ with:
45
+ name: pypi-dist
46
+ path: dist
47
+ - name: Publish to PyPI
48
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,20 @@
1
+ .venv/
2
+ .venv311/
3
+ .venv312/
4
+ .mypy_cache/
5
+ .pytest_cache/
6
+ .ruff_cache/
7
+ .idea/
8
+ .ase-recovery/
9
+ .ase-recovery-next/
10
+ .upstream/
11
+ external/
12
+ build/
13
+ dist/
14
+ docs/compatibility-matrix.generated.md
15
+ validation/upstream/**/events.generated.jsonl
16
+ validation/case_studies/**/events.bad.jsonl
17
+ validation/case_studies/**/events.fixed.jsonl
18
+ examples/**/events.generated.jsonl
19
+ validation/upstream/**/__pycache__/
20
+ *.pyc
@@ -0,0 +1,72 @@
1
+ stages:
2
+ - certify
3
+ - matrix
4
+ - examples
5
+
6
+ variables:
7
+ PIP_CONSTRAINT: constraints/py311.txt
8
+
9
+ certify_launch_bundles:
10
+ image: python:3.11
11
+ stage: certify
12
+ script:
13
+ - pip install -e ".[dev]"
14
+ - ase certify conformance/launch/openai-agents-python/manifest.yaml --out-file openai-agents-python.cert.json
15
+ - ase certify conformance/launch/langgraph-python/manifest.yaml --out-file langgraph-python.cert.json
16
+ - ase certify conformance/launch/pydantic-ai-python/manifest.yaml --out-file pydantic-ai-python.cert.json
17
+ - ase certify conformance/launch/openai-agents-typescript/manifest.yaml --out-file openai-agents-typescript.cert.json
18
+ - ase certify conformance/bundles/core/openai-agents-python/manifest.yaml --out-file core-openai-agents-python.cert.json
19
+ - ase certify conformance/bundles/stateful/pydantic-ai-python/manifest.yaml --out-file stateful-pydantic-ai-python.cert.json
20
+ - ase certify conformance/bundles/multi_agent/langgraph-python/manifest.yaml --out-file multi-agent-langgraph-python.cert.json
21
+ - ase certify conformance/bundles/realtime/openai-agents-typescript/manifest.yaml --out-file realtime-openai-agents-typescript.cert.json
22
+ - ase certify conformance/bundles/mcp/mcp-python/manifest.yaml --out-file mcp-python.cert.json
23
+ artifacts:
24
+ when: always
25
+ paths:
26
+ - "*.cert.json"
27
+
28
+ official_adapters_python:
29
+ image: python:3.12
30
+ stage: examples
31
+ parallel:
32
+ matrix:
33
+ - FRAMEWORK: ["openai-agents-python", "langgraph-python", "pydantic-ai-python"]
34
+ script:
35
+ - pip install -e ".[dev]"
36
+ - python scripts/bootstrap_upstream_validations.py --framework "$FRAMEWORK"
37
+ - ase test "validation/upstream/$FRAMEWORK/ase-scenario.yaml"
38
+ - ase certify "validation/upstream/$FRAMEWORK/ase-manifest.yaml" --out-file "$FRAMEWORK.official.cert.json"
39
+ artifacts:
40
+ when: always
41
+ paths:
42
+ - "*.official.cert.json"
43
+
44
+ official_adapters_typescript:
45
+ image: node:22-bookworm
46
+ stage: examples
47
+ before_script:
48
+ - apt-get update && apt-get install -y python3.11 python3-pip
49
+ script:
50
+ - python3.11 -m pip install -e ".[dev]"
51
+ - python3.11 scripts/bootstrap_upstream_validations.py --framework openai-agents-js
52
+ - ase test validation/upstream/openai-agents-js/ase-scenario.yaml
53
+ - ase certify validation/upstream/openai-agents-js/ase-manifest.yaml --out-file openai-agents-js.official.cert.json
54
+ artifacts:
55
+ when: always
56
+ paths:
57
+ - "*.official.cert.json"
58
+
59
+ compatibility_matrix:
60
+ image: python:3.11
61
+ stage: matrix
62
+ needs:
63
+ - certify_launch_bundles
64
+ - official_adapters_python
65
+ - official_adapters_typescript
66
+ script:
67
+ - pip install -e ".[dev]"
68
+ - python scripts/generate_compatibility_matrix.py docs/compatibility-matrix.generated.md *.cert.json
69
+ artifacts:
70
+ when: always
71
+ paths:
72
+ - docs/compatibility-matrix.generated.md
@@ -0,0 +1,44 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We want ASE to be an open, respectful, developer-first project. Contributors,
6
+ maintainers, and users are expected to engage with empathy, clarity, and
7
+ professionalism.
8
+
9
+ ## Our Standards
10
+
11
+ Examples of behavior that contribute to a positive environment:
12
+
13
+ - giving actionable, respectful technical feedback
14
+ - assuming good intent while being direct about problems
15
+ - keeping reviews focused on the code and product behavior
16
+ - welcoming questions from new contributors
17
+
18
+ Examples of unacceptable behavior:
19
+
20
+ - harassment, discrimination, or personal attacks
21
+ - hostile or mocking communication
22
+ - publishing others' private information without permission
23
+ - disruptive behavior that makes collaboration unsafe or unproductive
24
+
25
+ ## Enforcement
26
+
27
+ Maintainers are responsible for clarifying and enforcing this policy. They may
28
+ remove, edit, or reject contributions or comments that violate it.
29
+
30
+ ## Reporting
31
+
32
+ Report conduct issues privately to the project maintainers through the
33
+ repository's private maintainer contact path. Do not open public issues for
34
+ personal safety concerns.
35
+
36
+ ## Scope
37
+
38
+ This Code of Conduct applies in project spaces and in public spaces when an
39
+ individual is representing ASE or the ASE community.
40
+
41
+ ## Attribution
42
+
43
+ This policy is adapted from the Contributor Covenant, version 2.1.
44
+
@@ -0,0 +1,18 @@
1
+ # Contributing
2
+
3
+ ASE's core must remain framework-neutral.
4
+
5
+ Before adding code:
6
+
7
+ 1. Ask whether the change generalizes across at least two frameworks or execution modes.
8
+ 2. If not, put it in an adapter, example harness, or conformance bundle instead of `src/ase` core.
9
+ 3. Keep the adapter event protocol and append-only trace schema as the compatibility boundary.
10
+
11
+ Contribution rules:
12
+
13
+ - no framework-specific runtime imports in ASE core
14
+ - no framework-specific fields in the core trace schema unless they generalize
15
+ - keep upstream runtime harnesses in `validation/upstream/`, not core
16
+ - no docs examples that have not been exercised in CI
17
+ - no compatibility-matrix edits by hand; generate it from certification artifacts only
18
+ - fetch third-party upstream repos into `.upstream/` instead of vendoring them
@@ -0,0 +1,105 @@
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, and
10
+ distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by the copyright
13
+ owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all other entities
16
+ that control, are controlled by, or are under common control with that entity.
17
+ For the purposes of this definition, "control" means (i) the power, direct or
18
+ indirect, to cause the direction or management of such entity, whether by
19
+ contract or 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 exercising
23
+ permissions granted by this License.
24
+
25
+ "Source" form shall mean the preferred form for making modifications, including
26
+ but not limited to software source code, documentation source, and configuration
27
+ files.
28
+
29
+ "Object" form shall mean any form resulting from mechanical transformation or
30
+ translation of a Source form, including but not limited to compiled object code,
31
+ generated documentation, and conversions to other media types.
32
+
33
+ "Work" shall mean the work of authorship, whether in Source or Object form, made
34
+ available under the License, as indicated by a copyright notice that is included
35
+ in or attached to the work.
36
+
37
+ "Derivative Works" shall mean any work, whether in Source or Object form, that
38
+ is based on (or derived from) the Work and for which the editorial revisions,
39
+ annotations, elaborations, or other modifications represent, as a whole, an
40
+ original work of authorship. For the purposes of this License, Derivative Works
41
+ shall not include works that remain separable from, or merely link (or bind by
42
+ name) to the interfaces of, the Work and Derivative Works thereof.
43
+
44
+ "Contribution" shall mean any work of authorship, including the original version
45
+ of the Work and any modifications or additions to that Work or Derivative Works
46
+ thereof, that is intentionally submitted to Licensor for inclusion in the Work
47
+ by the copyright owner or by an individual or Legal Entity authorized to submit
48
+ on behalf of the copyright owner.
49
+
50
+ "Contributor" shall mean Licensor and any individual or Legal Entity on behalf
51
+ of whom a Contribution has been received by Licensor and subsequently
52
+ incorporated within the Work.
53
+
54
+ 2. Grant of Copyright License. Subject to the terms and conditions of this
55
+ License, each Contributor hereby grants to You a perpetual, worldwide,
56
+ non-exclusive, no-charge, royalty-free, irrevocable copyright license to
57
+ reproduce, prepare Derivative Works of, publicly display, publicly perform,
58
+ sublicense, and distribute the Work and such Derivative Works in Source or
59
+ Object form.
60
+
61
+ 3. Grant of Patent License. Subject to the terms and conditions of this License,
62
+ each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
63
+ no-charge, royalty-free, irrevocable patent license to make, have made, use,
64
+ offer to sell, sell, import, and otherwise transfer the Work.
65
+
66
+ 4. Redistribution. You may reproduce and distribute copies of the Work or
67
+ Derivative Works thereof in any medium, with or without modifications, and in
68
+ Source or Object form, provided that You meet the following conditions:
69
+
70
+ (a) You must give any other recipients of the Work or Derivative Works a copy of
71
+ this License; and
72
+
73
+ (b) You must cause any modified files to carry prominent notices stating that You
74
+ changed the files; and
75
+
76
+ (c) You must retain, in the Source form of any Derivative Works that You
77
+ distribute, all copyright, patent, trademark, and attribution notices from the
78
+ Source form of the Work; and
79
+
80
+ (d) If the Work includes a "NOTICE" text file as part of its distribution, then
81
+ any Derivative Works that You distribute must include a readable copy of the
82
+ attribution notices contained within such NOTICE file.
83
+
84
+ 5. Submission of Contributions. Unless You explicitly state otherwise, any
85
+ Contribution intentionally submitted for inclusion in the Work by You to the
86
+ Licensor shall be under the terms and conditions of this License.
87
+
88
+ 6. Trademarks. This License does not grant permission to use the trade names,
89
+ trademarks, service marks, or product names of the Licensor, except as required
90
+ for reasonable and customary use in describing the origin of the Work.
91
+
92
+ 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
93
+ writing, Licensor provides the Work on an "AS IS" BASIS, WITHOUT WARRANTIES OR
94
+ CONDITIONS OF ANY KIND.
95
+
96
+ 8. Limitation of Liability. In no event and under no legal theory shall any
97
+ Contributor be liable to You for damages arising in any way out of the use or
98
+ inability to use the Work.
99
+
100
+ 9. Accepting Warranty or Additional Liability. While redistributing the Work or
101
+ Derivative Works thereof, You may choose to offer, and charge a fee for,
102
+ acceptance of support, warranty, indemnity, or other liability obligations.
103
+
104
+ END OF TERMS AND CONDITIONS
105
+