logseq-matryca-parser 0.3.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.
- logseq_matryca_parser-0.3.0/.cursorignore +45 -0
- logseq_matryca_parser-0.3.0/.cursorrules +5 -0
- logseq_matryca_parser-0.3.0/.github/FUNDING.yml +1 -0
- logseq_matryca_parser-0.3.0/.github/ISSUE_TEMPLATE/bug_report.yml +43 -0
- logseq_matryca_parser-0.3.0/.github/ISSUE_TEMPLATE/feature_request.yml +30 -0
- logseq_matryca_parser-0.3.0/.github/PULL_REQUEST_TEMPLATE.md +17 -0
- logseq_matryca_parser-0.3.0/.github/dependabot.yml +13 -0
- logseq_matryca_parser-0.3.0/.github/workflows/ci.yml +42 -0
- logseq_matryca_parser-0.3.0/.github/workflows/pypi_publish.yml +36 -0
- logseq_matryca_parser-0.3.0/.gitignore +75 -0
- logseq_matryca_parser-0.3.0/.pre-commit-config.yaml +10 -0
- logseq_matryca_parser-0.3.0/.repomixignore +63 -0
- logseq_matryca_parser-0.3.0/CONTRIBUTING.md +122 -0
- logseq_matryca_parser-0.3.0/LICENSE +201 -0
- logseq_matryca_parser-0.3.0/Makefile +15 -0
- logseq_matryca_parser-0.3.0/NOTICE +7 -0
- logseq_matryca_parser-0.3.0/PKG-INFO +279 -0
- logseq_matryca_parser-0.3.0/README.md +243 -0
- logseq_matryca_parser-0.3.0/ROADMAP_AGENT_NATIVE_XRAY.md +55 -0
- logseq_matryca_parser-0.3.0/ROADMAP_HEADLESS_WRITER.md +50 -0
- logseq_matryca_parser-0.3.0/ROADMAP_OBSIDIAN_ADAPTER.md +68 -0
- logseq_matryca_parser-0.3.0/SECURITY.md +8 -0
- logseq_matryca_parser-0.3.0/claude-skill-logseq-read/SKILL.md +83 -0
- logseq_matryca_parser-0.3.0/claude-skill-logseq-read/scripts/parse_logseq.py +275 -0
- logseq_matryca_parser-0.3.0/docs/ARCHITECTURE.md +406 -0
- logseq_matryca_parser-0.3.0/docs/design-docs/ARCHITECTURE_BLUEPRINT.md +23 -0
- logseq_matryca_parser-0.3.0/docs/design-docs/CODE_SCAFFOLD.md +408 -0
- logseq_matryca_parser-0.3.0/docs/design-docs/LOGSEQ_ASSET_RESOLUTION_SPEC.md +303 -0
- logseq_matryca_parser-0.3.0/docs/design-docs/LOGSEQ_DATASCRIPT_MAPPING.md +283 -0
- logseq_matryca_parser-0.3.0/docs/design-docs/LOGSEQ_TEMPORAL_ONTOLOGY.md +363 -0
- logseq_matryca_parser-0.3.0/docs/design-docs/OFFICIAL_MLDOC_SPECS.md +294 -0
- logseq_matryca_parser-0.3.0/docs/design-docs/REFERENCE_SPEC.md +43 -0
- logseq_matryca_parser-0.3.0/docs/error_log.md +48 -0
- logseq_matryca_parser-0.3.0/docs/logseq_ast_primer.md +82 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_CLI_HYDRATION_AND_ENRICHMENT.md +49 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_CONTEXT_SYNTHESIS_AND_SCOPING.md +41 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_EMBED_EXPANSION_AND_FLUENT_QUERIES.md +27 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_GRAPH_RAG_SEMANTICS.md +36 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_INCREMENTAL_WATCHER.md +42 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_INLINE_SHIELD_AND_NAMESPACES.md +33 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_ROBUSTNESS_AND_SOFT_BREAKS.md +51 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_TOML_FIX_AND_PYPI_DISTRIBUTION.md +76 -0
- logseq_matryca_parser-0.3.0/docs/roadmaps/ROADMAP_UUID_AND_GRAPH_SUPERPOWERS.md +43 -0
- logseq_matryca_parser-0.3.0/examples/demo_logseq_journal.md +13 -0
- logseq_matryca_parser-0.3.0/examples/run_demo.py +53 -0
- logseq_matryca_parser-0.3.0/legacy/local_digestor.py +308 -0
- logseq_matryca_parser-0.3.0/lib/bindings/utils.js +189 -0
- logseq_matryca_parser-0.3.0/lib/tom-select/tom-select.complete.min.js +356 -0
- logseq_matryca_parser-0.3.0/lib/tom-select/tom-select.css +334 -0
- logseq_matryca_parser-0.3.0/lib/vis-9.1.2/vis-network.css +1 -0
- logseq_matryca_parser-0.3.0/lib/vis-9.1.2/vis-network.min.js +27 -0
- logseq_matryca_parser-0.3.0/pyproject.toml +69 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/.gitignore +0 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/NOTICE +7 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/__init__.py +61 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/__main__.py +8 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/agent_press.py +99 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/agent_writer.py +250 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/exceptions.py +13 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/forge.py +399 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/graph.py +493 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/kinetic.py +531 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/lens.py +427 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/logos_core.py +171 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/logos_parser.py +1047 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/pyproject.toml +0 -0
- logseq_matryca_parser-0.3.0/src/logseq_matryca_parser/synapse.py +329 -0
- logseq_matryca_parser-0.3.0/tests/test_agent_press.py +117 -0
- logseq_matryca_parser-0.3.0/tests/test_agent_writer.py +95 -0
- logseq_matryca_parser-0.3.0/tests/test_forge.py +93 -0
- logseq_matryca_parser-0.3.0/tests/test_graph.py +319 -0
- logseq_matryca_parser-0.3.0/tests/test_kinetic.py +376 -0
- logseq_matryca_parser-0.3.0/tests/test_lens.py +80 -0
- logseq_matryca_parser-0.3.0/tests/test_logos_parser.py +997 -0
- logseq_matryca_parser-0.3.0/tests/test_package_version.py +14 -0
- logseq_matryca_parser-0.3.0/tests/test_synapse.py +200 -0
- logseq_matryca_parser-0.3.0/uv.lock +2557 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# .cursorignore
|
|
2
|
+
# (Nota: Cursor ignora già automaticamente tutto ciò che è nel .gitignore)
|
|
3
|
+
|
|
4
|
+
# =========================
|
|
5
|
+
# Lockfiles (Letali per il Codebase Indexing)
|
|
6
|
+
# =========================
|
|
7
|
+
# I lockfile devono stare su Git, ma l'IA non deve MAI leggerli,
|
|
8
|
+
# sono solo un muro di versioni incomprensibili.
|
|
9
|
+
poetry.lock
|
|
10
|
+
uv.lock
|
|
11
|
+
package-lock.json
|
|
12
|
+
yarn.lock
|
|
13
|
+
pnpm-lock.yaml
|
|
14
|
+
|
|
15
|
+
# =========================
|
|
16
|
+
# Output AI e Report (Evitare loop di contesto)
|
|
17
|
+
# =========================
|
|
18
|
+
# Se committi per sbaglio un output, non vogliamo che Cursor lo studi.
|
|
19
|
+
repomix-output.*
|
|
20
|
+
output_langchain/
|
|
21
|
+
mappa_cervello.html
|
|
22
|
+
|
|
23
|
+
# =========================
|
|
24
|
+
# Dati di Test e Fixtures Mock
|
|
25
|
+
# =========================
|
|
26
|
+
# Se hai dei file Markdown o JSON enormi che usi solo per testare il parser,
|
|
27
|
+
# a Git servono, ma all'IA confondono solo le idee.
|
|
28
|
+
tests/fixtures/*.json
|
|
29
|
+
tests/fixtures/*.edn
|
|
30
|
+
tests/fixtures/*.md
|
|
31
|
+
*.csv
|
|
32
|
+
|
|
33
|
+
# =========================
|
|
34
|
+
# Assets Vettoriali
|
|
35
|
+
# =========================
|
|
36
|
+
# Le immagini PNG/JPG Cursor le ignora da solo, ma gli SVG sono file di testo!
|
|
37
|
+
# Se l'IA legge un SVG, legge migliaia di coordinate matematiche inutili.
|
|
38
|
+
*.svg
|
|
39
|
+
|
|
40
|
+
# =========================
|
|
41
|
+
# File di Configurazione Editor
|
|
42
|
+
# =========================
|
|
43
|
+
.vscode/
|
|
44
|
+
.idea/
|
|
45
|
+
.clinerules
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# General Engineering Rules
|
|
2
|
+
- Always use absolute imports from `logseq_matryca_parser`.
|
|
3
|
+
- Every new function must have a Python type hint.
|
|
4
|
+
- Use `logger.debug` for tracing the Stack-Machine state.
|
|
5
|
+
- Before considering a task finished, run `make lint` via terminal.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
github: [MarcoPorcellato]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: 🐛 Bug Report
|
|
2
|
+
description: Create a report to help us fix parsing errors or visualizer bugs.
|
|
3
|
+
title: "[BUG] "
|
|
4
|
+
labels: ["bug", "triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for taking the time to report a bug in the Logseq Matryca Parser!
|
|
10
|
+
Please fill out this form as completely as possible to help us reproduce and fix the issue.
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: description
|
|
13
|
+
attributes:
|
|
14
|
+
label: Bug Description
|
|
15
|
+
description: A clear and concise description of what the bug is.
|
|
16
|
+
placeholder: When I parse a page with this specific property, the AST breaks...
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: reproduction
|
|
21
|
+
attributes:
|
|
22
|
+
label: Steps to Reproduce
|
|
23
|
+
description: How can we trigger this bug? Please include a minimal snippet of Logseq Markdown if possible.
|
|
24
|
+
placeholder: |
|
|
25
|
+
1. Run `matryca-parse visualize /my-graph`
|
|
26
|
+
2. Wait for the parsing phase
|
|
27
|
+
3. See error...
|
|
28
|
+
validations:
|
|
29
|
+
required: true
|
|
30
|
+
- type: textarea
|
|
31
|
+
id: expected
|
|
32
|
+
attributes:
|
|
33
|
+
label: Expected Behavior
|
|
34
|
+
description: What did you expect to happen?
|
|
35
|
+
validations:
|
|
36
|
+
required: true
|
|
37
|
+
- type: input
|
|
38
|
+
id: version
|
|
39
|
+
attributes:
|
|
40
|
+
label: Environment & Version
|
|
41
|
+
description: What version of Matryca Parser and Python are you using? (e.g., Parser v0.1.0, Python 3.12, Windows 11)
|
|
42
|
+
validations:
|
|
43
|
+
required: true
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: 💡 Feature Request
|
|
2
|
+
description: Suggest an idea, a new exporter, or an AI feature for the Logos Protocol.
|
|
3
|
+
title: "[FEATURE] "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Have an idea to make the Logseq Matryca Parser even better? We'd love to hear it!
|
|
10
|
+
- type: textarea
|
|
11
|
+
id: problem
|
|
12
|
+
attributes:
|
|
13
|
+
label: Is your feature request related to a problem?
|
|
14
|
+
description: A clear and concise description of what the problem is.
|
|
15
|
+
placeholder: "I'm always frustrated when..."
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: solution
|
|
20
|
+
attributes:
|
|
21
|
+
label: Proposed Solution
|
|
22
|
+
description: Describe the solution or new feature you'd like to see.
|
|
23
|
+
placeholder: "It would be great if the parser could export to..."
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: textarea
|
|
27
|
+
id: context
|
|
28
|
+
attributes:
|
|
29
|
+
label: Additional Context
|
|
30
|
+
description: Add any other context, links to AI frameworks, or screenshots about the feature request here.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Description
|
|
2
|
+
Fixes # (issue_number)
|
|
3
|
+
|
|
4
|
+
## Type of change
|
|
5
|
+
- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
|
|
6
|
+
- [ ] ✨ New feature (non-breaking change which adds functionality)
|
|
7
|
+
- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
|
8
|
+
- [ ] 📚 Documentation update
|
|
9
|
+
|
|
10
|
+
## 🛡️ Sovereign Developer Checklist
|
|
11
|
+
- [ ] I have read the `CONTRIBUTING.md` guidelines.
|
|
12
|
+
- [ ] I have executed `make all` locally, and all linters (Ruff), type-checkers (Mypy), and tests (Pytest) pass successfully.
|
|
13
|
+
- [ ] I have added/updated tests for my changes (if applicable).
|
|
14
|
+
- [ ] I have updated the documentation accordingly.
|
|
15
|
+
- [ ] My code follows the strict typing rules (`strict=True`) of this project.
|
|
16
|
+
|
|
17
|
+
## Screenshots / CLI Output (if applicable)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# Mantiene aggiornate le dipendenze Python (legge il pyproject.toml)
|
|
4
|
+
- package-ecosystem: "pip"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
|
|
9
|
+
# Mantiene aggiornate le GitHub Actions (legge il tuo .github/workflows/ci.yml)
|
|
10
|
+
- package-ecosystem: "github-actions"
|
|
11
|
+
directory: "/"
|
|
12
|
+
schedule:
|
|
13
|
+
interval: "weekly"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Logos Protocol CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main" ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ "main" ]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout Code
|
|
18
|
+
uses: actions/checkout@v6
|
|
19
|
+
|
|
20
|
+
- name: Set up Python 3.12
|
|
21
|
+
uses: actions/setup-python@v6
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
cache: 'pip'
|
|
25
|
+
|
|
26
|
+
- name: Install Dependencies
|
|
27
|
+
run: |
|
|
28
|
+
python -m pip install --upgrade pip
|
|
29
|
+
pip install -e ".[all]"
|
|
30
|
+
pip install pytest pytest-cov ruff mypy
|
|
31
|
+
|
|
32
|
+
- name: Lint with Ruff
|
|
33
|
+
run: |
|
|
34
|
+
ruff check .
|
|
35
|
+
|
|
36
|
+
- name: Type Checking with Mypy
|
|
37
|
+
run: |
|
|
38
|
+
mypy src/ tests/ examples/
|
|
39
|
+
|
|
40
|
+
- name: Run Pytest
|
|
41
|
+
run: |
|
|
42
|
+
pytest -v
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
publish:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
environment:
|
|
16
|
+
name: pypi
|
|
17
|
+
url: https://pypi.org/p/logseq-matryca-parser
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout
|
|
20
|
+
uses: actions/checkout@v6
|
|
21
|
+
|
|
22
|
+
- name: Set up Python
|
|
23
|
+
uses: actions/setup-python@v6
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.12"
|
|
26
|
+
|
|
27
|
+
- name: Install build
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --upgrade pip
|
|
30
|
+
pip install build
|
|
31
|
+
|
|
32
|
+
- name: Build sdist and wheel
|
|
33
|
+
run: python -m build
|
|
34
|
+
|
|
35
|
+
- name: Publish to PyPI
|
|
36
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# =========================
|
|
2
|
+
# OS / System
|
|
3
|
+
# =========================
|
|
4
|
+
**/.DS_Store
|
|
5
|
+
**/.AppleDouble
|
|
6
|
+
**/.LSOverride
|
|
7
|
+
Thumbs.db
|
|
8
|
+
desktop.ini
|
|
9
|
+
|
|
10
|
+
# =========================
|
|
11
|
+
# Python / Bytecode
|
|
12
|
+
# =========================
|
|
13
|
+
__pycache__/
|
|
14
|
+
*.py[cod]
|
|
15
|
+
*$py.class
|
|
16
|
+
*.so
|
|
17
|
+
|
|
18
|
+
# =========================
|
|
19
|
+
# Virtual Environments & Secrets
|
|
20
|
+
# =========================
|
|
21
|
+
.venv/
|
|
22
|
+
venv/
|
|
23
|
+
env/
|
|
24
|
+
.env
|
|
25
|
+
.env.*
|
|
26
|
+
!.env.example
|
|
27
|
+
|
|
28
|
+
# =========================
|
|
29
|
+
# Build & Distribution
|
|
30
|
+
# =========================
|
|
31
|
+
dist/
|
|
32
|
+
build/
|
|
33
|
+
*.egg-info/
|
|
34
|
+
*.egg
|
|
35
|
+
MANIFEST
|
|
36
|
+
|
|
37
|
+
# =========================
|
|
38
|
+
# Testing & Coverage
|
|
39
|
+
# =========================
|
|
40
|
+
.pytest_cache/
|
|
41
|
+
.coverage
|
|
42
|
+
coverage.xml
|
|
43
|
+
htmlcov/
|
|
44
|
+
tests/fixtures/*.json
|
|
45
|
+
repomix-output.*
|
|
46
|
+
|
|
47
|
+
# =========================
|
|
48
|
+
# Logs & Databases (Security/Privacy)
|
|
49
|
+
# =========================
|
|
50
|
+
*.log
|
|
51
|
+
*.sqlite
|
|
52
|
+
*.sqlite3
|
|
53
|
+
*.db
|
|
54
|
+
|
|
55
|
+
# =========================
|
|
56
|
+
# Notebooks & Data
|
|
57
|
+
# =========================
|
|
58
|
+
.ipynb_checkpoints/
|
|
59
|
+
output_langchain/
|
|
60
|
+
mappa_cervello.html
|
|
61
|
+
docs/index.html
|
|
62
|
+
out/graph.json
|
|
63
|
+
out/graph.md
|
|
64
|
+
|
|
65
|
+
# =========================
|
|
66
|
+
# IDEs & Tool Caches
|
|
67
|
+
# =========================
|
|
68
|
+
.mypy_cache/
|
|
69
|
+
.ruff_cache/
|
|
70
|
+
.vscode/
|
|
71
|
+
.idea/
|
|
72
|
+
.rooignore
|
|
73
|
+
.clinerules
|
|
74
|
+
.cursor/rules/
|
|
75
|
+
.cursor/
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# .repomixignore
|
|
2
|
+
|
|
3
|
+
# =========================
|
|
4
|
+
# Repomix Outputs & AI Generated
|
|
5
|
+
# =========================
|
|
6
|
+
repomix-output.*
|
|
7
|
+
output_langchain/
|
|
8
|
+
mappa_cervello.html
|
|
9
|
+
|
|
10
|
+
# =========================
|
|
11
|
+
# Documentation (Token Optimization)
|
|
12
|
+
# =========================
|
|
13
|
+
docs/
|
|
14
|
+
*.md
|
|
15
|
+
!README.md
|
|
16
|
+
!CHANGELOG.md
|
|
17
|
+
!ARCHITECTURE.md
|
|
18
|
+
|
|
19
|
+
# =========================
|
|
20
|
+
# Third-Party Libraries & Frontend Assets (Massive Token Killers)
|
|
21
|
+
# =========================
|
|
22
|
+
lib/
|
|
23
|
+
*.js
|
|
24
|
+
*.css
|
|
25
|
+
*.min.js
|
|
26
|
+
|
|
27
|
+
# =========================
|
|
28
|
+
# Legacy & Deprecated Code
|
|
29
|
+
# =========================
|
|
30
|
+
legacy/
|
|
31
|
+
|
|
32
|
+
# =========================
|
|
33
|
+
# Locks & Dependencies
|
|
34
|
+
# =========================
|
|
35
|
+
poetry.lock
|
|
36
|
+
uv.lock
|
|
37
|
+
package-lock.json
|
|
38
|
+
yarn.lock
|
|
39
|
+
pnpm-lock.yaml
|
|
40
|
+
|
|
41
|
+
# =========================
|
|
42
|
+
# OS / System / Python Caches
|
|
43
|
+
# =========================
|
|
44
|
+
**/.DS_Store
|
|
45
|
+
Thumbs.db
|
|
46
|
+
__pycache__/
|
|
47
|
+
*.py[cod]
|
|
48
|
+
.pytest_cache/
|
|
49
|
+
.mypy_cache/
|
|
50
|
+
.ruff_cache/
|
|
51
|
+
.venv/
|
|
52
|
+
venv/
|
|
53
|
+
|
|
54
|
+
# =========================
|
|
55
|
+
# Token Killers (Logs, DBs, Vector Graphics)
|
|
56
|
+
# =========================
|
|
57
|
+
*.log
|
|
58
|
+
*.sqlite
|
|
59
|
+
*.sqlite3
|
|
60
|
+
*.db
|
|
61
|
+
*.csv
|
|
62
|
+
*.svg
|
|
63
|
+
tests/fixtures/*.json
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# 🔱 Contributing to the Logos Protocol
|
|
2
|
+
|
|
3
|
+
First off, thank you for considering contributing to the **Logseq Matryca Parser (Logos Protocol)**!
|
|
4
|
+
|
|
5
|
+
This repository is the foundational AST engine for [Matryca.ai](https://matryca.ai), designed to preserve the spatial hierarchy of thought in Logseq graphs. We value deterministic logic, strict typing, and high performance.
|
|
6
|
+
|
|
7
|
+
To maintain the architectural integrity of the project, please follow the guidelines below.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🏛️ Architectural Philosophy
|
|
12
|
+
|
|
13
|
+
Before writing any code, please understand our core principles:
|
|
14
|
+
|
|
15
|
+
1. **The Graph is Sacred:** Logos does not guess or chunk text arbitrarily. It reconstructs the exact hierarchical tree based on spatial indentation.
|
|
16
|
+
2. **Deterministic Output:** Given the same `.md` file, the parser must *always* produce the exact same AST and identical UUIDs.
|
|
17
|
+
3. **No Bloat:** We strictly limit external dependencies to maximize compatibility with AOT compilers (like Nuitka) and ensure blazing-fast execution.
|
|
18
|
+
|
|
19
|
+
> **Note:** The `logos_core.py` module is the beating heart of the protocol. If your PR proposes changes to the Pydantic V2 models within it, please open an **Issue** for discussion first.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 🛠️ Development Setup
|
|
24
|
+
|
|
25
|
+
To set up your local environment:
|
|
26
|
+
|
|
27
|
+
1. **Fork and Clone:**
|
|
28
|
+
```bash
|
|
29
|
+
git clone https://github.com/YOUR-USERNAME/logseq-matryca-parser.git
|
|
30
|
+
cd logseq-matryca-parser
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2. **Create an Isolated Environment:**
|
|
34
|
+
```bash
|
|
35
|
+
python3 -m venv .venv
|
|
36
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
3. **Install the Project in Editable Mode:**
|
|
40
|
+
*(Includes development dependencies)*
|
|
41
|
+
```bash
|
|
42
|
+
pip install -e .
|
|
43
|
+
pip install pytest mypy ruff
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 🚦 The Contribution Workflow
|
|
49
|
+
|
|
50
|
+
### 1. Find or Create an Issue
|
|
51
|
+
|
|
52
|
+
Whether it's a bug fix or a new feature (like a new exporter in `forge.py`), check the **Issues** tab first. If it's a new idea, open an Issue to discuss it with the maintainers before investing hours of work.
|
|
53
|
+
|
|
54
|
+
### 2. Branch Naming Convention
|
|
55
|
+
|
|
56
|
+
Create a branch from `main` using the following naming format:
|
|
57
|
+
|
|
58
|
+
- `feat/your-feature-name` (for new features)
|
|
59
|
+
- `bugfix/issue-number-description` (for bug fixes)
|
|
60
|
+
- `docs/update-readme` (for documentation)
|
|
61
|
+
|
|
62
|
+
**Example:**
|
|
63
|
+
```bash
|
|
64
|
+
git checkout -b feat/add-html-exporter
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 3. Write Code & Tests
|
|
68
|
+
|
|
69
|
+
- If you fix a bug, write a unit test in `tests/` that fails without your patch and passes with it.
|
|
70
|
+
- If you add a feature, ensure it is covered by a comprehensive test.
|
|
71
|
+
|
|
72
|
+
### 4. Code Quality & Linting (Mandatory)
|
|
73
|
+
|
|
74
|
+
We run a strict CI pipeline. Before committing, you must ensure your code passes static analysis and tests.
|
|
75
|
+
|
|
76
|
+
We provide a `Makefile` to simplify running these commands. You can execute them individually or all at once:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Run all checks (linting, static typing, and tests)
|
|
80
|
+
make all
|
|
81
|
+
|
|
82
|
+
# Or run them individually:
|
|
83
|
+
make lint # Check formatting and linting with Ruff
|
|
84
|
+
make check # Check static typing with Mypy
|
|
85
|
+
make test # Run unit tests with Pytest
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Alternatively, you can run the commands directly:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Check formatting and linting
|
|
92
|
+
ruff check .
|
|
93
|
+
|
|
94
|
+
# Check static typing
|
|
95
|
+
mypy src/ tests/ examples/
|
|
96
|
+
|
|
97
|
+
# Run tests
|
|
98
|
+
pytest
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 5. Commit Standards
|
|
102
|
+
|
|
103
|
+
We follow [Conventional Commits](https://www.conventionalcommits.org/). Your commit messages should be structured like this:
|
|
104
|
+
|
|
105
|
+
- `feat(forge): add XML export functionality`
|
|
106
|
+
- `fix(parser): resolve stack overflow on deep indentation`
|
|
107
|
+
- `docs: update setup instructions`
|
|
108
|
+
|
|
109
|
+
### 6. Submit a Pull Request (PR)
|
|
110
|
+
|
|
111
|
+
- Push your branch and open a PR against the `main` branch.
|
|
112
|
+
- Describe why the change is needed.
|
|
113
|
+
- Link the relevant Issue (e.g., `Fixes #123`).
|
|
114
|
+
- Ensure all GitHub Actions (CI) checks pass.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 🤝 Code of Conduct
|
|
119
|
+
|
|
120
|
+
We expect all contributors to maintain a professional, respectful, and constructive tone. We are building the future of sovereign knowledge management together.
|
|
121
|
+
|
|
122
|
+
> *By contributing to this project, you agree that your contributions will be licensed under its Apache 2.0 License.*
|