better-mem0-mcp 1.1.6__tar.gz → 1.2.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.
- better_mem0_mcp-1.2.0/.github/rulesets/development.json +47 -0
- better_mem0_mcp-1.2.0/.github/rulesets/production.json +68 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.github/workflows/cd.yml +107 -66
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.github/workflows/ci.yml +3 -27
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.mise.toml +2 -2
- better_mem0_mcp-1.2.0/.release-please-manifest.json +3 -0
- better_mem0_mcp-1.2.0/.vscode/better-mem0-mcp.code-workspace +23 -0
- better_mem0_mcp-1.2.0/CHANGELOG.md +233 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/PKG-INFO +17 -18
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/README.md +8 -9
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/pyproject.toml +14 -14
- better_mem0_mcp-1.2.0/release-please-config.json +66 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/src/better_mem0_mcp/config.py +14 -21
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/uv.lock +16 -517
- better_mem0_mcp-1.1.6/.github/scripts/merge-with-auto-resolve.sh +0 -85
- better_mem0_mcp-1.1.6/.releaserc.json +0 -38
- better_mem0_mcp-1.1.6/.vscode/better-mem0-mcp.code-workspace +0 -8
- better_mem0_mcp-1.1.6/CHANGELOG.md +0 -166
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.dockerignore +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.editorconfig +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.github/scripts/check-ci-cd-status.sh +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.gitignore +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.pre-commit-config.yaml +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/.python-version +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/CODE_OF_CONDUCT.md +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/CONTRIBUTING.md +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/Dockerfile +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/LICENSE +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/SECURITY.md +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/package-lock.json +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/package.json +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/scripts/clean-venv.mjs +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/src/better_mem0_mcp/__init__.py +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/src/better_mem0_mcp/__main__.py +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/src/better_mem0_mcp/docs/memory.md +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/src/better_mem0_mcp/graph.py +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/src/better_mem0_mcp/py.typed +0 -0
- {better_mem0_mcp-1.1.6 → better_mem0_mcp-1.2.0}/src/better_mem0_mcp/server.py +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Development Ruleset",
|
|
3
|
+
"target": "branch",
|
|
4
|
+
"source_type": "Repository",
|
|
5
|
+
"source": "n24q02m/better-mem0-mcp",
|
|
6
|
+
"enforcement": "active",
|
|
7
|
+
"conditions": {
|
|
8
|
+
"ref_name": {
|
|
9
|
+
"exclude": [],
|
|
10
|
+
"include": [
|
|
11
|
+
"refs/heads/dev"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"rules": [
|
|
16
|
+
{
|
|
17
|
+
"type": "deletion"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "non_fast_forward"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "required_linear_history"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "pull_request",
|
|
27
|
+
"parameters": {
|
|
28
|
+
"required_approving_review_count": 0,
|
|
29
|
+
"dismiss_stale_reviews_on_push": true,
|
|
30
|
+
"required_reviewers": [],
|
|
31
|
+
"require_code_owner_review": true,
|
|
32
|
+
"require_last_push_approval": false,
|
|
33
|
+
"required_review_thread_resolution": false,
|
|
34
|
+
"allowed_merge_methods": [
|
|
35
|
+
"squash"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"bypass_actors": [
|
|
41
|
+
{
|
|
42
|
+
"actor_id": 5,
|
|
43
|
+
"actor_type": "RepositoryRole",
|
|
44
|
+
"bypass_mode": "always"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Production Ruleset",
|
|
3
|
+
"target": "branch",
|
|
4
|
+
"source_type": "Repository",
|
|
5
|
+
"source": "n24q02m/better-mem0-mcp",
|
|
6
|
+
"enforcement": "active",
|
|
7
|
+
"conditions": {
|
|
8
|
+
"ref_name": {
|
|
9
|
+
"exclude": [],
|
|
10
|
+
"include": [
|
|
11
|
+
"~DEFAULT_BRANCH"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"rules": [
|
|
16
|
+
{
|
|
17
|
+
"type": "deletion"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "non_fast_forward"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "required_linear_history"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "pull_request",
|
|
27
|
+
"parameters": {
|
|
28
|
+
"required_approving_review_count": 1,
|
|
29
|
+
"dismiss_stale_reviews_on_push": true,
|
|
30
|
+
"required_reviewers": [],
|
|
31
|
+
"require_code_owner_review": true,
|
|
32
|
+
"require_last_push_approval": false,
|
|
33
|
+
"required_review_thread_resolution": false,
|
|
34
|
+
"allowed_merge_methods": [
|
|
35
|
+
"squash"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "update"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "code_quality",
|
|
44
|
+
"parameters": {
|
|
45
|
+
"severity": "errors"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "code_scanning",
|
|
50
|
+
"parameters": {
|
|
51
|
+
"code_scanning_tools": [
|
|
52
|
+
{
|
|
53
|
+
"tool": "CodeQL",
|
|
54
|
+
"security_alerts_threshold": "high_or_higher",
|
|
55
|
+
"alerts_threshold": "errors"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"bypass_actors": [
|
|
62
|
+
{
|
|
63
|
+
"actor_id": 5,
|
|
64
|
+
"actor_type": "RepositoryRole",
|
|
65
|
+
"bypass_mode": "always"
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
@@ -15,6 +15,7 @@ on:
|
|
|
15
15
|
|
|
16
16
|
permissions:
|
|
17
17
|
contents: write
|
|
18
|
+
pull-requests: write
|
|
18
19
|
packages: write
|
|
19
20
|
id-token: write
|
|
20
21
|
|
|
@@ -27,11 +28,11 @@ concurrency:
|
|
|
27
28
|
cancel-in-progress: false
|
|
28
29
|
|
|
29
30
|
jobs:
|
|
31
|
+
# ═══════════════════ Manual: Promote dev -> main ═══════════════════
|
|
30
32
|
promote:
|
|
31
33
|
name: Promote to Stable
|
|
32
34
|
if: github.event_name == 'workflow_dispatch' && inputs.action == 'promote-to-stable'
|
|
33
35
|
runs-on: ubuntu-latest
|
|
34
|
-
|
|
35
36
|
steps:
|
|
36
37
|
- name: Checkout code
|
|
37
38
|
uses: actions/checkout@v6
|
|
@@ -39,76 +40,93 @@ jobs:
|
|
|
39
40
|
fetch-depth: 0
|
|
40
41
|
token: ${{ secrets.GH_PAT }}
|
|
41
42
|
|
|
42
|
-
- name: Check CI/CD status on dev
|
|
43
|
+
- name: Check CI/CD status on dev
|
|
43
44
|
env:
|
|
44
45
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
45
46
|
run: |
|
|
46
47
|
chmod +x .github/scripts/check-ci-cd-status.sh
|
|
47
48
|
./.github/scripts/check-ci-cd-status.sh --branch=dev
|
|
48
49
|
|
|
49
|
-
- name:
|
|
50
|
+
- name: Create PR dev -> main
|
|
50
51
|
env:
|
|
51
|
-
|
|
52
|
+
GH_TOKEN: ${{ secrets.GH_PAT }}
|
|
52
53
|
run: |
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
EXISTING_PR=$(gh pr list --base main --head dev --json number --jq '.[0].number')
|
|
55
|
+
if [ -n "$EXISTING_PR" ]; then
|
|
56
|
+
echo "PR #$EXISTING_PR already exists for dev -> main"
|
|
57
|
+
echo "URL: https://github.com/${{ github.repository }}/pull/$EXISTING_PR"
|
|
58
|
+
exit 0
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
LATEST_TAG=$(git describe --tags --abbrev=0 origin/dev 2>/dev/null || echo "")
|
|
62
|
+
if [ -z "$LATEST_TAG" ]; then
|
|
63
|
+
PR_TITLE="feat: promote dev to main"
|
|
64
|
+
else
|
|
65
|
+
PR_TITLE="feat: promote dev to main ($LATEST_TAG)"
|
|
66
|
+
fi
|
|
55
67
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
gh pr create \
|
|
69
|
+
--base main \
|
|
70
|
+
--head dev \
|
|
71
|
+
--title "$PR_TITLE" \
|
|
72
|
+
--body "## Promote dev to main
|
|
73
|
+
|
|
74
|
+
This PR promotes the latest changes from \`dev\` branch to \`main\`.
|
|
75
|
+
|
|
76
|
+
### Pre-checks passed:
|
|
77
|
+
- CI workflow passed on dev
|
|
78
|
+
- CD workflow passed on dev
|
|
79
|
+
|
|
80
|
+
### Latest beta version: $LATEST_TAG"
|
|
81
|
+
|
|
82
|
+
# ═══════════════════ Release Please (beta on dev) ═══════════════════
|
|
83
|
+
release-beta:
|
|
84
|
+
name: Release Please (Beta)
|
|
85
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/dev'
|
|
59
86
|
runs-on: ubuntu-latest
|
|
60
87
|
outputs:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
88
|
+
release_created: ${{ steps.release.outputs.release_created }}
|
|
89
|
+
tag_name: ${{ steps.release.outputs.tag_name }}
|
|
90
|
+
version: ${{ steps.release.outputs.version }}
|
|
64
91
|
steps:
|
|
65
|
-
-
|
|
66
|
-
|
|
92
|
+
- uses: googleapis/release-please-action@v4
|
|
93
|
+
id: release
|
|
67
94
|
with:
|
|
68
|
-
fetch-depth: 0
|
|
69
95
|
token: ${{ secrets.GH_PAT }}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
96
|
+
config-file: release-please-config.json
|
|
97
|
+
manifest-file: .release-please-manifest.json
|
|
98
|
+
target-branch: dev
|
|
99
|
+
prerelease: true
|
|
100
|
+
prerelease-type: beta
|
|
101
|
+
|
|
102
|
+
# ═══════════════════ Release Please (stable on main) ═══════════════════
|
|
103
|
+
release-stable:
|
|
104
|
+
name: Release Please (Stable)
|
|
105
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
106
|
+
runs-on: ubuntu-latest
|
|
107
|
+
outputs:
|
|
108
|
+
release_created: ${{ steps.release.outputs.release_created }}
|
|
109
|
+
tag_name: ${{ steps.release.outputs.tag_name }}
|
|
110
|
+
version: ${{ steps.release.outputs.version }}
|
|
111
|
+
steps:
|
|
112
|
+
- uses: googleapis/release-please-action@v4
|
|
113
|
+
id: release
|
|
78
114
|
with:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- name: Run semantic-release
|
|
85
|
-
env:
|
|
86
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
87
|
-
run: npx semantic-release
|
|
88
|
-
|
|
89
|
-
- name: Check release status
|
|
90
|
-
id: check
|
|
91
|
-
run: |
|
|
92
|
-
git fetch --tags
|
|
93
|
-
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
94
|
-
CURRENT_COMMIT=$(git rev-parse HEAD)
|
|
95
|
-
TAG_COMMIT=$(git rev-list -n 1 "$LATEST_TAG" 2>/dev/null || echo "")
|
|
96
|
-
|
|
97
|
-
if [ -n "$LATEST_TAG" ] && [ "$CURRENT_COMMIT" = "$TAG_COMMIT" ]; then
|
|
98
|
-
echo "released=true" >> $GITHUB_OUTPUT
|
|
99
|
-
echo "version=${LATEST_TAG#v}" >> $GITHUB_OUTPUT
|
|
100
|
-
echo "New release detected: $LATEST_TAG"
|
|
101
|
-
else
|
|
102
|
-
echo "released=false" >> $GITHUB_OUTPUT
|
|
103
|
-
echo "No new release"
|
|
104
|
-
fi
|
|
115
|
+
token: ${{ secrets.GH_PAT }}
|
|
116
|
+
config-file: release-please-config.json
|
|
117
|
+
manifest-file: .release-please-manifest.json
|
|
118
|
+
target-branch: main
|
|
105
119
|
|
|
120
|
+
# ═══════════════════ Publish to PyPI ═══════════════════
|
|
106
121
|
publish-pypi:
|
|
107
122
|
name: Publish to PyPI
|
|
108
|
-
needs: release
|
|
109
|
-
if:
|
|
123
|
+
needs: [release-beta, release-stable]
|
|
124
|
+
if: |
|
|
125
|
+
always() && (
|
|
126
|
+
needs.release-beta.outputs.release_created == 'true' ||
|
|
127
|
+
needs.release-stable.outputs.release_created == 'true'
|
|
128
|
+
)
|
|
110
129
|
runs-on: ubuntu-latest
|
|
111
|
-
|
|
112
130
|
steps:
|
|
113
131
|
- name: Checkout code
|
|
114
132
|
uses: actions/checkout@v6
|
|
@@ -126,10 +144,15 @@ jobs:
|
|
|
126
144
|
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
|
|
127
145
|
run: uv publish
|
|
128
146
|
|
|
147
|
+
# ═══════════════════ Build Docker (multi-arch) ═══════════════════
|
|
129
148
|
build-docker:
|
|
130
149
|
name: Build Docker (${{ matrix.platform }})
|
|
131
|
-
needs: release
|
|
132
|
-
if:
|
|
150
|
+
needs: [release-beta, release-stable]
|
|
151
|
+
if: |
|
|
152
|
+
always() && (
|
|
153
|
+
needs.release-beta.outputs.release_created == 'true' ||
|
|
154
|
+
needs.release-stable.outputs.release_created == 'true'
|
|
155
|
+
)
|
|
133
156
|
strategy:
|
|
134
157
|
fail-fast: false
|
|
135
158
|
matrix:
|
|
@@ -141,7 +164,6 @@ jobs:
|
|
|
141
164
|
runner: ubuntu-24.04-arm
|
|
142
165
|
artifact: linux-arm64
|
|
143
166
|
runs-on: ${{ matrix.runner }}
|
|
144
|
-
|
|
145
167
|
steps:
|
|
146
168
|
- name: Checkout code
|
|
147
169
|
uses: actions/checkout@v6
|
|
@@ -189,12 +211,16 @@ jobs:
|
|
|
189
211
|
path: ${{ runner.temp }}/digests/*
|
|
190
212
|
retention-days: 1
|
|
191
213
|
|
|
214
|
+
# ═══════════════════ Merge Docker Manifests ═══════════════════
|
|
192
215
|
merge-docker:
|
|
193
216
|
name: Merge Docker Manifests
|
|
194
|
-
needs: [release, build-docker]
|
|
195
|
-
if:
|
|
217
|
+
needs: [release-beta, release-stable, build-docker]
|
|
218
|
+
if: |
|
|
219
|
+
always() && (
|
|
220
|
+
needs.release-beta.outputs.release_created == 'true' ||
|
|
221
|
+
needs.release-stable.outputs.release_created == 'true'
|
|
222
|
+
)
|
|
196
223
|
runs-on: ubuntu-latest
|
|
197
|
-
|
|
198
224
|
steps:
|
|
199
225
|
- name: Download digests
|
|
200
226
|
uses: actions/download-artifact@v4
|
|
@@ -223,12 +249,11 @@ jobs:
|
|
|
223
249
|
if: github.ref == 'refs/heads/main'
|
|
224
250
|
working-directory: ${{ runner.temp }}/digests
|
|
225
251
|
env:
|
|
226
|
-
VERSION: ${{ needs.release.outputs.version }}
|
|
252
|
+
VERSION: ${{ needs.release-stable.outputs.version }}
|
|
227
253
|
run: |
|
|
228
254
|
MAJOR_MINOR=$(echo "$VERSION" | cut -d. -f1,2)
|
|
229
255
|
MAJOR=$(echo "$VERSION" | cut -d. -f1)
|
|
230
256
|
|
|
231
|
-
# Prepare sources
|
|
232
257
|
SOURCES_DOCKERHUB=""
|
|
233
258
|
SOURCES_GHCR=""
|
|
234
259
|
for digest in *; do
|
|
@@ -236,7 +261,6 @@ jobs:
|
|
|
236
261
|
SOURCES_GHCR="$SOURCES_GHCR ${{ env.GHCR_IMAGE }}@sha256:$digest"
|
|
237
262
|
done
|
|
238
263
|
|
|
239
|
-
# Create manifests for Docker Hub
|
|
240
264
|
docker buildx imagetools create \
|
|
241
265
|
-t ${{ env.DOCKERHUB_IMAGE }}:latest \
|
|
242
266
|
-t ${{ env.DOCKERHUB_IMAGE }}:$VERSION \
|
|
@@ -244,7 +268,6 @@ jobs:
|
|
|
244
268
|
-t ${{ env.DOCKERHUB_IMAGE }}:$MAJOR \
|
|
245
269
|
$SOURCES_DOCKERHUB
|
|
246
270
|
|
|
247
|
-
# Create manifests for GHCR
|
|
248
271
|
docker buildx imagetools create \
|
|
249
272
|
-t ${{ env.GHCR_IMAGE }}:latest \
|
|
250
273
|
-t ${{ env.GHCR_IMAGE }}:$VERSION \
|
|
@@ -256,11 +279,10 @@ jobs:
|
|
|
256
279
|
if: github.ref == 'refs/heads/dev'
|
|
257
280
|
working-directory: ${{ runner.temp }}/digests
|
|
258
281
|
env:
|
|
259
|
-
VERSION: ${{ needs.release.outputs.version }}
|
|
282
|
+
VERSION: ${{ needs.release-beta.outputs.version }}
|
|
260
283
|
run: |
|
|
261
284
|
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
|
|
262
285
|
|
|
263
|
-
# Prepare sources
|
|
264
286
|
SOURCES_DOCKERHUB=""
|
|
265
287
|
SOURCES_GHCR=""
|
|
266
288
|
for digest in *; do
|
|
@@ -268,14 +290,12 @@ jobs:
|
|
|
268
290
|
SOURCES_GHCR="$SOURCES_GHCR ${{ env.GHCR_IMAGE }}@sha256:$digest"
|
|
269
291
|
done
|
|
270
292
|
|
|
271
|
-
# Create manifests for Docker Hub
|
|
272
293
|
docker buildx imagetools create \
|
|
273
294
|
-t ${{ env.DOCKERHUB_IMAGE }}:beta \
|
|
274
295
|
-t ${{ env.DOCKERHUB_IMAGE }}:$VERSION \
|
|
275
296
|
-t ${{ env.DOCKERHUB_IMAGE }}:beta-$SHORT_SHA \
|
|
276
297
|
$SOURCES_DOCKERHUB
|
|
277
298
|
|
|
278
|
-
# Create manifests for GHCR
|
|
279
299
|
docker buildx imagetools create \
|
|
280
300
|
-t ${{ env.GHCR_IMAGE }}:beta \
|
|
281
301
|
-t ${{ env.GHCR_IMAGE }}:$VERSION \
|
|
@@ -295,3 +315,24 @@ jobs:
|
|
|
295
315
|
repository: ${{ secrets.DOCKERHUB_USERNAME }}/better-mem0-mcp
|
|
296
316
|
short-description: ${{ github.event.repository.description }}
|
|
297
317
|
readme-filepath: ./README.md
|
|
318
|
+
|
|
319
|
+
# ═══════════════════ Sync dev from main after stable release ═══════════════════
|
|
320
|
+
sync-dev:
|
|
321
|
+
name: Sync Dev Branch
|
|
322
|
+
needs: [release-stable]
|
|
323
|
+
if: always() && needs.release-stable.outputs.release_created == 'true'
|
|
324
|
+
runs-on: ubuntu-latest
|
|
325
|
+
steps:
|
|
326
|
+
- name: Checkout main
|
|
327
|
+
uses: actions/checkout@v6
|
|
328
|
+
with:
|
|
329
|
+
ref: main
|
|
330
|
+
fetch-depth: 0
|
|
331
|
+
token: ${{ secrets.GH_PAT }}
|
|
332
|
+
|
|
333
|
+
- name: Recreate dev from main
|
|
334
|
+
run: |
|
|
335
|
+
git push origin --delete dev || true
|
|
336
|
+
git checkout -b dev
|
|
337
|
+
git push origin dev
|
|
338
|
+
echo "Dev branch synced from main"
|
|
@@ -11,8 +11,8 @@ permissions:
|
|
|
11
11
|
pull-requests: write
|
|
12
12
|
|
|
13
13
|
jobs:
|
|
14
|
-
lint-and-
|
|
15
|
-
name: Lint &
|
|
14
|
+
lint-and-test:
|
|
15
|
+
name: Lint & Test
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
|
|
18
18
|
steps:
|
|
@@ -41,7 +41,7 @@ jobs:
|
|
|
41
41
|
- name: Run ty type check
|
|
42
42
|
run: uv run ty check
|
|
43
43
|
|
|
44
|
-
- name: Run tests
|
|
44
|
+
- name: Run tests
|
|
45
45
|
run: |
|
|
46
46
|
if [ -d "tests" ] && [ "$(ls -A tests/*.py 2>/dev/null)" ]; then
|
|
47
47
|
uv run pytest --tb=short
|
|
@@ -49,30 +49,6 @@ jobs:
|
|
|
49
49
|
echo "No tests found, skipping..."
|
|
50
50
|
fi
|
|
51
51
|
|
|
52
|
-
- name: Comment PR on success
|
|
53
|
-
if: success() && github.event_name == 'pull_request'
|
|
54
|
-
uses: actions/github-script@v8
|
|
55
|
-
with:
|
|
56
|
-
script: |
|
|
57
|
-
github.rest.issues.createComment({
|
|
58
|
-
issue_number: context.issue.number,
|
|
59
|
-
owner: context.repo.owner,
|
|
60
|
-
repo: context.repo.repo,
|
|
61
|
-
body: '✅ **CI Checks Passed**\n\n- Ruff Check: ✓\n- Format: ✓\n- Type Check: ✓\n\nReady for review!'
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
- name: Comment PR on failure
|
|
65
|
-
if: failure() && github.event_name == 'pull_request'
|
|
66
|
-
uses: actions/github-script@v8
|
|
67
|
-
with:
|
|
68
|
-
script: |
|
|
69
|
-
github.rest.issues.createComment({
|
|
70
|
-
issue_number: context.issue.number,
|
|
71
|
-
owner: context.repo.owner,
|
|
72
|
-
repo: context.repo.repo,
|
|
73
|
-
body: '❌ **CI Checks Failed**\n\nPlease fix the issues:\n- Run `mise run check` locally\n- Check workflow logs for details'
|
|
74
|
-
})
|
|
75
|
-
|
|
76
52
|
dependency-review:
|
|
77
53
|
name: Dependency Review
|
|
78
54
|
if: github.event_name == 'pull_request'
|
|
@@ -18,14 +18,14 @@ UV_LINK_MODE = "copy"
|
|
|
18
18
|
description = "Setup development environment"
|
|
19
19
|
run = [
|
|
20
20
|
"mise install",
|
|
21
|
-
"uv sync --group dev",
|
|
22
21
|
"node scripts/clean-venv.mjs",
|
|
22
|
+
"uv sync --group dev",
|
|
23
23
|
"uv pip install pre-commit",
|
|
24
24
|
"uv run pre-commit install",
|
|
25
25
|
"echo 'Setup complete!'"
|
|
26
26
|
]
|
|
27
27
|
|
|
28
|
-
[tasks.
|
|
28
|
+
[tasks.lint]
|
|
29
29
|
description = "Run all quality checks (ruff + ty)"
|
|
30
30
|
run = [
|
|
31
31
|
"uv run ruff check .",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"folders": [
|
|
3
|
+
{
|
|
4
|
+
"path": ".."
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"path": "../../EchoVault"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"path": "../../wet-mcp"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"path": "../../better-notion-mcp"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"path": "../../KnowledgePrism"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "../../QuikShipping"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"settings": {}
|
|
23
|
+
}
|