autoweave 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 (129) hide show
  1. autoweave-0.1.0/.dockerignore +10 -0
  2. autoweave-0.1.0/.editorconfig +22 -0
  3. autoweave-0.1.0/.env.example +52 -0
  4. autoweave-0.1.0/.github/CODEOWNERS +10 -0
  5. autoweave-0.1.0/.github/FUNDING.yml +3 -0
  6. autoweave-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +58 -0
  7. autoweave-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  8. autoweave-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +38 -0
  9. autoweave-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  10. autoweave-0.1.0/.github/dependabot.yml +24 -0
  11. autoweave-0.1.0/.github/workflows/ci.yml +122 -0
  12. autoweave-0.1.0/.github/workflows/release.yml +44 -0
  13. autoweave-0.1.0/.github/workflows/security.yml +58 -0
  14. autoweave-0.1.0/.gitignore +57 -0
  15. autoweave-0.1.0/.pre-commit-config.yaml +24 -0
  16. autoweave-0.1.0/.python-version +1 -0
  17. autoweave-0.1.0/CODE_OF_CONDUCT.md +131 -0
  18. autoweave-0.1.0/CONTRIBUTING.md +268 -0
  19. autoweave-0.1.0/DEVELOPMENT.md +299 -0
  20. autoweave-0.1.0/Dockerfile +23 -0
  21. autoweave-0.1.0/LICENSE +21 -0
  22. autoweave-0.1.0/Makefile +44 -0
  23. autoweave-0.1.0/PKG-INFO +365 -0
  24. autoweave-0.1.0/README.md +321 -0
  25. autoweave-0.1.0/SECURITY.md +45 -0
  26. autoweave-0.1.0/TESTING.md +101 -0
  27. autoweave-0.1.0/apps/__init__.py +1 -0
  28. autoweave-0.1.0/apps/cli/__init__.py +1 -0
  29. autoweave-0.1.0/apps/cli/bootstrap.py +140 -0
  30. autoweave-0.1.0/apps/cli/main.py +558 -0
  31. autoweave-0.1.0/apps/cli/validation.py +144 -0
  32. autoweave-0.1.0/autoweave/__init__.py +16 -0
  33. autoweave-0.1.0/autoweave/approvals/__init__.py +5 -0
  34. autoweave-0.1.0/autoweave/approvals/service.py +59 -0
  35. autoweave-0.1.0/autoweave/artifacts/__init__.py +15 -0
  36. autoweave-0.1.0/autoweave/artifacts/filesystem.py +130 -0
  37. autoweave-0.1.0/autoweave/artifacts/handles.py +22 -0
  38. autoweave-0.1.0/autoweave/artifacts/registry.py +174 -0
  39. autoweave-0.1.0/autoweave/celery_app.py +7 -0
  40. autoweave-0.1.0/autoweave/celery_queue.py +445 -0
  41. autoweave-0.1.0/autoweave/celery_tasks.py +83 -0
  42. autoweave-0.1.0/autoweave/compiler/__init__.py +11 -0
  43. autoweave-0.1.0/autoweave/compiler/loader.py +61 -0
  44. autoweave-0.1.0/autoweave/compiler/openhands.py +80 -0
  45. autoweave-0.1.0/autoweave/config_models.py +116 -0
  46. autoweave-0.1.0/autoweave/context/__init__.py +5 -0
  47. autoweave-0.1.0/autoweave/context/service.py +119 -0
  48. autoweave-0.1.0/autoweave/events/__init__.py +21 -0
  49. autoweave-0.1.0/autoweave/events/local.py +75 -0
  50. autoweave-0.1.0/autoweave/events/redaction.py +52 -0
  51. autoweave-0.1.0/autoweave/events/schema.py +133 -0
  52. autoweave-0.1.0/autoweave/events/service.py +113 -0
  53. autoweave-0.1.0/autoweave/events/stream.py +94 -0
  54. autoweave-0.1.0/autoweave/exceptions.py +86 -0
  55. autoweave-0.1.0/autoweave/graph/__init__.py +30 -0
  56. autoweave-0.1.0/autoweave/graph/neo4j_backend.py +147 -0
  57. autoweave-0.1.0/autoweave/graph/neo4j_projection.py +212 -0
  58. autoweave-0.1.0/autoweave/graph/projection.py +183 -0
  59. autoweave-0.1.0/autoweave/local_runtime.py +2926 -0
  60. autoweave-0.1.0/autoweave/memory/__init__.py +5 -0
  61. autoweave-0.1.0/autoweave/memory/store.py +81 -0
  62. autoweave-0.1.0/autoweave/models.py +426 -0
  63. autoweave-0.1.0/autoweave/monitoring/__init__.py +20 -0
  64. autoweave-0.1.0/autoweave/monitoring/contracts.py +123 -0
  65. autoweave-0.1.0/autoweave/monitoring/dashboard_page.py +3863 -0
  66. autoweave-0.1.0/autoweave/monitoring/service.py +1339 -0
  67. autoweave-0.1.0/autoweave/monitoring/web.py +145 -0
  68. autoweave-0.1.0/autoweave/observability/__init__.py +30 -0
  69. autoweave-0.1.0/autoweave/observability/debug.py +34 -0
  70. autoweave-0.1.0/autoweave/observability/local.py +176 -0
  71. autoweave-0.1.0/autoweave/observability/metrics.py +50 -0
  72. autoweave-0.1.0/autoweave/observability/service.py +61 -0
  73. autoweave-0.1.0/autoweave/observability/tracing.py +54 -0
  74. autoweave-0.1.0/autoweave/orchestration/__init__.py +7 -0
  75. autoweave-0.1.0/autoweave/orchestration/graph.py +55 -0
  76. autoweave-0.1.0/autoweave/orchestration/scheduler.py +55 -0
  77. autoweave-0.1.0/autoweave/orchestration/service.py +165 -0
  78. autoweave-0.1.0/autoweave/orchestration/state.py +517 -0
  79. autoweave-0.1.0/autoweave/project.py +17 -0
  80. autoweave-0.1.0/autoweave/protocols.py +156 -0
  81. autoweave-0.1.0/autoweave/routing/__init__.py +5 -0
  82. autoweave-0.1.0/autoweave/routing/policy.py +165 -0
  83. autoweave-0.1.0/autoweave/settings.py +430 -0
  84. autoweave-0.1.0/autoweave/storage/__init__.py +64 -0
  85. autoweave-0.1.0/autoweave/storage/coordination.py +336 -0
  86. autoweave-0.1.0/autoweave/storage/durable.py +816 -0
  87. autoweave-0.1.0/autoweave/storage/postgres.py +1030 -0
  88. autoweave-0.1.0/autoweave/storage/repositories.py +295 -0
  89. autoweave-0.1.0/autoweave/storage/tasks.py +32 -0
  90. autoweave-0.1.0/autoweave/storage/wiring.py +151 -0
  91. autoweave-0.1.0/autoweave/templates/__init__.py +1 -0
  92. autoweave-0.1.0/autoweave/templates/sample_project.py +503 -0
  93. autoweave-0.1.0/autoweave/types.py +18 -0
  94. autoweave-0.1.0/autoweave/workers/__init__.py +27 -0
  95. autoweave-0.1.0/autoweave/workers/runtime.py +900 -0
  96. autoweave-0.1.0/autoweave/workflows/__init__.py +19 -0
  97. autoweave-0.1.0/autoweave/workflows/spec.py +323 -0
  98. autoweave-0.1.0/build_backend.py +206 -0
  99. autoweave-0.1.0/docker-compose.yml +142 -0
  100. autoweave-0.1.0/docs/ARCHITECTURE.md +128 -0
  101. autoweave-0.1.0/docs/DEPLOYMENT.md +50 -0
  102. autoweave-0.1.0/docs/RELEASE.md +49 -0
  103. autoweave-0.1.0/docs/autoweave_diagrams_source.md +247 -0
  104. autoweave-0.1.0/docs/autoweave_high_level_architecture.md +688 -0
  105. autoweave-0.1.0/docs/autoweave_implementation_spec.md +1149 -0
  106. autoweave-0.1.0/docs/commit_push_guidelines.md +98 -0
  107. autoweave-0.1.0/pyproject.toml +162 -0
  108. autoweave-0.1.0/scripts/health_report.py +126 -0
  109. autoweave-0.1.0/scripts/smoke_test.sh +40 -0
  110. autoweave-0.1.0/tests/conftest.py +25 -0
  111. autoweave-0.1.0/tests/test_celery_queue.py +255 -0
  112. autoweave-0.1.0/tests/test_cli.py +427 -0
  113. autoweave-0.1.0/tests/test_infra.py +98 -0
  114. autoweave-0.1.0/tests/test_local_observability.py +99 -0
  115. autoweave-0.1.0/tests/test_local_runtime.py +2026 -0
  116. autoweave-0.1.0/tests/test_monitoring.py +741 -0
  117. autoweave-0.1.0/tests/test_observability.py +109 -0
  118. autoweave-0.1.0/tests/test_orchestration.py +279 -0
  119. autoweave-0.1.0/tests/test_packaging.py +204 -0
  120. autoweave-0.1.0/tests/test_public_package.py +21 -0
  121. autoweave-0.1.0/tests/test_runtime.py +501 -0
  122. autoweave-0.1.0/tests/test_settings.py +225 -0
  123. autoweave-0.1.0/tests/test_shared_contracts.py +69 -0
  124. autoweave-0.1.0/tests/test_storage_context.py +431 -0
  125. autoweave-0.1.0/tests/test_storage_durable.py +609 -0
  126. autoweave-0.1.0/tests/test_storage_service_wiring.py +341 -0
  127. autoweave-0.1.0/tests/test_templates.py +31 -0
  128. autoweave-0.1.0/tests/test_ui.py +69 -0
  129. autoweave-0.1.0/uv.lock +1938 -0
@@ -0,0 +1,10 @@
1
+ .env
2
+ .env.local
3
+ .pytest_cache/
4
+ __pycache__/
5
+ *.pyc
6
+ var/
7
+ workspaces/
8
+ config/secrets/
9
+ ergon-*.json
10
+ README.md
@@ -0,0 +1,22 @@
1
+ # https://editorconfig.org
2
+ root = true
3
+
4
+ [*]
5
+ indent_style = space
6
+ indent_size = 4
7
+ end_of_line = lf
8
+ charset = utf-8
9
+ trim_trailing_whitespace = true
10
+ insert_final_newline = true
11
+
12
+ [*.{yml,yaml}]
13
+ indent_size = 2
14
+
15
+ [*.{json,toml}]
16
+ indent_size = 2
17
+
18
+ [*.md]
19
+ trim_trailing_whitespace = false
20
+
21
+ [Makefile]
22
+ indent_style = tab
@@ -0,0 +1,52 @@
1
+ # Copy values that are safe for local development into `.env.local`.
2
+ # Keep secrets and service-account files out of git.
3
+ # `docker compose up -d` reads `.env.local` for the OpenHands service via `docker-compose.yml`.
4
+
5
+ # Vertex AI canonical runtime settings
6
+ VERTEXAI_PROJECT=
7
+ # Gemini 3 preview models are currently available on Vertex via the global endpoint.
8
+ VERTEXAI_LOCATION=global
9
+ VERTEXAI_SERVICE_ACCOUNT_FILE=./config/secrets/vertex_service_account.json
10
+
11
+ # Optional local compatibility alias if a worker process reads it directly.
12
+ # The runtime compiler should normally materialize this from VERTEXAI_SERVICE_ACCOUNT_FILE.
13
+ GOOGLE_APPLICATION_CREDENTIALS=./config/secrets/vertex_service_account.json
14
+
15
+ # Canonical storage and queue settings
16
+ POSTGRES_URL=
17
+ REDIS_URL=redis://127.0.0.1:6379/0
18
+ NEO4J_URL=
19
+ NEO4J_USERNAME=
20
+ NEO4J_PASSWORD=
21
+
22
+ # Artifact and observability backends
23
+ ARTIFACT_STORE_URL=file://./var/artifacts
24
+ OTEL_EXPORTER_OTLP_ENDPOINT=
25
+ AUTOWEAVE_METRICS_EXPORTER=
26
+
27
+ # OpenHands remote worker runtime
28
+ OPENHANDS_AGENT_SERVER_BASE_URL=http://127.0.0.1:8000
29
+ OPENHANDS_AGENT_SERVER_API_KEY=
30
+ OPENHANDS_WORKER_TIMEOUT_SECONDS=1800
31
+ # Leave this unset to derive a poll budget from OPENHANDS_WORKER_TIMEOUT_SECONDS.
32
+ AUTOWEAVE_OPENHANDS_POLL_TIMEOUT_SECONDS=
33
+ AUTOWEAVE_OPENHANDS_POLL_INTERVAL_SECONDS=1
34
+
35
+ # AutoWeave runtime defaults
36
+ AUTOWEAVE_DEFAULT_WORKFLOW=configs/workflows/team.workflow.yaml
37
+ AUTOWEAVE_RUNTIME_CONFIG=configs/runtime/runtime.yaml
38
+ AUTOWEAVE_STORAGE_CONFIG=configs/runtime/storage.yaml
39
+ AUTOWEAVE_VERTEX_CONFIG=configs/runtime/vertex.yaml
40
+ AUTOWEAVE_OBSERVABILITY_CONFIG=configs/runtime/observability.yaml
41
+ # Optional: force one named Vertex profile such as `fast`, `planner`, or `legacy_balanced`.
42
+ AUTOWEAVE_VERTEX_PROFILE_OVERRIDE=
43
+ AUTOWEAVE_CANONICAL_BACKEND=postgres
44
+ AUTOWEAVE_GRAPH_BACKEND=neo4j
45
+ AUTOWEAVE_AUTONOMY_LEVEL=medium
46
+ AUTOWEAVE_POSTGRES_SCHEMA=autoweave
47
+ AUTOWEAVE_STATE_DIR=var/state
48
+
49
+ # Optional local queue/runtime tuning
50
+ AUTOWEAVE_MAX_ACTIVE_ATTEMPTS=8
51
+ AUTOWEAVE_HEARTBEAT_INTERVAL_SECONDS=15
52
+ AUTOWEAVE_LEASE_TTL_SECONDS=60
@@ -0,0 +1,10 @@
1
+ # AutoWeave Code Owners
2
+
3
+ # Default owner for everything
4
+ * @hypnoastic
5
+
6
+ # Specific subsystems (examples, can be expanded as team grows)
7
+ /autoweave/orchestration/ @hypnoastic
8
+ /autoweave/storage/ @hypnoastic
9
+ /autoweave/monitoring/ @hypnoastic
10
+ /docs/ @hypnoastic
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: [hypnoastic]
@@ -0,0 +1,58 @@
1
+ name: Bug Report
2
+ description: Create a report to help us improve
3
+ title: "[Bug]: "
4
+ labels: ["bug"]
5
+ assignees: []
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for taking the time to fill out this bug report!
11
+ - type: input
12
+ id: version
13
+ attributes:
14
+ label: AutoWeave Version
15
+ description: What version of the AutoWeave Library are you using?
16
+ placeholder: e.g. 0.1.0 or main branch commit
17
+ validations:
18
+ required: true
19
+ - type: input
20
+ id: environment
21
+ attributes:
22
+ label: Environment
23
+ description: OS, Python version, Docker version, etc.
24
+ placeholder: e.g. macOS 14.5, Python 3.11, Docker 24.0.5
25
+ validations:
26
+ required: true
27
+ - type: textarea
28
+ id: description
29
+ attributes:
30
+ label: Describe the bug
31
+ description: A clear and concise description of what the bug is.
32
+ validations:
33
+ required: true
34
+ - type: textarea
35
+ id: reproduction
36
+ attributes:
37
+ label: Steps To Reproduce
38
+ description: Steps to reproduce the behavior.
39
+ placeholder: |
40
+ 1. Run 'autoweave run-workflow...'
41
+ 2. Provide input 'X'
42
+ 3. See error 'Y'
43
+ validations:
44
+ required: true
45
+ - type: textarea
46
+ id: expected
47
+ attributes:
48
+ label: Expected behavior
49
+ description: A clear and concise description of what you expected to happen.
50
+ validations:
51
+ required: true
52
+ - type: textarea
53
+ id: logs
54
+ attributes:
55
+ label: Logs or Output
56
+ description: Paste any relevant logs, tracebacks, or output. Use code blocks (```) for formatting.
57
+ validations:
58
+ required: false
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: AutoWeave Discussions
4
+ url: https://github.com/hypnoastic/Autoweave/discussions
5
+ about: Ask questions, share ideas, and engage with the community.
@@ -0,0 +1,38 @@
1
+ name: Feature Request
2
+ description: Suggest an idea for this project
3
+ title: "[Feature]: "
4
+ labels: ["enhancement"]
5
+ assignees: []
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for suggesting a new feature! Please provide as much context as possible.
11
+ - type: textarea
12
+ id: problem
13
+ attributes:
14
+ label: Is your feature request related to a problem? Please describe.
15
+ description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: solution
20
+ attributes:
21
+ label: Describe the solution you'd like
22
+ description: A clear and concise description of what you want to happen.
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ id: alternatives
27
+ attributes:
28
+ label: Describe alternatives you've considered
29
+ description: A clear and concise description of any alternative solutions or features you've considered.
30
+ validations:
31
+ required: false
32
+ - type: textarea
33
+ id: additional_context
34
+ attributes:
35
+ label: Additional context
36
+ description: Add any other context or screenshots about the feature request here.
37
+ validations:
38
+ required: false
@@ -0,0 +1,28 @@
1
+ ## Description
2
+ <!-- Describe your changes in detail -->
3
+ <!-- Include motivation and context if it's a non-trivial change -->
4
+
5
+ ## Related Issue
6
+ <!-- If fixing a bug or implementing a feature, link the issue here (e.g., Fixes #123) -->
7
+
8
+ ## Type of Change
9
+ <!-- Check all that apply -->
10
+ - [ ] Bug fix (non-breaking change which fixes an issue)
11
+ - [ ] New feature (non-breaking change which adds functionality)
12
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
13
+ - [ ] Documentation update
14
+ - [ ] Refactoring / Tech Debt / Chore
15
+
16
+ ## Testing
17
+ <!-- Describe the tests you ran to verify your changes. -->
18
+ - [ ] Unit tests added/updated
19
+ - [ ] Integration tests added/updated
20
+ - [ ] UI tests added/updated (if applicable)
21
+ - [ ] Tested locally with a real workflow execution
22
+
23
+ ## Checklist
24
+ - [ ] My code follows the code style of this project (`make lint` passes).
25
+ - [ ] I have run mypy type checking (`make typecheck` passes).
26
+ - [ ] All new and existing tests pass (`make test` passes).
27
+ - [ ] I have added/updated documentation if necessary.
28
+ - [ ] My commit messages follow the [Conventional Commits](https://www.conventionalcommits.org/) format.
@@ -0,0 +1,24 @@
1
+ version: 2
2
+ updates:
3
+ # Maintain dependencies for pip (pyproject.toml)
4
+ - package-ecosystem: "pip"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ open-pull-requests-limit: 10
9
+ labels:
10
+ - "dependencies"
11
+ - "python"
12
+ ignore:
13
+ - dependency-name: "*"
14
+ update-types: ["version-update:semver-major"] # Ignore major updates automatically, review manually
15
+
16
+ # Maintain dependencies for GitHub Actions
17
+ - package-ecosystem: "github-actions"
18
+ directory: "/"
19
+ schedule:
20
+ interval: "weekly"
21
+ open-pull-requests-limit: 5
22
+ labels:
23
+ - "dependencies"
24
+ - "ci"
@@ -0,0 +1,122 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ pull_request:
7
+ branches: ["main"]
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ lint-format-typecheck:
16
+ name: Code Quality
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - name: Install uv
21
+ uses: astral-sh/setup-uv@v3
22
+ with:
23
+ enable-cache: true
24
+ - name: Set up Python
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version-file: ".python-version"
28
+ - name: Install dependencies
29
+ run: uv pip install --system -e ".[dev]"
30
+ - name: Lint & Format Check (Ruff)
31
+ run: make lint
32
+
33
+ test:
34
+ name: Test (Python ${{ matrix.python-version }})
35
+ runs-on: ubuntu-latest
36
+ strategy:
37
+ fail-fast: false
38
+ matrix:
39
+ python-version: ["3.10", "3.11", "3.12"]
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+ - name: Install uv
43
+ uses: astral-sh/setup-uv@v3
44
+ with:
45
+ enable-cache: true
46
+ - name: Set up Python
47
+ uses: actions/setup-python@v5
48
+ with:
49
+ python-version: ${{ matrix.python-version }}
50
+ - name: Install dependencies
51
+ run: uv pip install --system -e ".[dev]"
52
+ - name: Install Playwright browsers
53
+ run: uv run playwright install chromium
54
+ - name: Start Redis for Tests
55
+ uses: supercharge/redis-github-action@1.8.0
56
+ with:
57
+ redis-version: 6
58
+ - name: Run Tests & Check Coverage
59
+ run: make test:coverage
60
+ env:
61
+ REDIS_URL: "redis://localhost:6379/0"
62
+ - name: Upload Coverage Report
63
+ uses: actions/upload-artifact@v4
64
+ if: matrix.python-version == '3.10' # Only upload once
65
+ with:
66
+ name: coverage-report
67
+ path: .coverage
68
+ retention-days: 14
69
+ include-hidden-files: true
70
+
71
+ package:
72
+ name: Build & Smoke Test
73
+ runs-on: ubuntu-latest
74
+ needs: [lint-format-typecheck, test]
75
+ steps:
76
+ - uses: actions/checkout@v4
77
+ - name: Install uv
78
+ uses: astral-sh/setup-uv@v3
79
+ with:
80
+ enable-cache: true
81
+ - name: Set up Python
82
+ uses: actions/setup-python@v5
83
+ with:
84
+ python-version-file: ".python-version"
85
+ - name: Run Package Smoke Test
86
+ run: make pack:check
87
+ - name: Upload Wheel
88
+ uses: actions/upload-artifact@v4
89
+ with:
90
+ name: autoweave-wheel
91
+ path: dist/*.whl
92
+ retention-days: 14
93
+
94
+ health-report:
95
+ name: Project Health Report
96
+ runs-on: ubuntu-latest
97
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
98
+ needs: [test]
99
+ steps:
100
+ - uses: actions/checkout@v4
101
+ - name: Install uv
102
+ uses: astral-sh/setup-uv@v3
103
+ with:
104
+ enable-cache: true
105
+ - name: Set up Python
106
+ uses: actions/setup-python@v5
107
+ with:
108
+ python-version-file: ".python-version"
109
+ - name: Download Coverage Report
110
+ uses: actions/download-artifact@v4
111
+ with:
112
+ name: coverage-report
113
+ - name: Generate Health Report
114
+ run: |
115
+ uv pip install --system -e ".[dev]"
116
+ make health
117
+ - name: Upload Health Report
118
+ uses: actions/upload-artifact@v4
119
+ with:
120
+ name: project-health
121
+ path: reports/health_report.*
122
+ retention-days: 30
@@ -0,0 +1,44 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+
8
+ jobs:
9
+ build-and-publish:
10
+ runs-on: ubuntu-latest
11
+ environment: release
12
+ permissions:
13
+ id-token: write
14
+ contents: write # Needed for creating GitHub Releases
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - name: Install uv
18
+ uses: astral-sh/setup-uv@v3
19
+ with:
20
+ enable-cache: true
21
+ - name: Set up Python
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version-file: ".python-version"
25
+ - name: Build Package
26
+ run: |
27
+ uv run --with build python -m build
28
+ - name: Smoke Test
29
+ run: |
30
+ uv venv smoke-env
31
+ source smoke-env/bin/activate
32
+ pip install dist/*.whl
33
+ autoweave --help
34
+
35
+ - name: Publish to PyPI
36
+ uses: pypa/gh-action-pypi-publish@release/v1
37
+
38
+ - name: Create GitHub Release
39
+ uses: softprops/action-gh-release@v2
40
+ with:
41
+ generate_release_notes: true
42
+ files: |
43
+ dist/*.whl
44
+ dist/*.tar.gz
@@ -0,0 +1,58 @@
1
+ name: Security
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ pull_request:
7
+ branches: ["main"]
8
+ schedule:
9
+ - cron: "0 4 * * 1" # Run weekly on Monday
10
+
11
+ jobs:
12
+ codeql:
13
+ name: CodeQL Analysis
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ security-events: write
17
+ actions: read
18
+ contents: read
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - name: Initialize CodeQL
22
+ uses: github/codeql-action/init@v3
23
+ with:
24
+ languages: python
25
+ - name: Perform CodeQL Analysis
26
+ uses: github/codeql-action/analyze@v3
27
+
28
+ dependency-audit:
29
+ name: Dependency Audit (pip-audit)
30
+ runs-on: ubuntu-latest
31
+ permissions:
32
+ security-events: write
33
+ steps:
34
+ - uses: actions/checkout@v4
35
+ - name: Install uv
36
+ uses: astral-sh/setup-uv@v3
37
+ with:
38
+ enable-cache: true
39
+ - name: Set up Python
40
+ uses: actions/setup-python@v5
41
+ with:
42
+ python-version-file: ".python-version"
43
+ - name: Audit Dependencies
44
+ run: |
45
+ uv run --with pip-audit pip-audit --format json -o audit-results.json || true
46
+ uv run --with pip-audit pip-audit # Print human-readable output and fail if necessary
47
+
48
+ gitleaks:
49
+ name: Secret Scanning
50
+ runs-on: ubuntu-latest
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+ with:
54
+ fetch-depth: 0
55
+ - name: Run Gitleaks
56
+ uses: gitleaks/gitleaks-action@v2
57
+ env:
58
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,57 @@
1
+ # ----- Python -----
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ *.egg
7
+ dist/
8
+ build/
9
+ *.whl
10
+
11
+ # ----- Virtual environments -----
12
+ .venv/
13
+ venv/
14
+ env/
15
+
16
+ # ----- Testing -----
17
+ .pytest_cache/
18
+ .coverage
19
+ htmlcov/
20
+ coverage.xml
21
+ reports/
22
+
23
+ # ----- Type checking -----
24
+ .mypy_cache/
25
+ .dmypy.json
26
+ dmypy.json
27
+
28
+ # ----- IDE / Editor -----
29
+ .vscode/
30
+ .idea/
31
+ *.swp
32
+ *.swo
33
+ *~
34
+
35
+ # ----- OS -----
36
+ .DS_Store
37
+ Thumbs.db
38
+
39
+ # ----- AutoWeave specific -----
40
+ .env
41
+ .env.local
42
+ config/secrets/
43
+ var/
44
+ workspaces/
45
+ workspace/
46
+ my-weave-project/
47
+ tmp/
48
+ ergon-*.json
49
+ context.md
50
+ /agents/
51
+ /configs/
52
+
53
+ # ----- Stray build artifacts -----
54
+ *.jpeg
55
+ *.jpg
56
+ !docs/**/*.jpeg
57
+ !docs/**/*.jpg
@@ -0,0 +1,24 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.5.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-toml
9
+ - id: check-merge-conflict
10
+ - id: check-added-large-files
11
+
12
+ - repo: https://github.com/astral-sh/ruff-pre-commit
13
+ rev: v0.3.5
14
+ hooks:
15
+ - id: ruff
16
+ args: [ --fix ]
17
+ - id: ruff-format
18
+
19
+ - repo: https://github.com/Yelp/detect-secrets
20
+ rev: v1.4.0
21
+ hooks:
22
+ - id: detect-secrets
23
+ args: ['--baseline', '.secrets.baseline']
24
+ exclude: package.lock.json
@@ -0,0 +1 @@
1
+ 3.10