helix-memory 4.0.1__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.
- helix_memory-4.0.1/.github/actions/setup-python-env/action.yml +34 -0
- helix_memory-4.0.1/.github/dependabot.yml +6 -0
- helix_memory-4.0.1/.github/workflows/ci.yml +183 -0
- helix_memory-4.0.1/.github/workflows/snyk.yml +31 -0
- helix_memory-4.0.1/.gitignore +62 -0
- helix_memory-4.0.1/.pre-commit-config.yaml +49 -0
- helix_memory-4.0.1/CHANGELOG.md +136 -0
- helix_memory-4.0.1/LICENSE +21 -0
- helix_memory-4.0.1/PKG-INFO +74 -0
- helix_memory-4.0.1/README.md +60 -0
- helix_memory-4.0.1/docs/PLAN.md +236 -0
- helix_memory-4.0.1/helix/__init__.py +3 -0
- helix_memory-4.0.1/helix/cli/__init__.py +19 -0
- helix_memory-4.0.1/helix/cli/app.py +21 -0
- helix_memory-4.0.1/helix/cli/commands.py +136 -0
- helix_memory-4.0.1/helix/cli/prompts.py +33 -0
- helix_memory-4.0.1/helix/core/__init__.py +35 -0
- helix_memory-4.0.1/helix/core/conventions/__init__.py +7 -0
- helix_memory-4.0.1/helix/core/conventions/brain.py +127 -0
- helix_memory-4.0.1/helix/core/conventions/convention.py +53 -0
- helix_memory-4.0.1/helix/core/installer/__init__.py +30 -0
- helix_memory-4.0.1/helix/core/installer/models.py +35 -0
- helix_memory-4.0.1/helix/core/installer/operations.py +114 -0
- helix_memory-4.0.1/helix/core/installer/snippet.py +18 -0
- helix_memory-4.0.1/helix/core/settings.py +23 -0
- helix_memory-4.0.1/helix/utils/__init__.py +3 -0
- helix_memory-4.0.1/helix/utils/parsing.py +4 -0
- helix_memory-4.0.1/pyproject.toml +176 -0
- helix_memory-4.0.1/pytest.ini +2 -0
- helix_memory-4.0.1/tests/__init__.py +0 -0
- helix_memory-4.0.1/tests/cli/__init__.py +0 -0
- helix_memory-4.0.1/tests/cli/app/__init__.py +0 -0
- helix_memory-4.0.1/tests/cli/app/conftest.py +14 -0
- helix_memory-4.0.1/tests/cli/app/test_app.py +14 -0
- helix_memory-4.0.1/tests/cli/commands/__init__.py +0 -0
- helix_memory-4.0.1/tests/cli/commands/conftest.py +45 -0
- helix_memory-4.0.1/tests/cli/commands/test_commands.py +140 -0
- helix_memory-4.0.1/tests/conftest.py +19 -0
- helix_memory-4.0.1/tests/core/__init__.py +0 -0
- helix_memory-4.0.1/tests/core/conventions/__init__.py +0 -0
- helix_memory-4.0.1/tests/core/conventions/brain/__init__.py +0 -0
- helix_memory-4.0.1/tests/core/conventions/brain/conftest.py +8 -0
- helix_memory-4.0.1/tests/core/conventions/brain/test_brain.py +184 -0
- helix_memory-4.0.1/tests/core/conventions/convention/__init__.py +0 -0
- helix_memory-4.0.1/tests/core/conventions/convention/conftest.py +18 -0
- helix_memory-4.0.1/tests/core/conventions/convention/test_convention.py +56 -0
- helix_memory-4.0.1/tests/core/installer/__init__.py +0 -0
- helix_memory-4.0.1/tests/core/installer/conftest.py +36 -0
- helix_memory-4.0.1/tests/core/installer/test_installer.py +116 -0
- helix_memory-4.0.1/tests/utils/__init__.py +0 -0
- helix_memory-4.0.1/tests/utils/test_parsing.py +18 -0
- helix_memory-4.0.1/uv.lock +601 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: 'Setup Python Environment'
|
|
2
|
+
description: 'Install Python, uv, and project dependencies'
|
|
3
|
+
|
|
4
|
+
inputs:
|
|
5
|
+
python-version:
|
|
6
|
+
description: 'Python version to set up'
|
|
7
|
+
required: true
|
|
8
|
+
uv-version:
|
|
9
|
+
description: 'uv version to install'
|
|
10
|
+
required: false
|
|
11
|
+
default: '0.9.11'
|
|
12
|
+
install-dependencies:
|
|
13
|
+
description: 'Whether to run uv sync after setup'
|
|
14
|
+
required: false
|
|
15
|
+
default: 'true'
|
|
16
|
+
|
|
17
|
+
runs:
|
|
18
|
+
using: 'composite'
|
|
19
|
+
steps:
|
|
20
|
+
- name: Set up Python ${{ inputs.python-version }}
|
|
21
|
+
uses: actions/setup-python@v6
|
|
22
|
+
with:
|
|
23
|
+
python-version: ${{ inputs.python-version }}
|
|
24
|
+
|
|
25
|
+
- name: Install uv
|
|
26
|
+
uses: astral-sh/setup-uv@v7
|
|
27
|
+
with:
|
|
28
|
+
version: ${{ inputs.uv-version }}
|
|
29
|
+
python-version: ${{ inputs.python-version }}
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies
|
|
32
|
+
if: inputs.install-dependencies == 'true'
|
|
33
|
+
shell: bash
|
|
34
|
+
run: uv sync --all-groups --frozen
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ['main']
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ['main']
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
id-token: write
|
|
11
|
+
contents: write
|
|
12
|
+
pull-requests: write
|
|
13
|
+
actions: write
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
lint:
|
|
17
|
+
name: Lint (Python ${{ matrix.python-version }})
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
strategy:
|
|
20
|
+
matrix:
|
|
21
|
+
python-version: ['3.13', '3.14']
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v6
|
|
24
|
+
with:
|
|
25
|
+
token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
26
|
+
fetch-depth: 0
|
|
27
|
+
|
|
28
|
+
- name: Setup environment
|
|
29
|
+
uses: ./.github/actions/setup-python-env
|
|
30
|
+
with:
|
|
31
|
+
python-version: ${{ matrix.python-version }}
|
|
32
|
+
|
|
33
|
+
- name: Run lint and format checks
|
|
34
|
+
run: uv run poe format
|
|
35
|
+
|
|
36
|
+
test:
|
|
37
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
strategy:
|
|
40
|
+
matrix:
|
|
41
|
+
python-version: ['3.13', '3.14']
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v6
|
|
44
|
+
with:
|
|
45
|
+
token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
46
|
+
fetch-depth: 0
|
|
47
|
+
|
|
48
|
+
- name: Setup environment
|
|
49
|
+
uses: ./.github/actions/setup-python-env
|
|
50
|
+
with:
|
|
51
|
+
python-version: ${{ matrix.python-version }}
|
|
52
|
+
|
|
53
|
+
- name: Run unit tests
|
|
54
|
+
env:
|
|
55
|
+
SECRET_KEY: ${{ secrets.SECRET_KEY }}
|
|
56
|
+
run: uv run poe test
|
|
57
|
+
|
|
58
|
+
update-hooks:
|
|
59
|
+
name: Update pre-commit hooks
|
|
60
|
+
if: github.event_name == 'pull_request'
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
steps:
|
|
63
|
+
- uses: actions/checkout@v6
|
|
64
|
+
with:
|
|
65
|
+
token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
66
|
+
ref: ${{ github.head_ref }}
|
|
67
|
+
fetch-depth: 0
|
|
68
|
+
|
|
69
|
+
- name: Setup environment
|
|
70
|
+
uses: ./.github/actions/setup-python-env
|
|
71
|
+
with:
|
|
72
|
+
python-version: '3.13'
|
|
73
|
+
|
|
74
|
+
- name: Autoupdate pre-commit hooks
|
|
75
|
+
run: uv run pre-commit autoupdate
|
|
76
|
+
|
|
77
|
+
- name: Commit updated hooks
|
|
78
|
+
run: |
|
|
79
|
+
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
|
80
|
+
git config --local user.name "github-actions[bot]"
|
|
81
|
+
git add .pre-commit-config.yaml
|
|
82
|
+
git diff --staged --quiet || git commit -m "chore(config): update pre-commit hooks"
|
|
83
|
+
git push origin "HEAD:${GITHUB_HEAD_REF:-$GITHUB_REF_NAME}"
|
|
84
|
+
|
|
85
|
+
breaking-changes:
|
|
86
|
+
name: Detect breaking changes
|
|
87
|
+
runs-on: ubuntu-latest
|
|
88
|
+
if: github.ref == 'refs/heads/main'
|
|
89
|
+
needs: [lint, test]
|
|
90
|
+
permissions:
|
|
91
|
+
contents: write
|
|
92
|
+
steps:
|
|
93
|
+
- uses: actions/checkout@v6
|
|
94
|
+
with:
|
|
95
|
+
token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
96
|
+
ref: main
|
|
97
|
+
fetch-depth: 0
|
|
98
|
+
|
|
99
|
+
- name: Setup environment
|
|
100
|
+
uses: ./.github/actions/setup-python-env
|
|
101
|
+
with:
|
|
102
|
+
python-version: '3.13'
|
|
103
|
+
|
|
104
|
+
- name: Get proposed version
|
|
105
|
+
id: proposed
|
|
106
|
+
run: |
|
|
107
|
+
VERSION=$(pipx run --spec python-semantic-release semantic-release --noop version --print)
|
|
108
|
+
echo "proposed=$VERSION" >> $GITHUB_OUTPUT
|
|
109
|
+
|
|
110
|
+
- name: Run pycracks
|
|
111
|
+
id: pycracks
|
|
112
|
+
continue-on-error: true
|
|
113
|
+
env:
|
|
114
|
+
SECRET_KEY: ${{ secrets.SECRET_KEY }}
|
|
115
|
+
run: |
|
|
116
|
+
pipx run pycracks \
|
|
117
|
+
--path "tests" \
|
|
118
|
+
--target-version "${{ steps.proposed.outputs.proposed }}" \
|
|
119
|
+
--test-command "uv run poe test"
|
|
120
|
+
|
|
121
|
+
- name: Create breaking change commit
|
|
122
|
+
if: steps.pycracks.outcome == 'failure'
|
|
123
|
+
run: |
|
|
124
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
125
|
+
git config user.name "github-actions[bot]"
|
|
126
|
+
git commit --allow-empty \
|
|
127
|
+
-m "feat!: breaking change detected [skip ci]"
|
|
128
|
+
git push origin main
|
|
129
|
+
|
|
130
|
+
versioning:
|
|
131
|
+
name: Versioning
|
|
132
|
+
runs-on: ubuntu-latest
|
|
133
|
+
if: github.ref == 'refs/heads/main'
|
|
134
|
+
needs: [breaking-changes]
|
|
135
|
+
steps:
|
|
136
|
+
- uses: actions/checkout@v6
|
|
137
|
+
with:
|
|
138
|
+
token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
139
|
+
ref: main
|
|
140
|
+
fetch-depth: 0
|
|
141
|
+
|
|
142
|
+
- name: Setup environment
|
|
143
|
+
uses: ./.github/actions/setup-python-env
|
|
144
|
+
with:
|
|
145
|
+
python-version: '3.13'
|
|
146
|
+
|
|
147
|
+
- name: Bump version and update changelog
|
|
148
|
+
id: release
|
|
149
|
+
uses: python-semantic-release/python-semantic-release@v9.21.1
|
|
150
|
+
with:
|
|
151
|
+
github_token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
152
|
+
|
|
153
|
+
outputs:
|
|
154
|
+
released: ${{ steps.release.outputs.released }}
|
|
155
|
+
version: ${{ steps.release.outputs.version }}
|
|
156
|
+
|
|
157
|
+
publish:
|
|
158
|
+
name: Publish to PyPI
|
|
159
|
+
runs-on: ubuntu-latest
|
|
160
|
+
if: github.ref == 'refs/heads/main' && needs.versioning.outputs.released == 'true'
|
|
161
|
+
needs: [versioning]
|
|
162
|
+
environment:
|
|
163
|
+
name: pypi
|
|
164
|
+
url: https://pypi.org/p/helix-memory
|
|
165
|
+
permissions:
|
|
166
|
+
id-token: write
|
|
167
|
+
steps:
|
|
168
|
+
- uses: actions/checkout@v6
|
|
169
|
+
with:
|
|
170
|
+
token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
171
|
+
ref: main
|
|
172
|
+
fetch-depth: 0
|
|
173
|
+
|
|
174
|
+
- name: Setup environment
|
|
175
|
+
uses: ./.github/actions/setup-python-env
|
|
176
|
+
with:
|
|
177
|
+
python-version: '3.13'
|
|
178
|
+
|
|
179
|
+
- name: Build distributions
|
|
180
|
+
run: uv build
|
|
181
|
+
|
|
182
|
+
- name: Publish to PyPI
|
|
183
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Snyk Security with uv
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ['main']
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
schedule:
|
|
8
|
+
- cron: '0 0 * * 0' # 00:00 every Sunday
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
snyk_scan:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v6
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
|
|
18
|
+
- name: Setup environment
|
|
19
|
+
uses: ./.github/actions/setup-python-env
|
|
20
|
+
with:
|
|
21
|
+
python-version: '3.13'
|
|
22
|
+
|
|
23
|
+
- name: Export dependencies
|
|
24
|
+
run: uv export --format requirements-txt --output-file requirements.txt
|
|
25
|
+
|
|
26
|
+
- name: Run Snyk Open Source
|
|
27
|
+
uses: snyk/actions/python@master
|
|
28
|
+
env:
|
|
29
|
+
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
30
|
+
with:
|
|
31
|
+
command: test
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*$py.class
|
|
4
|
+
|
|
5
|
+
*.so
|
|
6
|
+
|
|
7
|
+
.Python
|
|
8
|
+
build/
|
|
9
|
+
develop-eggs/
|
|
10
|
+
dist/
|
|
11
|
+
downloads/
|
|
12
|
+
eggs/
|
|
13
|
+
.eggs/
|
|
14
|
+
lib/
|
|
15
|
+
lib64/
|
|
16
|
+
parts/
|
|
17
|
+
sdist/
|
|
18
|
+
var/
|
|
19
|
+
wheels/
|
|
20
|
+
*.egg-info/
|
|
21
|
+
*.egg
|
|
22
|
+
MANIFEST
|
|
23
|
+
|
|
24
|
+
.venv/
|
|
25
|
+
venv/
|
|
26
|
+
ENV/
|
|
27
|
+
env/
|
|
28
|
+
|
|
29
|
+
pip-log.txt
|
|
30
|
+
pip-delete-this-directory.txt
|
|
31
|
+
|
|
32
|
+
htmlcov/
|
|
33
|
+
.tox/
|
|
34
|
+
.nox/
|
|
35
|
+
.coverage
|
|
36
|
+
.coverage.*
|
|
37
|
+
.cache
|
|
38
|
+
nosetests.xml
|
|
39
|
+
coverage.xml
|
|
40
|
+
*.cover
|
|
41
|
+
*.py,cover
|
|
42
|
+
.hypothesis/
|
|
43
|
+
.pytest_cache/
|
|
44
|
+
|
|
45
|
+
.mypy_cache/
|
|
46
|
+
dmypy.json
|
|
47
|
+
dmypy.txt
|
|
48
|
+
.ruff_cache/
|
|
49
|
+
|
|
50
|
+
.vscode/
|
|
51
|
+
.idea/
|
|
52
|
+
*.swp
|
|
53
|
+
*.swo
|
|
54
|
+
*~
|
|
55
|
+
|
|
56
|
+
.DS_Store
|
|
57
|
+
Thumbs.db
|
|
58
|
+
|
|
59
|
+
site/
|
|
60
|
+
|
|
61
|
+
.env
|
|
62
|
+
.env.*
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/abravalheri/validate-pyproject
|
|
3
|
+
rev: v0.25
|
|
4
|
+
hooks:
|
|
5
|
+
- id: validate-pyproject
|
|
6
|
+
|
|
7
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
8
|
+
rev: v6.0.0
|
|
9
|
+
hooks:
|
|
10
|
+
- id: trailing-whitespace
|
|
11
|
+
- id: end-of-file-fixer
|
|
12
|
+
- id: detect-private-key
|
|
13
|
+
|
|
14
|
+
- repo: https://github.com/gitleaks/gitleaks
|
|
15
|
+
rev: v8.30.0
|
|
16
|
+
hooks:
|
|
17
|
+
- id: gitleaks
|
|
18
|
+
|
|
19
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
20
|
+
rev: 'v0.15.13'
|
|
21
|
+
hooks:
|
|
22
|
+
- id: ruff-check
|
|
23
|
+
name: ruff
|
|
24
|
+
args: ['--fix']
|
|
25
|
+
|
|
26
|
+
- repo: https://github.com/PyCQA/bandit
|
|
27
|
+
rev: 1.9.4
|
|
28
|
+
hooks:
|
|
29
|
+
- id: bandit
|
|
30
|
+
args: ['-r', '-lll']
|
|
31
|
+
|
|
32
|
+
- repo: https://github.com/pylint-dev/pylint
|
|
33
|
+
rev: v4.0.5
|
|
34
|
+
hooks:
|
|
35
|
+
- id: pylint
|
|
36
|
+
types: [python]
|
|
37
|
+
additional_dependencies:
|
|
38
|
+
- loguru==0.7.3
|
|
39
|
+
- pydantic==2.13.4
|
|
40
|
+
- pytest==9.0.3
|
|
41
|
+
|
|
42
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
43
|
+
rev: v2.1.0
|
|
44
|
+
hooks:
|
|
45
|
+
- id: mypy
|
|
46
|
+
additional_dependencies:
|
|
47
|
+
- loguru==0.7.3
|
|
48
|
+
- pydantic==2.13.4
|
|
49
|
+
- pytest==9.0.3
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
## v4.0.1 (2026-05-19)
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
- **docs**: Update quickstart docs
|
|
9
|
+
([`f16da2b`](https://github.com/justmatias/helix/commit/f16da2b8a34d732e6da7c5d13a4f6dce44bec57b))
|
|
10
|
+
|
|
11
|
+
### Chores
|
|
12
|
+
|
|
13
|
+
- Update project name to 'helix-memory', version to 4.0.0, and a…
|
|
14
|
+
([#3](https://github.com/justmatias/helix/pull/3),
|
|
15
|
+
[`a680c86`](https://github.com/justmatias/helix/commit/a680c86e5e83c695979f1d775cde18ebed73fa74))
|
|
16
|
+
|
|
17
|
+
* chore: update project name to 'helix-memory', version to 4.0.0, and adjust Python requirement to
|
|
18
|
+
>=3.13; enhance installation instructions in README and CI workflow for PyPI publishing
|
|
19
|
+
|
|
20
|
+
* fix: add Snyk security scanning workflow for automated dependency checks
|
|
21
|
+
|
|
22
|
+
* chore: update Python requirement to >=3.13 and rename package to 'helix-memory' with version 4.0.0
|
|
23
|
+
|
|
24
|
+
* chore: update package version to reflect renaming to 'helix-memory'
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## v4.0.0 (2026-05-19)
|
|
28
|
+
|
|
29
|
+
### Features
|
|
30
|
+
|
|
31
|
+
- Breaking change detected [skip ci]
|
|
32
|
+
([`ef40cce`](https://github.com/justmatias/helix/commit/ef40ccedbcb594d8bfa75fdc2b984e141cf84b1e))
|
|
33
|
+
|
|
34
|
+
- Enhance Helix CLI with installation and uninstallation commands…
|
|
35
|
+
([#2](https://github.com/justmatias/helix/pull/2),
|
|
36
|
+
[`172ebf0`](https://github.com/justmatias/helix/commit/172ebf0ae3eb96e845cd005051fda93bed249e02))
|
|
37
|
+
|
|
38
|
+
* feat: enhance Helix CLI with installation and uninstallation commands for agent integration
|
|
39
|
+
|
|
40
|
+
* chore(config): update pre-commit hooks
|
|
41
|
+
|
|
42
|
+
* fix: refactor installer operations and reorganize modules
|
|
43
|
+
|
|
44
|
+
* chore: fix lint issues and refactor installer tests
|
|
45
|
+
|
|
46
|
+
* fix: extract prompt selection logic into separate functions for improved readability and
|
|
47
|
+
reusability
|
|
48
|
+
|
|
49
|
+
* chore: remove comment
|
|
50
|
+
|
|
51
|
+
---------
|
|
52
|
+
|
|
53
|
+
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## v3.0.0 (2026-05-14)
|
|
57
|
+
|
|
58
|
+
### Chores
|
|
59
|
+
|
|
60
|
+
- Restructure CLI application and enhance convention management
|
|
61
|
+
([`78320e1`](https://github.com/justmatias/helix/commit/78320e1dd4ecf95bdc5c37b057ad8ac135ce2a92))
|
|
62
|
+
|
|
63
|
+
- Update CLI structure and enhance command definitions with type annotations
|
|
64
|
+
([`a2717a6`](https://github.com/justmatias/helix/commit/a2717a651c915192a647e7f5ed0dc51d6e8d950e))
|
|
65
|
+
|
|
66
|
+
### Features
|
|
67
|
+
|
|
68
|
+
- Breaking change detected [skip ci]
|
|
69
|
+
([`52eddd9`](https://github.com/justmatias/helix/commit/52eddd91dc8e68981ecf6b6ff957fbf0a3ed9a29))
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## v2.0.0 (2026-05-14)
|
|
73
|
+
|
|
74
|
+
### Bug Fixes
|
|
75
|
+
|
|
76
|
+
- **ci**: Prevent semantic-release from re-triggering CI loop
|
|
77
|
+
([`7aa43ea`](https://github.com/justmatias/helix/commit/7aa43ea6f8eb81652eb7d99ae1facdc8aadcde6d))
|
|
78
|
+
|
|
79
|
+
Add [skip ci] to the release commit message so pushes from python-semantic-release do not trigger a
|
|
80
|
+
new workflow run.
|
|
81
|
+
|
|
82
|
+
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
83
|
+
|
|
84
|
+
### Features
|
|
85
|
+
|
|
86
|
+
- Breaking change detected [skip ci]
|
|
87
|
+
([`ed70a0d`](https://github.com/justmatias/helix/commit/ed70a0dc36f4e7b9d4ea43af2db93ede0e85b788))
|
|
88
|
+
|
|
89
|
+
- Implement CLI for convention management with commands to remember, list, recall, and forget
|
|
90
|
+
conventions
|
|
91
|
+
([`77fb37b`](https://github.com/justmatias/helix/commit/77fb37bd18bfa11163619c6a416d1ebd48b4fa6d))
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## v1.0.0 (2026-05-13)
|
|
95
|
+
|
|
96
|
+
### Bug Fixes
|
|
97
|
+
|
|
98
|
+
- Add convention class for managing conventions and enhance filtering functionality
|
|
99
|
+
([`3517cb3`](https://github.com/justmatias/helix/commit/3517cb36376f537c87f8b55ec822a3a4ce1815b2))
|
|
100
|
+
|
|
101
|
+
- Implement brain class for convention management and remove unused storage utilities
|
|
102
|
+
([`f795485`](https://github.com/justmatias/helix/commit/f795485643854557076a73949b290c75e8b93bd3))
|
|
103
|
+
|
|
104
|
+
- Update project configuration and enhance storage management functionality
|
|
105
|
+
([`2cf4993`](https://github.com/justmatias/helix/commit/2cf4993dd94ebe4d6cc1882d0656d588ed609ccb))
|
|
106
|
+
|
|
107
|
+
### Chores
|
|
108
|
+
|
|
109
|
+
- Add initial project structure with configuration files, README, and core functionality
|
|
110
|
+
([`fa05287`](https://github.com/justmatias/helix/commit/fa052873076828a4dd3c622ff5f9fba8a17b69a5))
|
|
111
|
+
|
|
112
|
+
- Add pre-commit dependency and update lock file with new packages
|
|
113
|
+
([`ce99c36`](https://github.com/justmatias/helix/commit/ce99c360602d23a5d701f1230f3ac077f3ca3c59))
|
|
114
|
+
|
|
115
|
+
- Disable pylint invalid-name warning
|
|
116
|
+
([`41c3c53`](https://github.com/justmatias/helix/commit/41c3c53049153d153b9dc7546fd6454f63cb88e3))
|
|
117
|
+
|
|
118
|
+
- Fix lint issues
|
|
119
|
+
([`1e94e90`](https://github.com/justmatias/helix/commit/1e94e90fa09d640f7501382e1e55658c04791c3b))
|
|
120
|
+
|
|
121
|
+
- Streamline _filter_index_lines_by_tags method for improved readability
|
|
122
|
+
([`9eb6dcc`](https://github.com/justmatias/helix/commit/9eb6dccde68c18fb1dae5b9a609e86b6f9543f7c))
|
|
123
|
+
|
|
124
|
+
- Update build system configuration to use hatchling and specify wheel target
|
|
125
|
+
([`4e9fc37`](https://github.com/justmatias/helix/commit/4e9fc3713c0c41a60e1af22918129938bb4b0d99))
|
|
126
|
+
|
|
127
|
+
- **docs**: Add implementation plan
|
|
128
|
+
([`b10b684`](https://github.com/justmatias/helix/commit/b10b684e9412c15db733fa3c6de65005c3107846))
|
|
129
|
+
|
|
130
|
+
- **release**: Release version 1.0.0
|
|
131
|
+
([`bc81d7f`](https://github.com/justmatias/helix/commit/bc81d7fa301c66ff1607542928fc38b75da265e7))
|
|
132
|
+
|
|
133
|
+
### Features
|
|
134
|
+
|
|
135
|
+
- Breaking change detected [skip ci]
|
|
136
|
+
([`1229f2e`](https://github.com/justmatias/helix/commit/1229f2efc35bec295ea609ea18d61de573f33ede))
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Matías Giménez
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: helix-memory
|
|
3
|
+
Version: 4.0.1
|
|
4
|
+
Summary: A lightweight, multi-client memory layer that persists cross-project coding conventions
|
|
5
|
+
Author-email: Matias Gimenez <matiasgimenez.dev@gmail.com>
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Requires-Python: >=3.13
|
|
8
|
+
Requires-Dist: loguru>=0.7.3
|
|
9
|
+
Requires-Dist: pydantic-settings>=2.14.1
|
|
10
|
+
Requires-Dist: pydantic>=2.13.4
|
|
11
|
+
Requires-Dist: python-frontmatter>=1.1.0
|
|
12
|
+
Requires-Dist: typer>=0.25.1
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
|
|
15
|
+
# Helix
|
|
16
|
+
|
|
17
|
+
Global convention memory for AI coding agents — persist your coding preferences once, surface them in every Claude Code, Cursor, or MCP-compatible session.
|
|
18
|
+
|
|
19
|
+
## Install
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# With uv (recommended)
|
|
23
|
+
uv tool install helix-memory
|
|
24
|
+
|
|
25
|
+
# Or with pip
|
|
26
|
+
pip install helix-memory
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Quick start
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# 1. Hook Helix into your agent (Claude Code, Cursor, …).
|
|
33
|
+
helix install
|
|
34
|
+
|
|
35
|
+
# 2. Save your first convention.
|
|
36
|
+
helix remember pydantic-validation \
|
|
37
|
+
"Prefer Pydantic v2 for any external-boundary validation." \
|
|
38
|
+
--tags python,validation
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
From there, your next agent session will see the conventions automatically.
|
|
42
|
+
|
|
43
|
+
## CLI
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
helix remember <name> "<body>" --tags <comma,separated>
|
|
47
|
+
helix list [--tags <tag>]
|
|
48
|
+
helix recall "<query>" [--tags <tag>]
|
|
49
|
+
helix forget <name>
|
|
50
|
+
helix install # wire Helix into your agent
|
|
51
|
+
helix uninstall # remove the integration
|
|
52
|
+
helix serve # start the MCP server
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## MCP server
|
|
56
|
+
|
|
57
|
+
`helix serve` exposes four tools to any MCP-compatible client: `remember`, `recall`, `list_conventions`, `forget`.
|
|
58
|
+
|
|
59
|
+
Add to your client's MCP config (e.g. `~/.claude/claude_desktop_config.json`):
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"mcpServers": {
|
|
64
|
+
"helix": {
|
|
65
|
+
"command": "helix",
|
|
66
|
+
"args": ["serve"]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## License
|
|
73
|
+
|
|
74
|
+
MIT
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Helix
|
|
2
|
+
|
|
3
|
+
Global convention memory for AI coding agents — persist your coding preferences once, surface them in every Claude Code, Cursor, or MCP-compatible session.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# With uv (recommended)
|
|
9
|
+
uv tool install helix-memory
|
|
10
|
+
|
|
11
|
+
# Or with pip
|
|
12
|
+
pip install helix-memory
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Quick start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 1. Hook Helix into your agent (Claude Code, Cursor, …).
|
|
19
|
+
helix install
|
|
20
|
+
|
|
21
|
+
# 2. Save your first convention.
|
|
22
|
+
helix remember pydantic-validation \
|
|
23
|
+
"Prefer Pydantic v2 for any external-boundary validation." \
|
|
24
|
+
--tags python,validation
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
From there, your next agent session will see the conventions automatically.
|
|
28
|
+
|
|
29
|
+
## CLI
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
helix remember <name> "<body>" --tags <comma,separated>
|
|
33
|
+
helix list [--tags <tag>]
|
|
34
|
+
helix recall "<query>" [--tags <tag>]
|
|
35
|
+
helix forget <name>
|
|
36
|
+
helix install # wire Helix into your agent
|
|
37
|
+
helix uninstall # remove the integration
|
|
38
|
+
helix serve # start the MCP server
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## MCP server
|
|
42
|
+
|
|
43
|
+
`helix serve` exposes four tools to any MCP-compatible client: `remember`, `recall`, `list_conventions`, `forget`.
|
|
44
|
+
|
|
45
|
+
Add to your client's MCP config (e.g. `~/.claude/claude_desktop_config.json`):
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"helix": {
|
|
51
|
+
"command": "helix",
|
|
52
|
+
"args": ["serve"]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## License
|
|
59
|
+
|
|
60
|
+
MIT
|